Media, Film & Knowledge

Udemy API

The Udemy API returns online-course data as clean JSON.

7 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary search endpoint returns courses with id, title, headline, URL, image, rating, review count, lectures and instructor, and you can pull a detail, pricing, reviews, curriculum, courses by instructor and categories. It is built for education apps and course-aggregators that need Udemy catalog data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/udemy/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "python"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "udemy",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1317.9,
    "record_count": 12,
    "bytes": 8484,
    "cache_hit": false,
    "stop_reason": "limit_reached",
    "method": "browser_mint_graphql",
    "page": 1,
    "total_count": 10000,
    "has_more": true,
    "next_page": 2
  },
  "data": {
    "results": [
      {
        "course_id": "2776760",
        "title": "100 Days of Code™: The Complete Python Pro Bootcamp",
        "headline": "Master Python by building 100 projects in 100 days. Learn data science, automation, build websites, games and apps!",
        "url": "https://www.udemy.com/course/100-days-of-code",
        "image": "https://img-c.udemycdn.com/course/480x270/2776760_f176_10.jpg",
        "rating": 4.67,
        "num_reviews": 430388,
        "num_lectures": 604,
        "instructional_level": "ALL_LEVELS",
        "video_length": "56h 48m",
        "locale": "en-US",
        "is_free": false,
        "instructors": [
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ]
      },
      {
        "course_id": "567828",
        "title": "The Complete Python Bootcamp From Zero to Hero in Python",
        "headline": "Learn Python like a Professional  Start from the basics and go all the way to creating your own applications and games",
        "url": "https://www.udemy.com/course/complete-python-bootcamp",
        "image": "https://img-c.udemycdn.com/course/480x270/567828_67d0.jpg",
        "rating": 4.56,
        "num_reviews": 563814,
        "num_lectures": 170,
        "instructional_level": "ALL_LEVELS",
        "video_length": "22h 23m",
        "locale": "en-US",
        "is_free": false,
        "instructors": [
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          },
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ]
      },
      {
        "course_id": "6413585",
        "title": "Complete 2026 Python Bootcamp: Learn Python from Scratch",
        "headline": "Master Python Programming from Scratch: Build Real-World Projects and Become Job-Ready in 2026",
        "url": "https://www.udemy.com/course/codewithharry-python",
        "image": "https://img-c.udemycdn.com/course/480x270/6413585_ec1f_2.jpg",
        "rating": 4.56,
        "num_reviews": 16218,
        "num_lectures": 110,
        "instructional_level": "BEGINNER",
        "video_length": "17h 43m",
        "locale": "en-US",
        "is_free": false,
        "instructors": [
          {
            "id": "[trimmed-depth]",
            "name": "[trimmed-depth]"
          }
        ]
      }
    ]
  }
}
Actions

What the Udemy API does

ActionDescriptionConcrete use caseKey params
searchSearch Udemy courses by keyword (any topic, e.g. 'python', 'excel', 'machine learning'). Returns a paginated list of course cards — id, title, headline, instructors, rating, review count, level, duration, language — most-relevant first. Feed a result's course_id into detail / pricing / reviews / curriculum. Page with `page`; meta.has_more / meta.total_count tell you how many.Content platforms call search to search Udemy courses by keyword (any topic, e.g.query, page, page_size
detailFull course card for a Udemy course by URL, slug or id: title, headline, instructors, rating, review count, subscriber count, level, language, duration, price, category, description, what-you'll-learn, requirements and target audience.Research tools call detail to get full course card for a Udemy course by URL, slug or id.course_id, slug, url
pricingLive price, list price and discount price for one or many Udemy courses by id (comma-separated). Fast, lightweight — use it to track current/sale pricing.Community analysts call pricing to get live price, list price and discount price for one or many Udemy courses by id (comma-separated).course_ids
reviewsPaginated public student reviews for a course by id: star rating, review text, date and the instructor's reply. Page with `page` — meta.has_more / meta.review_count tell you how many.Media monitors call reviews to get paginated public student reviews for a course by id.course_id, page, page_size
curriculumThe course outline by id: chapters and lectures in order, with title, position, lecture asset type and whether the lecture is a free preview. Paginated.Content platforms call curriculum to get the course outline by id.course_id, page, page_size
by_instructorBrowse every course published by a Udemy instructor, by their numeric instructor id. Returns a paginated list of course cards (id, title, rating, price, level, instructors) — use it to discover courses to feed into detail/pricing/reviews/curriculum. Get the instructor id from any course's instructors[] (detail action).Research tools call by_instructor to get browse every course published by a Udemy instructor, by their numeric instructor id.instructor_id, page, page_size
categoriesThe live Udemy category taxonomy (Development, Business, IT & Software, Design, …) with ids, titles and slugs. Pass a category_id to drill into its subcategories. Use this to map the Udemy catalogue structure.Community analysts call categories to get the live Udemy category taxonomy (Development, Business, IT & Software, Design, …) with ids,….category_id
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/udemy/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"python"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.udemy.search with {"query":"python"}.
Use cases

Who uses this API and why

  • Course-aggregators call search to list Udemy courses by subject and rating.
  • Learning apps use detail and curriculum to show what a course covers.
  • Price tools use pricing to track course discounts over time.
FAQ

Questions developers ask before integrating

What is the Udemy API?

Udemy API is a ReefAPI endpoint group for udemy It returns live JSON through POST requests under /udemy/v1.

Is the Udemy API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Udemy calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Udemy login or account?

No login to Udemy is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Udemy data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Udemy API use?

Udemy actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Udemy from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call udemy actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Udemy API a Udemy scraper?

It is the managed alternative to a DIY Udemy scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same udemy back as clean JSON.

Why does my Udemy scraper keep getting blocked?

Most Udemy scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / udemy

Udemy

Udemy

base /udemy/v17 endpoints
post/udemy/v1/detail1 credit

Full course card for a Udemy course by URL, slug or id: title, headline, instructors, rating, review count, subscriber count, level, language, duration, price, category, description, what-you'll-learn, requirements and target audience.

ParameterAllowed / rangeDescription
course_idoptionalThe Udemy course to look up — its numeric id (the number in /course/<slug>/ → api id), its slug, or a full Udemy course URL (https://www.udemy.com/course/the-complete-python-bootcamp/). A URL/slug is resolved to the course automatically.
Try in playground →
post/udemy/v1/pricing1 credit

Live price, list price and discount price for one or many Udemy courses by id (comma-separated). Fast, lightweight — use it to track current/sale pricing.

ParameterAllowed / rangeDescription
course_idsrequiredOne or more numeric Udemy course ids, comma-separated (up to 50). Get ids from the detail action.
Try in playground →
post/udemy/v1/reviews1 credit

Paginated public student reviews for a course by id: star rating, review text, date and the instructor's reply. Page with `page` — meta.has_more / meta.review_count tell you how many.

ParameterAllowed / rangeDescription
course_idrequiredNumeric Udemy course id to pull reviews for (from the detail action).
page = 1optional1–1000Page number (results are paginated). Page until meta.has_more is false.
page_size = 10optional1–100Reviews per page (1-100, default 10).
Try in playground →
post/udemy/v1/curriculum1 credit

The course outline by id: chapters and lectures in order, with title, position, lecture asset type and whether the lecture is a free preview. Paginated.

ParameterAllowed / rangeDescription
course_idrequiredNumeric Udemy course id (from the detail action).
page = 1optional1–1000Page number (results are paginated). Page until meta.has_more is false.
page_size = 20optional1–100Items per page (1-100, default 20).
Try in playground →
post/udemy/v1/by_instructor1 credit

Browse every course published by a Udemy instructor, by their numeric instructor id. Returns a paginated list of course cards (id, title, rating, price, level, instructors) — use it to discover courses to feed into detail/pricing/reviews/curriculum. Get the instructor id from any course's instructors[] (detail action).

ParameterAllowed / rangeDescription
instructor_idrequiredNumeric Udemy instructor id (the id in a course's instructors[].id, available from the detail action).
page = 1optional1–1000Page number (results are paginated). Page until meta.has_more is false.
page_size = 20optional1–100Items per page (1-100, default 20).
Try in playground →
post/udemy/v1/categories1 credit

The live Udemy category taxonomy (Development, Business, IT & Software, Design, …) with ids, titles and slugs. Pass a category_id to drill into its subcategories. Use this to map the Udemy catalogue structure.

ParameterAllowed / rangeDescription
category_idoptionalOptional. A category id (from this action) to list its subcategories instead of the top-level categories.
Try in playground →