Coursera Course Search Scraper

Scrape public Coursera search results with course titles, partners, ratings, reviews, skills, levels, durations, images, and URLs.

Data fields

FieldTypeDescription
querystring | nullValue exported as query.
courseTitlestringValue exported as courseTitle.
urlstringValue exported as url.
partnerNamesarrayValue exported as partnerNames.
productTypestring | nullValue exported as productType.
ratingnumber | nullValue exported as rating.
reviewCountinteger | nullValue exported as reviewCount.
reviewCountTextstring | nullValue exported as reviewCountText.

Input preview

queriesSearch queries *
startUrlsCoursera search URLs
languageLanguage filter
productTypeProduct type filter
maxItemsMaximum course results per query
maxPagesPerQueryMaximum pages per query

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Extract public Coursera course search results for market research, catalog monitoring, lead generation, SEO analysis, and learning-content intelligence.

What does Coursera Course Search Scraper do?

Coursera Course Search Scraper collects public course cards from Coursera search pages.

It turns search phrases such as data science, python, or project management into structured dataset rows.

Each row includes the course courseTitle, provider, URL, image, rating, review text, level, duration, skills, type, position, and timestamp.

Use it when you need repeatable course catalog data without manually copying search pages.

Who is it for?

  • 🎓 L&D teams comparing learning vendors and course coverage.
  • 📊 Edtech analysts tracking course supply in fast-moving skill categories.
  • 🧑‍🏫 Course creators researching competitive course titles and positioning.
  • 🧩 Course aggregators building searchable education catalogs.
  • 🔎 SEO teams monitoring Coursera result pages for topic clusters.
  • 🏢 Talent teams mapping skills to available learning options.

Why use this actor?

Coursera has a large public education catalog.

Manual research is slow when you need many topics.

This actor gives you clean rows that are easy to filter, export, enrich, and compare.

You can run the same query list weekly or monthly and watch changes in course availability.

What data can you extract?

Field Description
query Search phrase connected to the course result.
courseTitle Course, certificate, degree, or project title.
partnerNames Coursera partners or institutions when visible.
url Absolute Coursera URL.
imageUrl Public card image URL when visible.
rating Numeric rating when visible.
reviewCount Parsed numeric review count when visible.
reviewCountText Review count text, for example 44K reviews.
enrollmentText Enrollment text when present on the card.
level Beginner, Intermediate, Advanced, or related level text.
duration Duration shown on the card.
skills Skills listed on the search result card.
descriptionSnippet Short course description or summary when visible.
tags Additional public tags or metadata labels from the result card.
sourceUrl Search results page URL that produced the record.
productType Course, Specialization, Professional Certificate, Degree, or related type.
position Saved result order.
scrapedAt ISO timestamp for the scrape.

How to use it

  1. Open the actor on Apify.
  2. Add one or more Coursera search queries.
  3. Optionally add direct Coursera search URLs.
  4. Set maxItems to the number of course results you need.
  5. Run the actor.
  6. Export the dataset as JSON, CSV, Excel, XML, or HTML.

Input options

Search queries

Add course-market phrases such as:

  • data science
  • python
  • project management
  • generative ai
  • cybersecurity

Coursera search URLs

You can also paste Coursera search URLs.

This is useful when you already have a filtered public search page.

Language filter

Use the optional language field when you want Coursera language-filtered results.

Maximum course results

maxItems controls the total saved records across all queries and URLs.

The default is intentionally small so first runs stay inexpensive.

Proxy configuration

The default run uses a direct connection.

Enable Apify Proxy only if your network path is blocked or unreliable.

Example input

{
  "queries": ["data science", "python"],
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Example output

{
  "query": "data science",
  "courseTitle": "Python for Data Science, AI & Development",
  "partnerNames": ["IBM"],
  "url": "https://www.coursera.org/learn/python-for-applied-data-science-ai",
  "imageUrl": "https://d3njjcbhbojbot.cloudfront.net/...",
  "rating": 4.6,
  "reviewCount": 44000,
  "reviewCountText": "44K reviews",
  "enrollmentText": null,
  "level": "Beginner",
  "duration": "1 - 3 Months",
  "skills": ["Data Import/Export", "Python Programming", "NumPy"],
  "descriptionSnippet": "Build data science and AI skills with Python.",
  "tags": ["Course"],
  "sourceUrl": "https://www.coursera.org/search?query=data%20science",
  "productType": "Course",
  "position": 1,
  "scrapedAt": "2026-07-03T15:00:00.000Z"
}

Tips for better results

  • Use specific skill phrases rather than very broad single words.
  • Run separate queries for separate market segments.
  • Keep a fixed query list for recurring trend monitoring.
  • Export CSV for spreadsheet review.
  • Export JSON for downstream enrichment pipelines.

Use cases

Course catalog monitoring

Track how many Coursera results exist for important skills.

Compare titles, providers, durations, and levels across topics.

Competitive intelligence

Course creators can inspect competing course titles and positioning.

Analysts can monitor how partner institutions appear across keywords.

Skill supply research

Learning teams can identify which skills are well-covered and which are underserved.

SEO and content planning

Content teams can discover course vocabulary, provider names, and skill clusters.

Integrations

Send results to Google Sheets for editorial review.

Load JSON into a warehouse for recurring catalog snapshots.

Use the Apify API to trigger scheduled weekly runs.

Connect the dataset to Make, Zapier, or n8n for automated alerts.

API usage with Node.js

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/coursera-course-search-scraper').call({
  queries: ['data science'],
  maxItems: 25
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/coursera-course-search-scraper').call(run_input={
    'queries': ['python'],
    'maxItems': 25,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~coursera-course-search-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queries":["project management"],"maxItems":25}'

MCP usage

Use the Apify MCP server to run this actor from AI tools.

Claude Code example URL:

https://mcp.apify.com/?tools=fetch_cat/coursera-course-search-scraper

Claude Code command:

claude mcp add apify-coursera "https://mcp.apify.com/?tools=fetch_cat/coursera-course-search-scraper"

Claude Desktop JSON configuration:

{
  "mcpServers": {
    "apify-coursera": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.apify.com/?tools=fetch_cat/coursera-course-search-scraper"]
    }
  }
}

Example prompts:

  • "Run Coursera Course Search Scraper for data science and summarize common providers."
  • "Collect 50 Coursera cybersecurity courses and group them by level."
  • "Compare Python and Java course search results from Coursera."

Scheduling

Create a scheduled Apify task for recurring monitoring.

Weekly or monthly schedules are useful for market research.

Keep query lists stable when you want trend comparisons.

Limits

The actor extracts public search-result data visible on Coursera pages.

It does not log in.

It does not enroll in courses.

It does not extract private learner data.

It may return fewer rows than requested if Coursera has fewer public results for a query.

Troubleshooting

The run returns fewer items than expected

Coursera may have fewer visible results for your query, or duplicate courses may appear across pages.

Try a broader query or multiple related queries.

The run fails with connection errors

Retry with Apify Proxy enabled.

If the issue persists, reduce maxItems and test with one query.

Some fields are empty

Coursera does not show every field on every result card.

Fields such as enrollment count or image URL can be missing for some courses.

Data quality notes

Values are normalized from public result cards.

Ratings are numbers when visible.

Review counts are preserved as display text because Coursera may abbreviate them.

Skills are split into arrays for easier filtering.

Legality

This actor collects publicly available course search information.

You are responsible for using the data legally and respecting Coursera's terms, privacy rules, and applicable laws.

Do not use the actor to collect private account data.

Common questions

Questions and answers reused from the canonical actor README.

Can I search multiple Coursera topics in one run?

Yes. Add multiple values to queries and set a large enough maxItems.

Can I scrape a direct Coursera search URL?

Yes. Paste it into startUrls.

Does this actor need a Coursera account?

No. It targets public search results only.

Can I get course reviews?

No. This version extracts search result cards, not detailed review pages.

Can I use proxies?

Yes. Use the proxy configuration field if needed.