Outschool Class Scraper
Pricing
from $3.00 / 1,000 results
Outschool Class Scraper
Scrape Outschool's live-online and self-paced class catalog for kids and teens. Search by keyword, subject, and format; get pricing, ratings, age/grade ranges, teacher profiles, and schedules. Enrich individual class URLs with full syllabi, learning goals, and teacher bios.
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
7 days ago
Last modified
Categories
Share
Scrape Outschool's catalog of live-online and self-paced classes for kids and teens. Search by keyword, subject, and format; get pricing, ratings, age/grade ranges, teacher profiles, and upcoming schedules. Enrich individual class URLs with full syllabi, learning goals, and teacher bios.
What this actor does
- Two modes:
search(keyword/subject/format search with rich filters) andbyUrls(fetch full details for specific class URLs) - Filters: class type (Academic Curriculum / Tutoring / Electives & Enrichment), subjects, format (live/self-paced), age range, price range, minimum rating, exclude ongoing clubs, only-available
- Sorting: price, rating, or newest
- Rich detail enrichment: full class description, teacher bio/credentials, learning goals, prerequisites, materials, and a lesson-by-lesson syllabus
- No login, no cookies, no paid proxy — public class-catalog data only, via the same GraphQL endpoints Outschool's own site explicitly allow-lists for crawlers in
robots.txt - Empty fields are omitted — every record only contains fields that have real data
Output per class
title— class titlesourceUrl— canonicaloutschool.com/classes/...URLclassSlug— Outschool's class slug IDsummary/quickSummary— class descriptionsubject— top-level subject (e.g.Coding & Tech,Math)classFormat—Live onlineorSelf-PacedageMin/ageMax,gradeLevelMin/gradeLevelMaxdurationMinutes,durationWeeks,weeklyMeetings,meetingCount(mode=byUrls)priceCents/priceDollarsrating,reviewCountsizeMin/sizeMax— class size rangeisClub,isSelfPaced,isFlexSchedule,isOneTime,isAvailable,canEnrollimageUrl,videoUrl,videoThumbnailUrlteacherName,teacherUrl,teacherRating,teacherReviewCount,teacherPhotoUrlnextSectionStart/nextSectionEnd,spotsRemaining(mode=search)sectionCount,openSectionCount,upcomingSectionCount— total / open / upcoming class sections (mode=search)lessonCount,syllabus[](mode=byUrls:title,description,lessonNumber,weekNumber)learningGoals[],prerequisites,materials,classExperience,whyMe(mode=byUrls)teacherAbout,teacherHeadline,teacherCredentials[],teacherCityState,teacherClassCount(mode=byUrls)publishedAt,isPublished,isSoldOut(mode=byUrls)recordType: "class",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byUrls |
searchQuery | string | coding | Free-text query. Leave empty to browse by subject/format only. |
classType | select | – | Course (Academic Curriculum) / Tutoring / Enrichment or Club (Electives & Enrichment). Leave empty for all types. |
subjects | array | – | Coding & Tech / English / Math / Life Skills / Science & Nature / Games & Hobbies / World Languages / Social Studies / Arts / Music / Health & Wellness / Test Prep |
formats | array | – | Live online / Self-Paced |
onlyAvailable | boolean | true | Skip sold-out / non-enrollable classes |
minAge / maxAge | int | – | Age range overlap filter (3-18) |
minPriceDollars / maxPriceDollars | number | – | Price range filter (USD) |
minRating | number | – | Drop classes rated below this (0-5) |
excludeClubs | boolean | false | Skip open-ended clubs, only structured classes |
sortBy | select | relevance | relevance / priceAsc / priceDesc / ratingDesc / newest |
classUrls | array | – | Class URLs to fetch (mode=byUrls) |
maxItems | int | 30 | Hard cap on emitted records (1–500) |
Example: affordable self-paced coding classes for ages 10-14
{"mode": "search","searchQuery": "","subjects": ["Coding & Tech"],"formats": ["Self-Paced"],"minAge": 10,"maxAge": 14,"maxPriceDollars": 100,"sortBy": "priceAsc","maxItems": 50}
Example: highest-rated live math classes
{"mode": "search","searchQuery": "math","formats": ["Live online"],"minRating": 4.5,"sortBy": "ratingDesc"}
Example: enrich specific class URLs with full syllabus
{"mode": "byUrls","classUrls": ["https://outschool.com/classes/all-about-python-coding-level-1-Y3R381hD"]}
Use cases
- Homeschool curriculum planning — build a shortlist of classes filtered by age, subject, and budget
- Edtech competitive analysis — track Outschool's catalog breadth and pricing by subject
- Teacher/instructor research — pull ratings, credentials, and class history for specific educators
- Content gap analysis — compare subject/format coverage against your own platform
- Price benchmarking — analyze pricing distribution across subjects and formats
FAQ
Do I need an Outschool account? No. This actor only reads publicly available class-catalog data through the same GraphQL endpoints Outschool's own class-search page and class-detail pages call — no login, cookies, or paid proxy required.
Why do some classes lack a rating? Newly-listed classes haven't accumulated reviews yet. Use minRating to filter these out if needed.
What's the difference between search and byUrls? search returns catalog-level fields (price, rating, schedule) across many classes at once. byUrls fetches each class's own detail page for richer content — full syllabus, learning goals, prerequisites, and teacher bio — at the cost of one request per class.
How is priceDollars calculated? Outschool prices classes in cents; priceDollars is priceCents / 100.
What does classType filter? Outschool's own top-level browse tabs: Course = Academic Curriculum (structured, sequential courses), Tutoring = 1-on-1 or small-group tutoring, Enrichment or Club = Electives & Enrichment (hobby classes, ongoing clubs/groups). Leave empty to search across all types.
What counts as a "club"? Outschool's open-ended, ongoing group activities (not fixed-length classes). Set excludeClubs: true to only get structured, scheduled classes.
How fresh is the data? Real-time — every run queries Outschool's live class-search index.
How does sortBy (price/rating/newest) work? The actor scans a deeper pool of results (beyond just maxItems) before sorting and truncating, so the top results by price/rating/recency are accurate over a representative slice of the catalog rather than only the first page of relevance-ranked matches.
Limitations
Outschool's robots.txt also allow-lists three GraphQL operations this actor does not currently call (ListingsByActivityUids, ListByFirstListedAt, CategoryPagesByPage) — their exact query documents are not derivable without a live browser session (the GraphQL endpoint uses byte-exact query allow-listing and returns opaque errors for unregistered queries). The search mode with sortBy: "newest" and a deep scan, plus subjects/formats filters, closely approximates what those endpoints would offer.