Udemy Scraper | $4 / 1k | All In One
Pricing
$3.99 / 1,000 results
Udemy Scraper | $4 / 1k | All In One
Scrape Udemy into clean, structured course, review and instructor data. $4 per 1,000 results. Capture titles, pricing and discounts, ratings, popularity, lecture counts, levels, languages, images, and profiles. Ideal for course market research, competitor analysis, and building targeted lead lists.
Pricing
$3.99 / 1,000 results
Rating
5.0
(1)
Developer

Fatih Tahta
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Udemy Scraper | All In One
Slug: fatihtahta/udemy-scraper
Overview
Udemy Scraper collects structured course and instructor profile data from Udemy. It turns searches, categories, course pages, and instructor profiles into clean JSON you can use for analysis, enrichment, or pipelines. Runs are automated, consistent, and tuned for high reliability so you can focus on insights instead of maintenance.
Why Use This Actor
- Market researchers and analysts: Track course supply, pricing, ratings, and engagement to benchmark trends over time.
- Product and content teams: Discover gaps, validate ideas, and monitor competitive positioning by language, level, and topic.
- Developers and data engineers: Populate catalogs, build directories, and feed downstream systems with ready-to-use, structured data.
- Lead generation and outreach: Identify instructors, brands, and programs aligned with your audience in a single run.
Input Parameters
Provide any combination of URLs, queries, and filters. Leave optional fields empty to collect broader results.
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | string[] | One or more Udemy search pages, category pages, course links, or instructor profile URLs to scrape directly. | – |
queries | string[] | Search keywords that the actor converts into Udemy search URLs. | – |
rating | string | Minimum star rating to include in results. Allowed values: 3.0, 3.5, 4.0, 4.5. | – |
languages | string[] | Course languages to include (e.g., en, es, tr, pt, plus other supported codes). | – |
levels | string[] | Instructional levels to include: all, beginner, intermediate, expert. | – |
videoDuration | string[] | Video length ranges to include: EXTRA_SHORT, SHORT, MEDIUM, LONG, EXTRA_LONG. | – |
price | string[] | Choose paid, free, or both to control pricing in results. | – |
certificationPrepOnly | boolean | When true, include only certification prep courses. | false |
handsOnPractice | string[] | Require specific practice features: quizzes, coding_exercises, practice_tests, roleplays. | – |
limit | integer | Maximum number of records to save across all inputs. | 50000 |
getComments | boolean | When true, fetch reviews/comments for each discovered course. | false |
commentLimit | integer | Maximum number of reviews to collect per course when review scraping is enabled. | 50000 |
proxyConfiguration | object | Connection settings. The Apify Residential proxy is preselected for reliability. | Apify proxy with RESIDENTIAL group |
Example Input
{"queries": ["python for beginners", "microsoft office bundle"],"startUrls": ["https://www.udemy.com/courses/search/?q=data+analytics"],"rating": "4.0","levels": ["beginner", "intermediate"],"languages": ["en", "es"],"price": ["paid"],"limit": 2000}
Output
The actor writes results to an Apify dataset as a list of JSON records. Each item includes a stable record envelope plus a type-specific payload.
When getComments is enabled (with a positive commentLimit), the dataset also includes course_review records fetched from Udemy. Review collection applies the commentLimit to each course independently.
Record envelope (all items)
Every dataset item includes:
- type (string, required): Record category. Currently:
courseorprofile. - id (number, required): Udemy identifier for the entity.
- url (string, required): Canonical link to the entity page.
Recommended idempotency key:
type + ":" + id
Use this for deduplication and upserts in downstream pipelines.
Examples
Example: instructor profile (type = "profile")
{"type": "profile","id": 254593,"url": "https://www.udemy.com/user/simonsezit/","name": "Simon Sez IT","title": "1,000,000+ Udemy Learners in 190+ Countries","description": "<p>Since 2008, individuals, small businesses, and Fortune 500 companies with thousands of employees have benefited from the easy and hands-on software training offered by Simon Sez IT. With over 12,000 video tutorials on a range of software programs, Simon Sez IT ensures stress-free eLearning and enhanced employee productivity - no matter whether you are implementing new software or a technological upgrade for your workplace. With over 1 million Udemy students in over 190 countries, Simon Sez IT is the preferred online learning choice for individuals and businesses everywhere. </p>","image": "https://img-c.udemycdn.com/user/200_H/254593_efe3_6.jpg","social_links": {"twitter": "https://twitter.com/simonsezit","facebook": "https://www.facebook.com/SimonSezIT","linkedin": "https://linkedin.com//company/simon-sez-it","youtube": "https://www.youtube.com/simonsezittraining","instagram": "","tiktok": "","personal_website": "https://www.simonsezit.com/"},"num_courses": 409,"num_students": 1018377,"num_reviews": 216554,"num_org_students": 0,"has_only_private_courses": false,"has_published_courses_in_mx": true,"organization_courses_only": false,"is_mobile": false,"send_message": false,"new_instructor_profile": true}
Example: course (type = "course")
{"type": "course","id": 2743630,"url": "https://www.udemy.com/course/microsoft-office-excel-word-access-powerpoint/","title": "Ultimate Microsoft Office; Excel, Word, PowerPoint & Access","headline": "Learn basic to advanced Microsoft Office skills in this 9-course bundle for Office 365 or Office 2019","brand": "Simon Sez IT","is_paid": true,"price": 79.99,"currency": "USD","price_detail": {"amount": 79.99,"currency": "USD","price_string": "$79.99","currency_symbol": "$"},"discount": {"price_serve_tracking_id": "yfhjkrepQMqycrd3bYA5tg","price": {"amount": 12.99,"currency": "USD","price_string": "$12.99","currency_symbol": "$"},"list_price": {"amount": 79.99,"currency": "USD","price_string": "$79.99","currency_symbol": "$"},"saving_price": {"amount": 67,"currency": "USD","price_string": "$67.00","currency_symbol": "$"},"has_discount_saving": true,"discount_percent": 84,"discount_percent_for_display": 84,"buyable": { "id": 2743630, "type": "course" },"campaign": {"code": "CM251223G1","start_time": "2025-12-23T08:00:00Z","end_time": "2025-12-23T19:00:00Z","campaign_type": "deal","is_public": true,"is_instructor_created": false,"uses_remaining": null,"maximum_uses": null,"show_code": true},"code": "CM251223G1","is_public": true},"price_serve_tracking_id": "yfhjkrepQMqycrd3bYA5tg","rating_average": 4.5139256,"rating_count": 16388,"avg_rating": 4.4932203,"num_published_lectures": 634,"content_info": "70.5 total hours","instructional_level_simple": "All Levels","caption_languages": ["English [CC]","French [Auto]","German [Auto]","Korean [Auto]","Spanish [Auto]"],"caption_locales": [{ "locale": "de_DE", "title": "Deutsch", "english_title": "German" },{ "locale": "en_US", "title": "English (US)", "english_title": "English (US)" },{ "locale": "es_ES", "title": "Español (España)", "english_title": "Spanish (Spain)" },{ "locale": "fr_FR", "title": "Français (France)", "english_title": "French (France)" },{ "locale": "ko_KR", "title": "한국어", "english_title": "Korean" }],"is_in_user_subscription": false,"is_wishlisted": false,"buyable_object_type": "course","tracking_id": "Lm0Y7UHwQJuDOIPIiRH1nw","learn_url": "https://www.udemy.com/course/microsoft-office-excel-word-access-powerpoint/learn/","published_title": "microsoft-office-excel-word-access-powerpoint","locale": {"locale": "en_US","title": "English (US)","english_title": "English (US)","simple_english_title": "English"},"is_practice_test_course": false,"is_recently_published": false,"is_coding_exercises_badge_eligible": false,"badges": [{"id": "40c6f51bf67d4bffbc6b878229dc32d6","text": "Bestseller","family": "bestseller","context_info": {"category": {"id": 292,"title": "Office Productivity","url": "/courses/office-productivity/","tracking_object_type": "cat"},"subcategory": null,"label": {"id": 6736,"display_name": "Microsoft Office 365","title": "Microsoft Office 365","topic_channel_url": "/topic/microsoft-office-365/","url": "/topic/microsoft-office-365/","tracking_object_type": "cl"}}}],"images": {"image_100x100": "https://img-c.udemycdn.com/course/100x100/2743630_037a_4.jpg","image_125_H": "https://img-c.udemycdn.com/course/125_H/2743630_037a_4.jpg","image_240x135": "https://img-c.udemycdn.com/course/240x135/2743630_037a_4.jpg","image_480x270": "https://img-c.udemycdn.com/course/480x270/2743630_037a_4.jpg"},"instructors": [{ "name": "Simon Sez IT" }]}
Field reference
Profile fields (type = "profile")
- name (string, required): Display name.
- title (string, optional): Headline shown on the profile.
- description (string, optional): HTML-formatted bio/description.
- image (string, optional): Profile image URL.
- social_links (object, optional): Social links (may be empty strings if not provided).
- twitter, facebook, linkedin, youtube, instagram, tiktok, personal_website (string)
- num_courses (number, optional): Total published courses (when available).
- num_students (number, optional): Total learners.
- num_reviews (number, optional): Total reviews across courses.
- num_org_students (number, optional): Organization learners (if present).
- has_only_private_courses (boolean, optional)
- has_published_courses_in_mx (boolean, optional)
- organization_courses_only (boolean, optional)
- is_mobile (boolean, optional)
- send_message (boolean, optional)
- new_instructor_profile (boolean, optional)
Course fields (type = "course")
- title (string, required): Course name.
- headline (string, optional): Short description.
- brand (string, optional): Brand/publisher if present.
- is_paid (boolean, optional): Whether the course is paid at time of extraction.
- price / currency (number/string, optional): Convenience fields for current list price.
- price_detail (object, optional): Price object as displayed by Udemy.
- amount, currency, price_string, currency_symbol
- discount (object, optional): Present when a discounted offer is available.
- price, list_price, saving_price (object)
- discount_percent (number)
- campaign (object, optional): Includes start/end times when provided.
- rating_average / rating_count / avg_rating (number, optional)
- num_published_lectures (number, optional)
- content_info (string, optional): Duration text (as displayed).
- instructional_level_simple (string, optional): Level (e.g., All Levels, Beginner).
- caption_languages (array[string], optional)
- caption_locales (array[object], optional): Locale metadata when available.
- badges (array[object], optional): Course badges (e.g., Bestseller).
- images (object, optional): Thumbnail URLs (multiple sizes).
- instructors (array[object], optional): Instructor list (at least
namewhen available).
Review fields (type = "course_review")
- course_id (number, required): Udemy course ID the review belongs to.
- course_url / course_title (string, optional): Helpful context for the review’s source course.
- id (number, required): Review ID.
- rating (number, optional): Star rating given by the reviewer.
- content / content_html (string, optional): Review body as plain text / HTML.
- created / created_formatted_with_time_since (string, optional): Raw and formatted timestamps.
- user (object, optional): Reviewer metadata such as
public_display_name,initials,image_50x50, andtracking_id. - response (object, optional): Instructor response with
content_html,created, and nestedusermetadata.
Data guarantees & handling
- Best-effort extraction: Records may include only the fields available at run time (geo, login state, experiments, and availability can affect output).
- Optional fields: Many fields are optional by nature. Always null-check in downstream code.
- Deduplication: If the same entity is discovered via multiple inputs, dedupe using
type + ":" + id.
Notes & Limitations
- Use responsibly and respect Udemy’s terms of service.
- Avoid excessive frequency that could disrupt normal site usage.
- Always review collected data for compliance with your organization’s data policies.
Support
Questions or custom needs? Open an issue on the Issues tab of the actor page in Apify Console with (the input you used, the run ID, a short description of the expected vs actual output.). And it will be resolved around the clock.
Happy Scraping,
- Fatih