Egghead Courses Scraper
Pricing
from $3.00 / 1,000 results
Egghead Courses Scraper
Scrape egghead.io's programming course catalog. Search or browse by content type, look up a course's full syllabus by slug, or list every lesson taught by a specific instructor.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Egghead Scraper
Scrape egghead.io — a curated catalog of concise, expert-taught programming courses, lessons, articles, podcasts, talks, and tips covering React, TypeScript, Node, AWS, testing, and modern web development. Search or browse the full catalog, pull a course's complete syllabus, or list every lesson from a specific instructor. No login, no API key, no cookies required.
What this actor does
- Three modes:
search(full-text search / catalog browse),byCourseSlugs(full course syllabus lookup),byInstructor(all lessons by one teacher) - 8 content types: courses, lessons, articles, podcasts, talks, tips, case studies, guides
- Filters: tag/topic, instructor name, free-only content, sort order
- Full syllabi: course lookups include the ordered lesson list with per-lesson duration and free/pro status
- Instructor profiles: bio, Twitter, website, and avatar attached to every lesson in
byInstructormode - Empty fields are omitted — every record only contains data egghead actually returned
Output fields
Search / browse mode (mode=search)
contentType—course,lesson,article,podcast,talk,tip,caseStudy, orguidecontentIdtitle,summary,descriptionslug,sourceUrlimageUrlinstructorName,instructorSlug,instructorUrl,instructorAvatarUrlcontributorsprimaryTag,primaryTagImageUrl,tags[]freeForeverpublishedAt,updatedAtrecordType,scrapedAt
Course lookup mode (mode=byCourseSlugs)
courseId,title,slug,sourceUrltagline,summary,descriptiondurationSeconds,freeForever,published,courseState(published/retired),accessState(free/pro)imageUrlratingOutOf5,ratingCountinstructorName,instructorSlug,instructorUrl,instructorAvatarUrl,instructorTwitter,instructorWebsiteprimaryTag,tags[],frameworks[],libraries[],tools[],languages[],platforms[],topics[],skillsets[],skillLevels[]publishedAt,updatedAtlessons[]— ordered syllabus:{ title, slug, sourceUrl, itemType, itemState, durationSeconds, freeForever, isProContent, mediaUrl }(itemType/mediaUrlare only present for non-lesson syllabus entries, e.g. an embeddedpodcastepisode — most syllabus items are plain lessons and omit them)lessonCountrecordType,scrapedAt
Instructor lessons mode (mode=byInstructor)
lessonId,title,slug,sourceUrl,summary,transcriptdurationSeconds,freeForever,isProContent,lessonState(published/retired),playsCountthumbnailUrl,hlsUrl,dashUrl(video stream URLs — omitted for login-gated Pro lessons)publishedAtprimaryTag,frameworks[],libraries[],tools[]instructorName,instructorSlug,instructorUrl,instructorBio,instructorTwitter,instructorWebsite,instructorAvatarUrlrecordType,scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byCourseSlugs / byInstructor |
searchQuery | string | react | Free-text query (mode=search) |
contentType | string | course | One of the 8 content types (mode=search) |
tag | string | – | Filter by tag/topic, e.g. typescript |
instructorName | string | – | Exact instructor full name (mode=search) |
sortBy | string | relevance | relevance / newest / oldest (mode=search) |
freeOnly | boolean | false | Only include free (non-Pro) content — works in every mode (see FAQ) |
courseSlugs | array | – | Course slugs or URLs (mode=byCourseSlugs) |
instructorSlug | string | – | Instructor slug or URL (mode=byInstructor) |
maxItems | integer | 30 | Hard cap on emitted records (1–500) |
Example: search for React courses
{"mode": "search","searchQuery": "react","contentType": "course","sortBy": "newest","maxItems": 30}
Example: full syllabus for one or more courses
{"mode": "byCourseSlugs","courseSlugs": ["the-beginner-s-guide-to-react"]}
Example: every lesson by an instructor
{"mode": "byInstructor","instructorSlug": "kent-c-dodds","freeOnly": true,"maxItems": 100}
Use cases
- Curriculum research — discover the newest courses on a framework before recommending a learning path
- Content aggregation — build a technology-focused learning feed (React, AWS, testing, etc.)
- Instructor research — audit a teacher's full catalog and free vs. Pro split
- EdTech competitive analysis — track course counts, durations, and tags across topics
- Link auditing — verify course/lesson URLs before publishing a resource list
FAQ
Do I need an egghead account or API key? No. Every mode uses egghead's own public, unauthenticated endpoints — the same ones the egghead.io website itself calls from your browser.
What's the difference between "search" and "browse"? Leave searchQuery blank (or set it to *) to browse the full catalog for a contentType sorted however you like, without a text query.
Why do some lessons show isProContent: true but no hlsUrl/dashUrl? Egghead's paid ("Pro") lessons keep their metadata (title, summary, duration, tags) public, but the playable video stream is login-gated, so hlsUrl/dashUrl are omitted for Pro lessons. transcript is a separate field — egghead publishes it for most lessons regardless of Pro status, but not all (some newer Pro lessons omit it too); when present it's always included. Set freeOnly: true (mode=byInstructor) to skip Pro content entirely.
Does freeOnly work in search mode? Yes. Egghead's public search index (the same one powering the website's own search box) is filterable by access tier server-side even though it doesn't return a free/Pro field on individual hits — so freeOnly: true in search mode drops Pro-only results, but the emitted records won't carry an isProContent/freeForever field (the upstream index doesn't expose the value itself, only the ability to filter by it). The per-instructor lessons endpoint (mode=byInstructor) does return the flag directly, so records from that mode do carry freeForever/isProContent.
What does a course slug look like? Most newer egghead course slugs end in a short hash, e.g. up-and-running-with-tanstack-router-and-react~mhvqt; older courses use a plain slug with no hash, e.g. the-beginner-s-guide-to-react. You can paste the full course URL instead — the actor extracts the slug automatically either way.
How is contentType: caseStudy different from article? Both are text content, but egghead tags in-depth "how I learned to code" narratives as case studies and shorter dev-news pieces as articles.
How fresh is the data? Live — every request hits egghead's production API directly, so results reflect the catalog at the moment the actor runs.