Discover/Collegedunia API
live

Collegedunia APIcollegedunia.com

Fetch paginated student reviews, ratings, and filters for universities worldwide from Collegedunia via a single structured API endpoint.

This API takes change requests — .
Endpoints
1
Updated
1mo ago

What is the Collegedunia API?

The Collegedunia University Reviews API exposes one endpoint — get_university_reviews — that returns up to 9 response fields per call, including paginated student reviews, category-level rating averages, pros/cons content, and available filter options for stream and degree type. It covers universities listed on Collegedunia's Study Abroad section, addressable by country-prefixed slug.

Try it
Page number for paginated results.
Filter reviews by stream/subject ID. Available stream IDs are returned in the filters field of the response (e.g. '339' for Computer Science, '4' for Arts).
Filter reviews by degree type. Available values are returned in the filters field of the response (e.g. 'Bachelor', 'Master').
University path slug in format '<country>/university/<id>-<name-slug>'. Examples: 'uk/university/865-university-of-oxford-oxford', 'usa/university/1020-northeastern-university-boston'. The slug can be found from the Collegedunia university page URL.
api.parse.bot/scraper/7ca1b1a0-2fab-41be-8fc8-28b5b9650068/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/7ca1b1a0-2fab-41be-8fc8-28b5b9650068/get_university_reviews' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace collegedunia-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
Collegedunia University Reviews API Client

Fetch and analyze student reviews for universities on Collegedunia.
Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional, Any, Dict
from urllib.parse import urljoin


class ParseClient:
    """Client for interacting with the Collegedunia University Reviews API."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the ParseClient.

        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "7ca1b1a0-2fab-41be-8fc8-28b5b9650068"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError(
                "API key not provided. Set PARSE_API_KEY environment variable or pass it as argument."
            )

    def _call(
        self, endpoint: str, method: str = "POST", **params
    ) -> Dict[str, Any]:
        """
        Make a request to the Parse API.

        Args:
            endpoint: API endpoint name
            method: HTTP method (GET or POST)
            **params: Query/body parameters

        Returns:
            Response data as dictionary

        Raises:
            requests.exceptions.RequestException: If request fails
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json",
        }

        try:
            if method == "GET":
                response = requests.get(url, headers=headers, params=params)
            elif method == "POST":
                response = requests.post(url, headers=headers, json=params)
            else:
                raise ValueError(f"Unsupported HTTP method: {method}")

            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            raise Exception(f"API request failed: {str(e)}")

    def get_university_reviews(
        self,
        university_slug: str,
        page: int = 1,
        stream_id: Optional[str] = None,
        degree_type: Optional[str] = None,
    ) -> Dict[str, Any]:
        """
        Get student reviews for a university on Collegedunia.

        Args:
            university_slug: University path slug (e.g., 'uk/university/865-university-of-oxford-oxford')
            page: Page number for paginated results (default: 1)
            stream_id: Filter by stream/subject ID (e.g., '339' for Computer Science)
            degree_type: Filter by degree type (e.g., 'Bachelor', 'Master')

        Returns:
            Dictionary containing reviews, stats, filters, and pagination info
        """
        params = {
            "university_slug": university_slug,
            "page": page,
        }

        if stream_id is not None:
            params["stream_id"] = stream_id

        if degree_type is not None:
            params["degree_type"] = degree_type

        return self._call("get_university_reviews", method="GET", **params)


def display_review(review: Dict[str, Any]) -> None:
    """Display a single review in a readable format."""
    print(f"\n{'='*70}")
    print(f"📝 {review.get('title', 'No title')}")
    print(f"👤 {review.get('name', 'Anonymous')}")
    print(f"📚 {review.get('course', 'N/A')}")
    print(f"📅 Enrollment: {review.get('enrollment', 'N/A')}")
    print(f"👍 {review.get('likes', 0)} likes | 👎 {review.get('dislikes', 0)} dislikes")

    if review.get("positive_points"):
        print("\n✅ Positive Points:")
        for point in review["positive_points"]:
            print(f"   • {point}")

    if review.get("negative_points"):
        print("\n❌ Negative Points:")
        for point in review["negative_points"]:
            print(f"   • {point}")


def display_review_stats(stats: Dict[str, Any]) -> None:
    """Display review statistics in a readable format."""
    print(f"\n{'='*70}")
    print("📊 REVIEW STATISTICS")
    print(f"{'='*70}")
    print(f"Total Reviews: {stats.get('total_reviews', 0)}")
    print(f"Average Rating: {stats.get('average_rating', 0):.2f}/10")

    rating = stats.get("rating", {})
    if rating:
        print("\nCategory Ratings:")
        print(f"  📚 Academic: {rating.get('avg_academic', 0):.2f}/10")
        print(f"  👨‍🏫 Faculty: {rating.get('avg_faculty', 0):.2f}/10")
        print(f"  🏗️  Infrastructure: {rating.get('avg_infrastructure', 0):.2f}/10")
        print(f"  🏠 Accommodation: {rating.get('avg_accomodation', 0):.2f}/10")
        print(f"  💼 Placement: {rating.get('avg_placement', 0):.2f}/10")
        print(f"  🎭 Extracurricular: {rating.get('avg_extracurricular', 0):.2f}/10")


if __name__ == "__main__":
    # Initialize the client
    client = ParseClient()

    # Practical workflow: Fetch and analyze reviews for University of Oxford
    print("🎓 Collegedunia University Reviews Analysis")
    print("=" * 70)

    university_slug = "uk/university/865-university-of-oxford-oxford"
    print(f"\nFetching reviews for: {university_slug}")

    try:
        # Fetch first page of reviews
        response = client.get_university_reviews(university_slug, page=1)

        # Display university info
        print(f"\n✨ {response.get('university', 'University')}")
        total_reviews = response.get("total_reviews", 0)
        print(f"Total Reviews Available: {total_reviews}")

        # Display review statistics
        if "review_stats" in response:
            display_review_stats(response["review_stats"])

        # Display available filters
        filters = response.get("filters", {})
        if filters:
            print(f"\n🔍 Available Filters:")
            for filter_name, filter_data in filters.items():
                print(f"  • {filter_name}: {filter_data}")

        # Display pagination info
        pagination = response.get("pagination", {})
        current_page = pagination.get("current", 1)
        last_page = pagination.get("last", 1)
        print(f"\n📄 Pagination: Page {current_page} of {last_page}")

        # Display reviews from the first page
        reviews = response.get("reviews", [])
        print(f"\n📋 Displaying {len(reviews)} reviews from page {current_page}:")

        for idx, review in enumerate(reviews[:3], 1):  # Show first 3 reviews
            display_review(review)
            print()

        if len(reviews) > 3:
            print(f"\n... and {len(reviews) - 3} more reviews on this page")

        # Demonstrate multi-page fetching
        if last_page > 1:
            print(f"\n{'='*70}")
            print("📚 Fetching additional pages...")
            print(f"{'='*70}")

            for page_num in range(2, min(last_page + 1, 4)):  # Fetch up to 3 pages
                page_response = client.get_university_reviews(university_slug, page=page_num)
                page_reviews = page_response.get("reviews", [])
                print(f"\nPage {page_num}: Found {len(page_reviews)} reviews")

                if page_reviews:
                    first_review = page_reviews[0]
                    print(f"  Sample: {first_review.get('title', 'No title')} by {first_review.get('name', 'Anonymous')}")

        print(f"\n{'='*70}")
        print("✅ Analysis complete!")

    except Exception as e:
        print(f"❌ Error: {str(e)}")
All endpoints · 1 totalmissing one? ·

Get student reviews for a university on Collegedunia. Returns paginated reviews with ratings, pros/cons, content, and available filters. The university_slug follows the site's URL pattern including country prefix.

Input
ParamTypeDescription
pageintegerPage number for paginated results.
stream_idstringFilter reviews by stream/subject ID. Available stream IDs are returned in the filters field of the response (e.g. '339' for Computer Science, '4' for Arts).
degree_typestringFilter reviews by degree type. Available values are returned in the filters field of the response (e.g. 'Bachelor', 'Master').
university_slugrequiredstringUniversity path slug in format '<country>/university/<id>-<name-slug>'. Examples: 'uk/university/865-university-of-oxford-oxford', 'usa/university/1020-northeastern-university-boston'. The slug can be found from the Collegedunia university page URL.
Response
{
  "type": "object",
  "fields": {
    "filters": "object with available filter options and counts",
    "reviews": "array of review objects",
    "pagination": "object with current and last page numbers",
    "university": "string",
    "current_page": "integer",
    "review_stats": "object with average ratings across categories",
    "total_reviews": "integer"
  },
  "sample": {
    "filters": {},
    "reviews": [
      {
        "id": 23347,
        "url": "uk/reviews/23347-student-review-on-university-of-oxford",
        "name": "Student (Anonymous)",
        "likes": "0",
        "title": "My M.Phil Experience",
        "course": "M.Phil Development Studies",
        "content": [
          {
            "title": "",
            "content": "<ul>...</ul>"
          }
        ],
        "dislikes": "0",
        "course_url": "uk/university/865-university-of-oxford-oxford/programs?course_id=215658",
        "created_at": "2025-12-08",
        "enrollment": "2025",
        "college_name": "University of Oxford",
        "country_name": "United Kingdom",
        "review_images": {},
        "negative_points": [
          "Only thing I wish could be better..."
        ],
        "positive_points": [
          "High standards of rigor in research"
        ]
      }
    ],
    "pagination": {
      "last": 2,
      "current": 1
    },
    "university": "University of Oxford",
    "current_page": 1,
    "review_stats": {
      "rating": {
        "avg_faculty": 9.45,
        "avg_academic": 9.55,
        "avg_placement": 8.36,
        "avg_accomodation": 9,
        "avg_infrastructure": 9.27,
        "avg_extracurricular": 8
      },
      "total_reviews": 11,
      "total_student": 11,
      "average_rating": 8.33
    },
    "total_reviews": 11
  }
}

About the Collegedunia API

What the Endpoint Returns

The get_university_reviews endpoint accepts a required university_slug in the format <country>/university/<id>-<name-slug> — for example, uk/university/865-university-of-oxford-oxford. It returns a reviews array of individual student review objects containing written feedback, pros/cons fields, and per-review ratings. The review_stats object aggregates average scores across rating categories for the university. total_reviews and pagination (with current_page and last_page) let you walk through all available reviews.

Filtering Reviews

Two optional parameters narrow results: stream_id filters by academic subject area, and degree_type filters by level of study (e.g., Bachelor's, Master's). Both accept values that are themselves returned in the filters response field — which includes available filter options alongside review counts — so a standard workflow is to call the endpoint once without filters to retrieve valid filter values, then re-call with the desired parameters.

Coverage and Pagination

The university field in the response confirms which institution the results belong to. Pagination is integer-based via the page parameter. The filters object documents which streams and degree types actually have reviews for a given university, preventing empty result sets from bad filter combinations. Coverage spans universities listed on Collegedunia's international study-abroad section, identified by country prefix in the slug.

Reliability & maintenance

The Collegedunia API is a managed, monitored endpoint for collegedunia.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when collegedunia.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official collegedunia.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate student sentiment scores from review_stats across multiple universities for a comparison tool
  • Build a subject-specific reputation index by filtering reviews with stream_id and averaging ratings
  • Extract pros/cons text from reviews to train or fine-tune a sentiment classification model
  • Power a university shortlisting feature by combining total_reviews, review_stats, and degree_type filters
  • Monitor how review counts and average ratings change over time by periodically calling get_university_reviews
  • Populate a study-abroad guide with real student feedback organized by degree level using the degree_type filter
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Collegedunia offer an official public developer API?+
Collegedunia does not publish a documented public developer API. Access to structured review data is not available through any official API offering.
How do I know which `stream_id` and `degree_type` values are valid for a university?+
Call get_university_reviews for the target university without any filter parameters. The filters field in the response lists all valid stream IDs and degree type values along with the review count for each, so you can build filter selections dynamically without guessing.
Does the API return reviewer profile data such as usernames, graduation year, or country of origin?+
The reviews array contains review content, ratings, and pros/cons text. Detailed reviewer profile fields such as graduation year or country of origin are not currently part of the response. You can fork the API on Parse and revise it to surface additional per-reviewer fields if they are available on the source page.
Can I fetch reviews for universities outside the UK?+
Yes. The university_slug parameter is country-prefixed, so universities in other countries are accessible by using their corresponding country code in the slug (e.g., us/university/... or au/university/...). Coverage depends on which institutions are listed on Collegedunia's Study Abroad section.
Does the API expose university-level metadata like ranking, tuition fees, or acceptance rates?+
The current endpoint focuses on reviews: review_stats, reviews, total_reviews, filters, and pagination. University-level metadata such as rankings, tuition fees, or acceptance rates are not returned. You can fork the API on Parse and revise it to add an endpoint targeting those data fields.
Page content last updated . Spec covers 1 endpoint from collegedunia.com.
Related APIs in EducationSee all →
arxiv.org API
Search and discover academic research papers on arXiv using keywords, authors, titles, categories, and dates, then access detailed metadata for any paper. Browse the complete arXiv category taxonomy to explore research across different scientific disciplines.
zenodo.org API
Search and retrieve research records, files, versions, and community data from Zenodo's open science repository. Access detailed information about academic publications, datasets, and research outputs, including file listings, version history, and community collections all in one place.
openalex.org API
Search and retrieve millions of academic papers, articles, and books from OpenAlex's comprehensive global research catalog to find scholarly works by topic, author, or citation. Discover detailed information about research publications including metadata, abstracts, and citation counts to stay current with academic literature in your field.
ieeexplore.ieee.org API
Search for scientific papers and retrieve their metadata, abstracts, references, and citations from IEEE Xplore's collection of journals and conferences. Look up author profiles, browse journals, and access paper details and full text sections all programmatically.
dictionary.cambridge.org API
Look up word definitions, pronunciations, translations, synonyms, and example sentences from Cambridge Dictionary. Search and browse thousands of words, get daily word recommendations, and access specialized business or American English dictionaries.
niche.com API
Search and retrieve data on K-12 schools and colleges from Niche.com, including rankings, report card grades, stats, and user reviews.
wellcomecollection.org API
Access data from wellcomecollection.org.
libgen.gl API
Search for books and retrieve detailed metadata including file information, edition details, and bibliographic data from Library Genesis. Access comprehensive book information like download links, file formats, and publication details all in one place.