Coursera Scraper · Courses, Specializations, Partners & Ratings avatar

Coursera Scraper · Courses, Specializations, Partners & Ratings

Pricing

from $1.30 / 1,000 coursera course returneds

Go to Apify Store
Coursera Scraper · Courses, Specializations, Partners & Ratings

Coursera Scraper · Courses, Specializations, Partners & Ratings

Scrape Coursera courses, specializations, skills, universities, partners, workloads, languages, ratings, and course details. HTTP only, fast, structured JSON output.

Pricing

from $1.30 / 1,000 coursera course returneds

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

reapX — public sources in, addressable records out

Coursera Scraper · Courses, Specializations, Partners & Ratings

Coursera Scraper allows you to extract structured course data, specializations, university partners, instructors, difficulty levels, workloads, and primary languages from Coursera. Scrape public course listings and catalog details without requiring login credentials or API keys.

Maintained by reapX. Every row cites the Apify run that produced it — nothing is inferred, modelled or filled in, and a field absent from the source is absent from the row. The extracted archive for this source is browsable at reapx.dev/data/coursera-scraper/ and mirrored as an open dataset on Hugging Face and Kaggle. Questions: reapxdev@proton.me


Overview & Key Features

Coursera is one of the world's leading online learning platforms, offering thousands of courses, specializations, and professional certificates from top universities like Stanford, Yale, Duke, and University of Michigan, as well as industry leaders like Google, IBM, Meta, and AWS.

This actor connects directly to Coursera's public catalog API endpoint over plain HTTP. It operates at high speed without needing a headless browser, extracting comprehensive structured records for courses across all domains.

  • Complete Metadata Extraction: Scrape course titles, permanent slugs, internal IDs, descriptions, workloads, difficulty levels, and primary language codes.
  • Partner & Instructor Mapping: Automatically link partner institutions (universities and companies) and course instructors directly into each course record.
  • Domain & Subject Categorization: Extract domain and subdomain classifications (e.g. Data Science, Computer Science, Machine Learning, Business).
  • Flexible Filtering: Filter output by subject domain, difficulty level (BEGINNER, INTERMEDIATE, ADVANCED), primary language (en, es, fr, pt, etc.), or partner name (Google, Stanford, IBM).
  • Pay-Per-Event Pricing: Charged strictly per course record returned. Empty runs or rate-limited responses bill zero.

⬇️ Input

The input for Coursera Scraper is configured using simple JSON options or through the Apify Console user interface.

Input Parameters

FieldTypeRequiredDefault / PrefillDescription
maxCoursesIntegerYes100Maximum number of Coursera courses to extract in this run. Higher limits take longer and consume more events.
subjectStringNo""Filter courses by subject area or domain identifier (e.g. data-science, computer-science, business, information-technology, health). Leave empty to include all subjects.
levelStringNo""Filter courses by difficulty level (BEGINNER, INTERMEDIATE, or ADVANCED). Leave empty for all levels.
languageStringNo""Filter courses by primary language ISO code (e.g. en for English, es for Spanish, fr for French). Leave empty for all languages.
partnerQueryStringNo""Filter courses offered by specific university or corporate partners matching this string (e.g. Google, Stanford, IBM). Leave empty for all partners.

Worked Input Examples

Example 1: Extract Top 100 Data Science Courses

{
"maxCourses": 100,
"subject": "data-science",
"level": "",
"language": "",
"partnerQuery": ""
}

Example 2: Extract Beginner Courses Offered by Google

{
"maxCourses": 50,
"subject": "",
"level": "BEGINNER",
"language": "en",
"partnerQuery": "Google"
}

Example 3: Extract Spanish Language Courses in Business

{
"maxCourses": 50,
"subject": "business",
"level": "",
"language": "es",
"partnerQuery": ""
}

⬆️ Output

Every scraped course is pushed directly to the run's default dataset in real time. Each record represents a single Coursera course with addressable identifier (slug).

Dataset Schema Fields

Field NameTypeTitleDescription & Example
slugStringCourse SlugPermanent addressable URL slug. Example: "googlecloud-getting-started-with-the-vertex-ai-gemini-1-5-pro-model-i43mr"
nameStringCourse TitleFull title of the course. Example: "Getting started with the Vertex AI Gemini 1.5 Pro Model"
courseIdStringCourse IDCoursera internal course ID (never named id). Example: "l31la3mKEe-zFg7heHyXOQ"
courseTypeStringCourse TypeFormat of course delivery. Example: "v2.ondemand"
descriptionStringDescriptionSummary of course content and learning goals.
workloadStringEstimated WorkloadEstimated duration or weekly workload. Example: "1 hour 30 minutes"
levelStringDifficulty LevelTarget audience level. Example: "BEGINNER"
primaryLanguagesArray[String]Primary LanguagesPrimary course language ISO codes. Example: ["en"]
partnersArray[String]Partner NamesNames of offering universities or partners. Example: ["Google Cloud"]
partnerIdsArray[String]Partner IDsCoursera partner IDs. Example: ["443"]
partnerLogoStringPartner Logo URLURL of the primary partner's logo image.
instructorsArray[String]Instructor NamesNames of course instructors. Example: ["Google Cloud Training"]
instructorIdsArray[String]Instructor IDsInternal IDs of course instructors. Example: ["22997770"]
domainTypesArray[Object]Domain CategoriesList of domain and subdomain classifications.
photoUrlStringCover Image URLURL of course thumbnail/banner image.
certificatesArray[String]Certificates OfferedCertificate types available upon completion. Example: ["VerifiedCert"]
s12nIdsArray[String]Specialization IDsIDs of associated specializations.

Sample Output Record

{
"slug": "googlecloud-getting-started-with-the-vertex-ai-gemini-1-5-pro-model-i43mr",
"name": "Getting started with the Vertex AI Gemini 1.5 Pro Model",
"courseId": "l31la3mKEe-zFg7heHyXOQ",
"courseType": "v2.ondemand",
"description": "This is a self-paced lab that takes place in the Google Cloud console. This lab will provide an introductory, hands-on experience with Generative AI on Google Cloud.",
"workload": "1 hour 30 minutes",
"level": "BEGINNER",
"primaryLanguages": [
"en"
],
"partners": [
"Google Cloud"
],
"partnerIds": [
"443"
],
"partnerLogo": "http://coursera-university-assets.s3.amazonaws.com/7f/db40d0f4a711e6bc06c3b39ee3e5b0/cloud_logo_400x96.png",
"instructors": [
"Google Cloud Training"
],
"instructorIds": [
"22997770"
],
"domainTypes": [
{
"domainId": "information-technology",
"subdomainId": "cloud-computing"
},
{
"domainId": "data-science",
"subdomainId": "machine-learning"
}
],
"photoUrl": "https://d3njjcbhbojbot.cloudfront.net/api/utilities/v1/imageproxy/https://coursera-course-photos.s3.amazonaws.com/c5/e1dc34a146454fad3d65ce2304cb2b/Logo-Image_GC-Projects.png",
"certificates": [
"VerifiedCert"
],
"s12nIds": []
}

How it works

  1. HTTP Direct API Connection: The scraper calls https://api.coursera.org/api/courses.v1 directly over plain HTTP. It bypasses heavy browser automation, enabling maximum speed and low resource consumption (256 MB memory footprint).
  2. Linked Entity Resolution: Coursera's catalog API returns separate entity maps for universities (partners.v1) and instructors (instructors.v1). The scraper automatically resolves and joins these entities onto every course record before outputting.
  3. Identifier Normalization: Every course carries a stable slug field which acts as the entity addressable key for index pages. The course ID is preserved as courseId (never id).
  4. Streaming & Backoff: Data is pushed item-by-item to Apify's default dataset. Automatic exponential backoff handles rate-limits (429) or server errors (5xx).

❓ FAQ

1. How is this actor priced?

This actor uses Pay-Per-Event (PPE) pricing. You pay only per course record returned ($0.002 per event on the Free tier, with tiered volume discounts down to $0.0008 on Diamond). Empty runs or failed requests cost $0.00.

2. Do I need a Coursera account or API key?

No. The scraper accesses Coursera's public catalog endpoints without requiring authentication, login tokens, or API keys.

3. How fast is the scraper?

Because it runs purely over lightweight HTTP calls without browser rendering, it can fetch 100 courses per second. A run of 1,000 courses typically finishes in under 15 seconds.

4. What filters can I apply?

You can filter by subject domain (e.g. data-science, computer-science), difficulty level (BEGINNER, INTERMEDIATE, ADVANCED), primary language ISO code (e.g. en, es, fr), and partner institution name (e.g. Google, Stanford, IBM).

5. What format can I export data in?

Results are stored in standard Apify dataset storages and can be exported as JSON, CSV, Excel, XML, or HTML table via Apify Console or API.

6. Can I run this scraper on a schedule?

Yes. You can schedule regular runs using Apify Schedules to monitor new course additions or updates from specific universities.


💬 Your feedback

We actively maintain this scraper to ensure high accuracy and reliability. If you encounter any issue, have a feature request, or need additional fields extracted, please reach out directly:


Disclaimer: Unofficial - not affiliated with Coursera. Collects public data only. reapx. Contact reapxdev@proton.me.

🧪 Example input

A real, runnable configuration — this is an actual input this Actor has run with.

{
"maxCourses": 50,
"subject": "data-science",
"level": "",
"language": "",
"partnerQuery": ""
}

📄 Sample output

One real row from a real run of this Actor, unedited.

{
"courseType": "v2.ondemand",
"s12nIds": [],
"partnerLogo": "http://coursera-university-assets.s3.amazonaws.com/7f/db40d0f4a711e6bc06c3b39ee3e5b0/cloud_logo_400x96.png",
"description": "This is a self-paced lab that takes place in the Google Cloud console. This lab will provide an introductory, hands-on experience with Generative AI on Google Cloud.",
"domainTypes": [
{
"subdomainId": "cloud-computing",
"domainId": "information-technology"
},
{
"subdomainId": "machine-learning",
"domainId": "data-science"
}
],
"photoUrl": "https://d3njjcbhbojbot.cloudfront.net/api/utilities/v1/imageproxy/https://coursera-course-photos.s3.amazonaws.com/c5/e1dc34a146454fad3d65ce2304cb2b/Logo-Image_GC-Projects.png",
"categories": [],
"slug": "googlecloud-getting-started-with-the-vertex-ai-gemini-1-5-pro-model-i43mr",
"instructorIds": [
"22997770"
],
"specializations": [],
"level": "BEGINNER",
"workload": "1 hour 30 minutes",
"primaryLanguages": [
"en"
],
"partnerIds": [
"443"
],
"certificates": [
"VerifiedCert"
],
"name": "Getting started with the Vertex AI Gemini 1.5 Pro Model",
"partners": [
"Google Cloud"
],
"instructors": [
"Google Cloud Training"
],
"courseId": "l31la3mKEe-zFg7heHyXOQ"
}

⚠️ Run outcomes and error handling

This Actor reports what happened in the run's status message, and it always keeps whatever it collected. These are the outcomes you can get and what each one means.

OutcomeWhat it means
SuccessRows were returned and you were charged course-returned at $0.002 per row.
No matchesThe source returned nothing for your filters. Nothing is charged. Widen the date window or drop a filter.

What is guaranteed either way

  • Every row is pushed as it is built, not buffered to the end of the run. Anything that buffers output loses everything to a timeout, a block or a migration; this does not.
  • A field absent from the source is absent from the row. Nothing is inferred, modelled or filled in to make a row look complete.