Discover/Udemy API
live

Udemy APIudemy.com

Search Udemy's course catalog by keyword. Get course titles, URLs, pricing, instructor names, ratings, and pagination metadata via a single API endpoint.

This API takes change requests — .
Endpoint health
verified 11h ago
search_courses
1/1 passing latest checkself-healing
Endpoints
1
Updated
11h ago

What is the Udemy API?

The Udemy API exposes 1 endpoint — search_courses — that queries Udemy's full course catalog and returns up to 9 response fields per course, including title, URL, current and list prices, instructor names, ratings, and review counts. Each call returns a paginated result set of up to 20 courses along with total result and page counts, making it straightforward to traverse large result sets programmatically.

This call costs2 credits / call— charged only on success
Try it
Page number for pagination (1-indexed, max 500).
Search keyword or phrase (e.g. 'python', 'machine learning').
api.parse.bot/scraper/f132e70d-59c6-454e-9850-2c099802235b/<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/f132e70d-59c6-454e-9850-2c099802235b/search_courses?query=python' \
  -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 udemy-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.

"""Walkthrough: Udemy course search — bounded, re-runnable."""
from parse_apis.udemy_com_api import Udemy, InputFormatInvalid

client = Udemy()

# Search for courses on a topic, capped at 5 total results.
for course in client.courses.search(query="machine learning", limit=5):
    print(course.title, f"⭐ {course.rating}", course.current_price)

# Drill into the first result of a different search.
try:
    top_course = client.courses.search(query="python", limit=1).first()
except InputFormatInvalid as e:
    print(f"Invalid search input: {e.message}")
    top_course = None
if top_course is not None:
    print(top_course.title)
    print(top_course.headline)
    print(f"Instructors: {', '.join(top_course.instructors)}")
    print(f"Price: {top_course.current_price} (was {top_course.list_price})")
    print(f"Rating: {top_course.rating} ({top_course.num_ratings} ratings)")
    print(top_course.url)

print("exercised: courses.search")
All endpoints · 1 totalmissing one? ·

Search Udemy courses by keyword. Returns paginated results with course titles, URLs, current and list prices, instructor names, and ratings. Each page contains up to 20 courses. Pagination is controlled by the page parameter; omitting it returns page 1.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-indexed, max 500).
queryrequiredstringSearch keyword or phrase (e.g. 'python', 'machine learning').
Response
{
  "type": "object",
  "fields": {
    "page": "integer current page number",
    "courses": "array of course objects with id, title, url, headline, instructors, rating, num_ratings, current_price, list_price",
    "total_pages": "integer total number of available pages",
    "total_results": "integer total number of matching courses"
  },
  "sample": {
    "data": {
      "page": 1,
      "courses": [
        {
          "id": "2776760",
          "url": "https://www.udemy.com/course/100-days-of-code",
          "title": "100 Days of Code™: The Complete Python Pro Bootcamp",
          "rating": 4.67,
          "headline": "Master Python by building 100 projects in 100 days.",
          "list_price": "$129.99",
          "instructors": [
            "Dr. Angela Yu, Developer and Lead Instructor"
          ],
          "num_ratings": 434164,
          "current_price": "$13.99"
        }
      ],
      "total_pages": 500,
      "total_results": 10000
    },
    "status": "success"
  }
}

About the Udemy API

What the API returns

The search_courses endpoint accepts a required query string and an optional page integer (1-indexed, up to page 500). Each response includes a courses array where every course object carries: id, title, url, headline, instructors (an array of instructor names), rating, num_ratings, current_price, and list_price. The current_price and list_price fields together let you calculate discount amounts and percentages directly from the response.

Pagination and result scope

The response envelope includes page (the current page number), total_pages, and total_results. Each page contains up to 20 courses, and you can request up to page 500, giving access to as many as 10,000 results per query. The total_results field reflects Udemy's ranking and filtering logic for the given keyword, so the same term queried at different times may return different counts as the catalog changes.

Practical notes

The headline field returns the short subtitle that appears under a course title on Udemy — useful for topic classification or duplicate detection when the title alone is ambiguous. The url field returns the canonical course path, which can be combined with the https://www.udemy.com base to construct a direct link. Ratings are floating-point values and num_ratings is an integer count, so you can sort or threshold results client-side without additional lookups.

Reliability & maintenanceVerified

The Udemy API is a managed, monitored endpoint for udemy.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when udemy.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 udemy.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.

Last verified
11h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
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
  • Build a course comparison tool that surfaces current_price vs list_price discounts across a keyword search
  • Aggregate instructor names from search results to identify which educators dominate a given topic
  • Monitor total_results over time for a keyword to track growth or decline in a subject area on Udemy
  • Populate an affiliate site with live course titles, URLs, and pricing pulled from paginated search_courses calls
  • Filter courses by rating threshold to surface only highly-rated options for a curated learning path tool
  • Index Udemy course headlines and titles for a semantic search or recommendation engine
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Udemy have an official developer API?+
Yes. Udemy offers an official Affiliate API documented at https://www.udemy.com/developers/affiliate/. It requires an approved affiliate account and provides access to course listings and pricing. This Parse API serves as an alternative that does not require Udemy affiliate credentials.
What does the search_courses endpoint return beyond basic course info?+
Each course object includes id, title, url, headline, instructors (array), rating, num_ratings, current_price, and list_price. The envelope adds page, total_pages, and total_results for pagination. There is no per-course curriculum breakdown, lecture count, or enrollment count in the response.
Are course reviews or individual student review text available?+
Not currently. The API returns aggregate rating and num_ratings per course but does not expose individual review text, reviewer profiles, or review dates. You can fork this API on Parse and revise it to add a course reviews endpoint if that data is needed.
Can I retrieve a specific course by its ID or URL rather than by keyword search?+
Not currently. The single search_courses endpoint accepts a keyword query and returns matching results; there is no lookup-by-ID or lookup-by-URL endpoint. You can fork this API on Parse and revise it to add a course detail endpoint that accepts a course ID or slug.
How deep can pagination go, and are there gaps in coverage for large result sets?+
The page parameter accepts values from 1 to 500, and each page returns up to 20 results, so at most 10,000 results are accessible per query. Udemy's own ranking logic determines which courses appear and in what order; courses beyond the 10,000-result boundary for a broad query will not be reachable by incrementing the page parameter alone.
Page content last updated . Spec covers 1 endpoint from udemy.com.
Related APIs in EducationSee all →
faradars.org API
Search and explore thousands of Persian video courses on Faradars, discovering detailed information about each course including its category, description, and curriculum. Browse through available course categories to find educational content that matches your learning interests.
duolingo.com API
Browse Duolingo's complete language course catalog to discover available courses, see how many learners are enrolled in each, and identify the source and target language pairs offered. Find the perfect language learning path by viewing all courses in one place.
ucas.com API
Search and explore UK university courses, apprenticeships, and scholarships all in one place, while discovering detailed information about education providers and their offerings. Find the perfect educational path by filtering courses and apprenticeships by your preferences and accessing comprehensive provider details to inform your decisions.
coloso.global API
Discover and browse Coloso's entire course catalog by searching products, filtering by categories, and viewing details on new releases, best sellers, and free classes. Get insights into promotional events, trending keywords, and personalized recommendations to find the perfect creative courses.
su.se API
Search and explore Stockholm University's complete course catalog to find specific courses, browse academic programs, check class schedules, and discover available subjects. Get detailed information about any course offering to plan your studies and manage your academic schedule.
urbanoutfitters.com API
Search Urban Outfitters' catalog to find products and browse categories, then view detailed information including prices, descriptions, color and size availability for each item. Check current sale counts and discover what's trending across the store's product lineup.
myschool.ng API
Search for Nigerian schools by type, explore courses and admission requirements, and stay updated with the latest education news all in one place. Find detailed information about schools and their programs to make informed decisions about your education.
limitlesslifenootropics.com API
Access data from limitlesslifenootropics.com.