Egghead Courses Scraper avatar

Egghead Courses Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Egghead Courses Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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 byInstructor mode
  • Empty fields are omitted — every record only contains data egghead actually returned

Output fields

Search / browse mode (mode=search)

  • contentTypecourse, lesson, article, podcast, talk, tip, caseStudy, or guide
  • contentId
  • title, summary, description
  • slug, sourceUrl
  • imageUrl
  • instructorName, instructorSlug, instructorUrl, instructorAvatarUrl
  • contributors
  • primaryTag, primaryTagImageUrl, tags[]
  • freeForever
  • publishedAt, updatedAt
  • recordType, scrapedAt

Course lookup mode (mode=byCourseSlugs)

  • courseId, title, slug, sourceUrl
  • tagline, summary, description
  • durationSeconds, freeForever, published, courseState (published / retired), accessState (free / pro)
  • imageUrl
  • ratingOutOf5, ratingCount
  • instructorName, instructorSlug, instructorUrl, instructorAvatarUrl, instructorTwitter, instructorWebsite
  • primaryTag, tags[], frameworks[], libraries[], tools[], languages[], platforms[], topics[], skillsets[], skillLevels[]
  • publishedAt, updatedAt
  • lessons[] — ordered syllabus: { title, slug, sourceUrl, itemType, itemState, durationSeconds, freeForever, isProContent, mediaUrl } (itemType/mediaUrl are only present for non-lesson syllabus entries, e.g. an embedded podcast episode — most syllabus items are plain lessons and omit them)
  • lessonCount
  • recordType, scrapedAt

Instructor lessons mode (mode=byInstructor)

  • lessonId, title, slug, sourceUrl, summary, transcript
  • durationSeconds, freeForever, isProContent, lessonState (published / retired), playsCount
  • thumbnailUrl, hlsUrl, dashUrl (video stream URLs — omitted for login-gated Pro lessons)
  • publishedAt
  • primaryTag, frameworks[], libraries[], tools[]
  • instructorName, instructorSlug, instructorUrl, instructorBio, instructorTwitter, instructorWebsite, instructorAvatarUrl
  • recordType, scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / byCourseSlugs / byInstructor
searchQuerystringreactFree-text query (mode=search)
contentTypestringcourseOne of the 8 content types (mode=search)
tagstringFilter by tag/topic, e.g. typescript
instructorNamestringExact instructor full name (mode=search)
sortBystringrelevancerelevance / newest / oldest (mode=search)
freeOnlybooleanfalseOnly include free (non-Pro) content — works in every mode (see FAQ)
courseSlugsarrayCourse slugs or URLs (mode=byCourseSlugs)
instructorSlugstringInstructor slug or URL (mode=byInstructor)
maxItemsinteger30Hard 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.