# Class Central Scraper (`crawlerbros/class-central-scraper`) Actor

Scrape Class Central's course meta-search index - search or browse courses from Coursera, edX, Udemy, YouTube and 100+ providers. Get ratings, reviews, level, language, pricing, syllabus, and provider detail. No login required.

- **URL**: https://apify.com/crawlerbros/class-central-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Class Central Scraper

Scrape **Class Central** — the course meta-search engine that indexes courses from Coursera, edX, Udemy, YouTube, Google, IBM, and 100+ other providers, with independent ratings and reviews. Search by keyword, browse by subject or provider, pull curated "Best of All Time" lists, or fetch full course detail (rating, reviews, syllabus, effort, pricing). HTTP-only, no login, no proxy required.

### What this actor does

- **Six modes:** `search`, `bySubject`, `byProvider`, `byUniversity`, `collection`, `courseDetail`
- **92 curated subjects** (Computer Science, Data Science, Business, Health, Humanities, and more), **104 providers** (Coursera, Udemy, YouTube, Google Skills, Microsoft Learn, MIT OpenCourseWare, ...), and **~100 universities/institutions** (Stanford, MIT, Oxford, Harvard, ...) as ready-to-pick dropdowns
- **Filters:** level (beginner/intermediate/advanced), language (62 languages), duration/effort bucket, free-only, certificate-only, career-certificate-only, university-only, minimum rating, minimum number of ratings, and sort order
- **Course detail mode** returns rating, review count, a sample of real user reviews, syllabus topic outline, effort/duration, session type, pricing, and institution (when university-affiliated)
- **Empty fields are omitted** — you won't see `null`, `""`, or `[]` anywhere in the output

### Output: course listing (mode = `search` / `bySubject` / `byProvider` / `byUniversity` / `collection`)

- `courseId`, `title`, `slug`
- `courseUrl` — canonical Class Central course page
- `imageUrl` — course thumbnail
- `description` — one-line course teaser
- `format` — `course`, `credential` (nanodegree/professional certificate), `specialization`, etc.
- `level` — `beginner` / `intermediate` / `advanced`
- `language` — course language
- `provider`, `providerUrl` — the platform hosting the course (Coursera, Udemy, ...)
- `institution` — university/partner name, when the course is university-affiliated
- `subject` — Class Central's subject tag for this course
- `rating` (0–5), `numRatings`
- `isFree`, `hasCertificate`, `isUniversityCourse`
- `sessionType` — `Self-Paced` or a specific session/date window
- `pricingLabel` — e.g. `Free Online Course`, `Paid Course`
- `effort` — e.g. `109 hours`, when Class Central shows a workload estimate
- `rank` — 1-based position in this run's result order
- `sourceMode` — which mode produced this record (`search` / `bySubject` / `byProvider` / `byUniversity` / `collection`)
- `recordType: "courseListing"`, `scrapedAt`

### Output: course detail (mode = `courseDetail`)

- `courseId`, `slug`
- `title`, `courseUrl`, `imageUrl`, `description`
- `provider`, `providerType` (e.g. `Nanodegree`), `currency`, `price` (when a listed price exists)
- `institution`, `institutionUrl` — university/academic partner and its Class Central page, when the course is university-affiliated (e.g. Coursera courses run by University of Michigan)
- `pricingLabel`, `languages`, `certificateLabel`, `certificateAvailable`
- `effort` — e.g. `109 hours`
- `sessionType` — `Self-Paced` or session dates
- `level`
- `rating` (0–5), `numRatings`
- `subjectTags` — subject/topic breadcrumb leaves for this course
- `syllabus` — ordered list of syllabus topic titles
- `reviews[]` — sample of real user reviews: `author`, `date`, `text`, `rating`
- `recordType: "courseDetail"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `search` | `search` / `bySubject` / `byProvider` / `byUniversity` / `collection` / `courseDetail` |
| `searchQuery` | string | `python` | Keyword query (mode=search) |
| `subjectSlug` | string | – | Subject to browse (mode=bySubject); also narrows mode=collection |
| `providerSlug` | string | – | Provider to browse (mode=byProvider) |
| `universitySlug` | string | – | University/institution to browse (mode=byUniversity) |
| `collectionSlug` | string | `top-free-online-courses` | Which curated collection (mode=collection) |
| `courseUrls` | array | – | Course page URLs to fetch detail for (mode=courseDetail) |
| `level` | string | – | `beginner` / `intermediate` / `advanced` |
| `language` | string | – | Course language (62 supported) |
| `duration` | string | – | Effort/workload bucket: `<30` / `30-60` / `1-2` / `2-5` / `5-10` / `10+` (minutes/hours) |
| `freeOnly` | boolean | `false` | Only free courses |
| `certificateOnly` | boolean | `false` | Only courses offering a certificate |
| `careerCertificateOnly` | boolean | `false` | Only courses offering a career/professional certificate |
| `universityOnly` | boolean | `false` | Only university-affiliated courses |
| `minRating` | number | – | Only courses rated at or above this value (0–5); unrated courses excluded |
| `minReviews` | integer | – | Only courses with at least this many ratings; unrated courses excluded |
| `sortBy` | string | `relevancy` | `relevancy` / `highestRated` / `lowestRated` / `recentlyAdded` |
| `maxItems` | int | `30` | Hard cap on emitted records (1–500) |

#### Example: search with filters

```json
{
  "mode": "search",
  "searchQuery": "machine learning",
  "level": "beginner",
  "freeOnly": true,
  "maxItems": 40
}
````

#### Example: browse a subject, sorted by rating

```json
{
  "mode": "bySubject",
  "subjectSlug": "data-science",
  "sortBy": "highestRated",
  "certificateOnly": true,
  "maxItems": 50
}
```

#### Example: browse a provider's catalog

```json
{
  "mode": "byProvider",
  "providerSlug": "coursera",
  "language": "spanish",
  "maxItems": 30
}
```

#### Example: browse a university's catalog, highly-rated only

```json
{
  "mode": "byUniversity",
  "universitySlug": "stanford",
  "minRating": 4.5,
  "minReviews": 20,
  "maxItems": 30
}
```

#### Example: curated "Best of All Time" list for one subject

```json
{
  "mode": "collection",
  "collectionSlug": "top-free-online-courses",
  "subjectSlug": "cs",
  "maxItems": 20
}
```

#### Example: full detail for specific courses

```json
{
  "mode": "courseDetail",
  "courseUrls": [
    "https://www.classcentral.com/course/udacity-intro-to-programming-nanodegree--nd000-18207"
  ]
}
```

### Use cases

- **Edtech curriculum research** — discover and compare courses across every major MOOC provider in one pass
- **Market intelligence** — track which providers dominate a subject, and how their courses are priced and rated
- **Content aggregation** — build a course-discovery feed filtered by level, language, or free/paid status
- **Review mining** — pull real learner reviews for sentiment analysis or course-quality benchmarking
- **Corporate L\&D** — source free, certificate-bearing courses for employee upskilling programs

### FAQ

**What is the data source?**
The public [classcentral.com](https://www.classcentral.com) website — a third-party course meta-search engine. This actor is not affiliated with Class Central or any course provider.

**Does this require login or an API key?**
No. All modes work against Class Central's public pages with no authentication.

**Why are some fields missing on some courses?**
Class Central sources course metadata from each provider, and not every provider supplies every field (e.g. price, institution, or duration). This actor omits any field it can't populate rather than showing an empty value.

**What's the difference between `subject` (in course listings) and `subjectTags` (in course detail)?**
`subject` is the single subject tag Class Central assigns for catalog placement. `subjectTags` (course detail only) is the fuller set of topic breadcrumbs the course is filed under.

**Are the reviews the full review history for a course?**
No — `reviews[]` returns the sample of reviews shown on the course's main page (up to 20), not a fully paginated review archive.

**How fresh is the data?**
Every run scrapes Class Central live; there is no caching on this actor's side.

**Why do `courseUrl` / `providerUrl` links return 403 when fetched with a plain script?**
Class Central fronts its pages with a TLS-fingerprint check that blocks simple HTTP clients (curl, requests, httpx) while allowing real browsers through transparently. Every URL in the output is a real, working Class Central page — opening it in any normal web browser works immediately. This actor itself uses a browser-matching HTTP client internally so it is unaffected.

**Can I filter by duration/effort?**
Yes — the `duration` input filters by total workload bucket (`<30` minutes up to `10+` hours), matching Class Central's own catalog filter. `effort` (the human-readable workload string, e.g. `109 hours`) is also available as an output field on every listing and detail record.

**What's the difference between `provider`/`providerUrl` and `institution`/`institutionUrl` in course detail?**
`provider` is the platform hosting the course (Coursera, Udacity, edX, ...). `institution`/`institutionUrl` is the university or academic partner that authored the course content, when applicable (e.g. a Coursera course run by the University of Michigan). Not every course has an institution — many platform-original courses (Udacity nanodegrees, YouTube videos) have no academic affiliation, so the field is omitted for those.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `searchQuery` (type: `string`):

Free-text keyword search, e.g. `python`, `machine learning`, `public speaking`.

## `subjectSlug` (type: `string`):

Class Central's curated subject taxonomy. Required for mode=bySubject; optionally narrows mode=collection to a single subject.

## `providerSlug` (type: `string`):

Course provider/platform to browse. Required for mode=byProvider.

## `universitySlug` (type: `string`):

University or institution catalog to browse (e.g. courses affiliated with Stanford on any platform). Required for mode=byUniversity. Curated top ~100 of Class Central's 1,400+ universities; see classcentral.com/universities for the full list of slugs.

## `collectionSlug` (type: `string`):

Which curated Class Central collection to scrape.

## `courseUrls` (type: `array`):

Class Central course page URLs (or `/course/...` paths) to fetch full detail for. Copy these from `courseUrl` in listing-mode output.

## `level` (type: `string`):

Only return courses tagged at this difficulty level (listing modes only).

## `language` (type: `string`):

Only return courses taught in this language (listing modes only).

## `duration` (type: `string`):

Only return courses whose total effort/workload falls in this bucket (listing modes only).

## `freeOnly` (type: `boolean`):

Only return courses that are free to take (listing modes only).

## `certificateOnly` (type: `boolean`):

Only return courses that offer a certificate of completion (listing modes only).

## `careerCertificateOnly` (type: `boolean`):

Only return courses offering a career/professional certificate (a stricter subset of certificateOnly, e.g. Coursera Career Certificates; listing modes only).

## `universityOnly` (type: `boolean`):

Only return courses offered by a university/academic institution (listing modes only).

## `minRating` (type: `number`):

Only return courses with an average rating at or above this value, on Class Central's 0-5 scale (listing modes only). Courses with no rating yet are excluded, since they cannot be shown to meet the bar.

## `minReviews` (type: `integer`):

Only return courses with at least this many ratings/reviews (listing modes only). Courses with no ratings yet are excluded.

## `sortBy` (type: `string`):

Result ordering (listing modes only).

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "python",
  "collectionSlug": "top-free-online-courses",
  "courseUrls": [
    "https://www.classcentral.com/course/udacity-intro-to-programming-nanodegree--nd000-18207"
  ],
  "freeOnly": false,
  "certificateOnly": false,
  "careerCertificateOnly": false,
  "universityOnly": false,
  "sortBy": "relevancy",
  "maxItems": 30
}
```

# Actor output Schema

## `courses` (type: `string`):

Dataset containing all scraped Class Central course records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "searchQuery": "python",
    "collectionSlug": "top-free-online-courses",
    "courseUrls": [
        "https://www.classcentral.com/course/udacity-intro-to-programming-nanodegree--nd000-18207"
    ],
    "freeOnly": false,
    "certificateOnly": false,
    "careerCertificateOnly": false,
    "universityOnly": false,
    "sortBy": "relevancy",
    "maxItems": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/class-central-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "searchQuery": "python",
    "collectionSlug": "top-free-online-courses",
    "courseUrls": ["https://www.classcentral.com/course/udacity-intro-to-programming-nanodegree--nd000-18207"],
    "freeOnly": False,
    "certificateOnly": False,
    "careerCertificateOnly": False,
    "universityOnly": False,
    "sortBy": "relevancy",
    "maxItems": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/class-central-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "searchQuery": "python",
  "collectionSlug": "top-free-online-courses",
  "courseUrls": [
    "https://www.classcentral.com/course/udacity-intro-to-programming-nanodegree--nd000-18207"
  ],
  "freeOnly": false,
  "certificateOnly": false,
  "careerCertificateOnly": false,
  "universityOnly": false,
  "sortBy": "relevancy",
  "maxItems": 30
}' |
apify call crawlerbros/class-central-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/class-central-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Class Central Scraper",
        "description": "Scrape Class Central's course meta-search index - search or browse courses from Coursera, edX, Udemy, YouTube and 100+ providers. Get ratings, reviews, level, language, pricing, syllabus, and provider detail. No login required.",
        "version": "1.0",
        "x-build-id": "IfpflFkCM7RA7cmiq"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~class-central-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-class-central-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~class-central-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-class-central-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~class-central-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-class-central-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "bySubject",
                            "byProvider",
                            "byUniversity",
                            "collection",
                            "courseDetail"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Free-text keyword search, e.g. `python`, `machine learning`, `public speaking`.",
                        "default": "python"
                    },
                    "subjectSlug": {
                        "title": "Subject (mode=bySubject; optional narrowing filter for mode=collection)",
                        "enum": [
                            "technology",
                            "business",
                            "art-and-design",
                            "stem",
                            "health",
                            "people-and-society",
                            "personal-growth-and-lifestyle",
                            "cs",
                            "ai",
                            "data-science",
                            "web-development",
                            "programming-and-software-development",
                            "databases",
                            "information-technology",
                            "devops",
                            "ux",
                            "generative-ai",
                            "cloud-computing",
                            "cybersecurity",
                            "game-development",
                            "product-management",
                            "management-and-leadership",
                            "finance",
                            "entrepreneurship",
                            "marketing",
                            "strategic-management",
                            "project-management",
                            "sales",
                            "business-software",
                            "real-estate",
                            "professional-development",
                            "accounting",
                            "supply-chain-management",
                            "business-strategy",
                            "human-resources",
                            "music",
                            "digital-media",
                            "visual-arts",
                            "design-and-creativity",
                            "crafts",
                            "performing-arts",
                            "ai-art",
                            "maths",
                            "engineering",
                            "science",
                            "statistics",
                            "chemistry",
                            "physics",
                            "environmental-science",
                            "astronomy",
                            "biology",
                            "agriculture",
                            "disease-and-disorders",
                            "public-health",
                            "health-care",
                            "nursing",
                            "mental-health",
                            "cme",
                            "medicine",
                            "wellness",
                            "nutrition",
                            "humanities",
                            "education",
                            "social-sciences",
                            "history",
                            "literature",
                            "sociology",
                            "economics",
                            "psychology",
                            "anthropology",
                            "political-science",
                            "law",
                            "language-learning",
                            "grammar-writing",
                            "philosophy",
                            "religion",
                            "personal-development",
                            "sports",
                            "personal-finance",
                            "parenting",
                            "food",
                            "self-defense",
                            "gardening",
                            "productivity",
                            "games",
                            "study-skills",
                            "travel",
                            "pet-care",
                            "beauty",
                            "home-and-living",
                            "critical-thinking",
                            "conference-talks"
                        ],
                        "type": "string",
                        "description": "Class Central's curated subject taxonomy. Required for mode=bySubject; optionally narrows mode=collection to a single subject."
                    },
                    "providerSlug": {
                        "title": "Provider (mode=byProvider)",
                        "enum": [
                            "coursera",
                            "udemy",
                            "youtube",
                            "aws-skill-builder",
                            "xuetangx",
                            "swayam",
                            "coursehorse",
                            "study-com",
                            "codesignal",
                            "sap-learning",
                            "creativelive",
                            "craftsy",
                            "independent",
                            "cloudskillsboost",
                            "microsoft-learn",
                            "openlearn",
                            "freecodecamp",
                            "fun",
                            "datacamp",
                            "openlearning",
                            "udacity",
                            "great-courses-plus",
                            "codecademy",
                            "ibm-training",
                            "thaimooc",
                            "canvas",
                            "openwho",
                            "egghead",
                            "trailhead",
                            "noble-desktop",
                            "treehouse",
                            "graduate-school-usa",
                            "cybrary",
                            "educacao-executiva",
                            "vdci",
                            "wolfram-u",
                            "polimi",
                            "laracasts",
                            "mit-ocw",
                            "teex",
                            "zero-to-mastery",
                            "masterclass",
                            "kadenze",
                            "mongodb-university",
                            "unccelearn",
                            "niel-asher-education",
                            "iversity",
                            "mitx-online",
                            "openhpi",
                            "symfonycasts",
                            "edureka",
                            "brilliant",
                            "uned-abierta",
                            "saylor-academy",
                            "frontend-masters",
                            "networking-academy",
                            "semrush-academy",
                            "simplilearn",
                            "gacco",
                            "scrimba",
                            "unity-learn",
                            "rwaq",
                            "skillshop",
                            "exercism",
                            "great-learning",
                            "straighterline",
                            "tau",
                            "cognitive-class",
                            "hubspot-academy",
                            "emma",
                            "acumen",
                            "taro",
                            "ce",
                            "boot-dev",
                            "desire2learn",
                            "trainsec",
                            "worldscienceu",
                            "stepik",
                            "matlab-academy",
                            "blender-studio",
                            "edraak",
                            "openclassrooms",
                            "institute-of-project-management",
                            "i-get-it",
                            "university-of-the-people",
                            "rosetta-stone",
                            "anthropic-academy",
                            "mooced",
                            "oer-psu",
                            "mru",
                            "newstateu",
                            "kaggle",
                            "sadie-valeri-atelier",
                            "babbel",
                            "metared",
                            "julia",
                            "trainindata",
                            "cxl",
                            "designlab",
                            "jovian",
                            "the-odin-project",
                            "openai-academy",
                            "unihackers",
                            "growthhackers"
                        ],
                        "type": "string",
                        "description": "Course provider/platform to browse. Required for mode=byProvider."
                    },
                    "universitySlug": {
                        "title": "University / institution (mode=byUniversity)",
                        "enum": [
                            "stanford",
                            "harvard",
                            "mit",
                            "mit-opencourseware",
                            "yale",
                            "umich",
                            "jhu",
                            "illinois",
                            "dartmouth",
                            "duke",
                            "uci",
                            "ucla",
                            "asu",
                            "penn",
                            "delft",
                            "umd",
                            "rice",
                            "unimelb",
                            "ucdavis",
                            "leeds",
                            "chicago",
                            "peking-university",
                            "epfl",
                            "gatech",
                            "oxford",
                            "columbia",
                            "macquarie",
                            "uva",
                            "ucsd",
                            "glasgow",
                            "deakin",
                            "edinburgh",
                            "vanderbilt",
                            "nyu",
                            "minnesota",
                            "purdue",
                            "hkust",
                            "imperial",
                            "brown",
                            "uw",
                            "u-of-london",
                            "ubc",
                            "taiwan",
                            "university-of-queensland",
                            "berkeley",
                            "utoronto",
                            "northwestern",
                            "university-of-cambridge",
                            "emory",
                            "adelaide",
                            "kings-college-london",
                            "aachen",
                            "utexas",
                            "hku",
                            "rutgers",
                            "nanjing",
                            "ucl",
                            "reading",
                            "leiden",
                            "kuleuven",
                            "erasmus",
                            "national-university-of-singapore",
                            "ualberta",
                            "caltech",
                            "sorbonne-university",
                            "princeton",
                            "cornell",
                            "georgetown",
                            "manchester",
                            "griffith",
                            "university-of-sheffield",
                            "ethzurich",
                            "lancaster",
                            "strathclyde",
                            "bocconi",
                            "technion",
                            "sydney",
                            "amsterdam",
                            "exeter",
                            "nottingham",
                            "copenhagen-business-school",
                            "insead",
                            "kaist",
                            "yonsei",
                            "seoul",
                            "todai",
                            "kyoto",
                            "telaviv",
                            "monash",
                            "unsw",
                            "australian-national-university",
                            "tsinghua",
                            "boston-university",
                            "northeastern",
                            "wisconsin",
                            "indiana",
                            "osu",
                            "ufl",
                            "pitt",
                            "arizona",
                            "casewestern",
                            "davidson",
                            "babson-college",
                            "berklee",
                            "calarts",
                            "open-university"
                        ],
                        "type": "string",
                        "description": "University or institution catalog to browse (e.g. courses affiliated with Stanford on any platform). Required for mode=byUniversity. Curated top ~100 of Class Central's 1,400+ universities; see classcentral.com/universities for the full list of slugs."
                    },
                    "collectionSlug": {
                        "title": "Collection (mode=collection)",
                        "enum": [
                            "top-free-online-courses",
                            "free-certificates"
                        ],
                        "type": "string",
                        "description": "Which curated Class Central collection to scrape.",
                        "default": "top-free-online-courses"
                    },
                    "courseUrls": {
                        "title": "Course URLs (mode=courseDetail)",
                        "type": "array",
                        "description": "Class Central course page URLs (or `/course/...` paths) to fetch full detail for. Copy these from `courseUrl` in listing-mode output.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "level": {
                        "title": "Level filter",
                        "enum": [
                            "beginner",
                            "intermediate",
                            "advanced"
                        ],
                        "type": "string",
                        "description": "Only return courses tagged at this difficulty level (listing modes only)."
                    },
                    "language": {
                        "title": "Language filter",
                        "enum": [
                            "albanian",
                            "amharic",
                            "arabic",
                            "azerbaijani",
                            "basque",
                            "bengali",
                            "bulgarian",
                            "catalan",
                            "chinese",
                            "czech",
                            "dutch",
                            "english",
                            "estonian",
                            "farsi",
                            "finnish",
                            "french",
                            "german",
                            "greek",
                            "gujarati",
                            "hebrew",
                            "hindi",
                            "hungarian",
                            "indonesian",
                            "italian",
                            "japanese",
                            "kannada",
                            "kazakh",
                            "khmer",
                            "korean",
                            "lao",
                            "latin",
                            "macedonian",
                            "malayalam",
                            "marathi",
                            "mongolian",
                            "nepali",
                            "norwegian",
                            "pali",
                            "pashto",
                            "polish",
                            "portuguese",
                            "punjabi",
                            "romanian",
                            "russian",
                            "serbian",
                            "sinhala",
                            "slovak",
                            "somali",
                            "spanish",
                            "swahili",
                            "swedish",
                            "tagalog",
                            "tajik",
                            "tamil",
                            "telugu",
                            "tetum",
                            "thai",
                            "turkish",
                            "ukrainian",
                            "urdu",
                            "vietnamese",
                            "welsh"
                        ],
                        "type": "string",
                        "description": "Only return courses taught in this language (listing modes only)."
                    },
                    "duration": {
                        "title": "Duration filter",
                        "enum": [
                            "<30",
                            "30-60",
                            "1-2",
                            "2-5",
                            "5-10",
                            "10+"
                        ],
                        "type": "string",
                        "description": "Only return courses whose total effort/workload falls in this bucket (listing modes only)."
                    },
                    "freeOnly": {
                        "title": "Free courses only",
                        "type": "boolean",
                        "description": "Only return courses that are free to take (listing modes only).",
                        "default": false
                    },
                    "certificateOnly": {
                        "title": "Certificate available only",
                        "type": "boolean",
                        "description": "Only return courses that offer a certificate of completion (listing modes only).",
                        "default": false
                    },
                    "careerCertificateOnly": {
                        "title": "Career certificates only",
                        "type": "boolean",
                        "description": "Only return courses offering a career/professional certificate (a stricter subset of certificateOnly, e.g. Coursera Career Certificates; listing modes only).",
                        "default": false
                    },
                    "universityOnly": {
                        "title": "University courses only",
                        "type": "boolean",
                        "description": "Only return courses offered by a university/academic institution (listing modes only).",
                        "default": false
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only return courses with an average rating at or above this value, on Class Central's 0-5 scale (listing modes only). Courses with no rating yet are excluded, since they cannot be shown to meet the bar."
                    },
                    "minReviews": {
                        "title": "Minimum number of ratings",
                        "minimum": 0,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Only return courses with at least this many ratings/reviews (listing modes only). Courses with no ratings yet are excluded."
                    },
                    "sortBy": {
                        "title": "Sort order",
                        "enum": [
                            "relevancy",
                            "highestRated",
                            "lowestRated",
                            "recentlyAdded"
                        ],
                        "type": "string",
                        "description": "Result ordering (listing modes only).",
                        "default": "relevancy"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 30
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
