SYSTEM all green source outschool.com queue 14,392 pages p99 latency 185ms dataflirt.com · scraper/outschool-com
RUN · 42 active pipelines · outschool.com live

Outschool data,
at warehouse scale.

We extract class listings, educator profiles, scheduling data, pricing, and learner reviews from Outschool. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.

Classes extracted
142K /day
Educator profiles
18.4K /run
Schedule updates
315K /24h
Active pipelines
42
Uptime
99.98%
Data Dictionary

Every field we extract from outschool.com

Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.

Complete list of extractable fields for Class Listings objects from outschool.com. All fields typed and schema-versioned.

class_idtitlesummaryeducator_ideducator_namesubjectformatage_minage_maxpricecurrencyduration_minutesmeeting_countclass_sizeratingreview_count
class_listings
● 200 OK
"class_id": "cls_8f92j1k",
"title": "Introduction to Python Programming for Teens",
"educator_name": "Sarah Jenkins",
"format": "Live Online",
"age_min": 13,
"age_max": 17,
"price": 120.0,
"rating": 4.9,
"review_count": 342
# class_idtitlesummaryeducator_ideducator_namesubject
1
2
3

Complete list of extractable fields for Educator Profiles objects from outschool.com. All fields typed and schema-versioned.

educator_idnameheadlinebiototal_reviewstotal_learnerstotal_classesaverage_ratingresponse_timejoined_datevideo_urlprofile_image_url
educator_profiles
● 200 OK
"educator_id": "edu_99x2m4",
"name": "Sarah Jenkins",
"headline": "Former Software Engineer teaching coding",
"total_reviews": 1205,
"total_learners": 4500,
"total_classes": 18,
"average_rating": 4.9,
"joined_date": "2021-04-12"
# educator_idnameheadlinebiototal_reviewstotal_learners
1
2
3

Complete list of extractable fields for Schedules & Availability objects from outschool.com. All fields typed and schema-versioned.

schedule_idclass_idstart_dateend_datemeeting_timestimezoneavailable_seatstotal_seatsstatuspricecurrency
schedules_& availability
● 200 OK
"schedule_id": "sch_77b3n1",
"class_id": "cls_8f92j1k",
"start_date": "2026-06-01",
"end_date": "2026-06-22",
"available_seats": 2,
"total_seats": 10,
"status": "Enrolling",
"price": 120.0
# schedule_idclass_idstart_dateend_datemeeting_timestimezone
1
2
3

Complete list of extractable fields for Reviews objects from outschool.com. All fields typed and schema-versioned.

review_idclass_ideducator_idreviewer_nameratingreview_textdate_postedlearner_agehelpful_votesreply_textreply_date
reviews
● 200 OK
"review_id": "rev_44k9p2",
"class_id": "cls_8f92j1k",
"reviewer_name": "Michelle T.",
"rating": 5,
"review_text": "My son loved this class and built his first game.",
"date_posted": "2026-05-10",
"learner_age": 14,
"helpful_votes": 12
# review_idclass_ideducator_idreviewer_nameratingreview_text
1
2
3

Complete list of extractable fields for Search Results objects from outschool.com. All fields typed and schema-versioned.

keywordpositionclass_idtitleeducator_namepriceratingreview_countformat_badgeage_rangethumbnail_urlscraped_at
search_results
● 200 OK
"keyword": "python coding",
"position": 3,
"class_id": "cls_8f92j1k",
"title": "Introduction to Python Programming for Teens",
"price": 120.0,
"rating": 4.9,
"format_badge": "Live",
"scraped_at": "2026-05-12T10:15:00Z"
# keywordpositionclass_idtitleeducator_nameprice
1
2
3

Capabilities

Everything you need from Outschool

Our Outschool scraper handles the dynamic nature of the platform: live schedule availability, educator metrics, nested subject categories, and paginated reviews with strict schema validation.

Comprehensive Class Extraction

Extract titles, descriptions, format types, age ranges, meeting counts, and pricing for every published class.

Live Schedule Tracking

Monitor cohort start dates, meeting times, available seats, and enrollment status across multiple timezones.

Educator Intelligence

Capture educator biographies, total learner counts, aggregate review scores, and historical class listings.

Learner Review Mining

Extract full review text, star ratings, learner ages, and educator replies across all class pages.

Search Rank Tracking

Monitor class positions for specific subject keywords to understand marketplace visibility.

Subject Taxonomy Mapping

Map classes to Outschool's internal category tree from high-level subjects down to specific topics.

Pricing & Format Analysis

Track price per hour, subscription pricing, and one-time fees across Live, Flex, and Group formats.

Change Detection

Identify new class launches, price adjustments, and schedule additions without processing redundant data.

High-Frequency Updates

Run pipelines daily to capture fast-moving seat availability and schedule changes.

// engagement pipeline

From subject list to warehouse record

Brief in. Clean data out.

Define Scope
d 0

Provide subject categories, educator IDs, or search keywords. We design the extraction schema together.

Pipeline Build
d 2–4

We configure Scrapy crawlers, handle React hydration for schedules, and manage proxy rotation.

Validation & QA
d 4–6

Schema validation, null-rate checks, and schedule alignment verification before full launch.

Delivery
ongoing

JSON, CSV, or Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.

Under the hood

How our Outschool pipeline handles the hard parts

EdTech marketplaces rely heavily on client-side rendering for scheduling and availability. Here is how we ensure data completeness.

pipeline-monitor · outschool.com · live ● active
// fingerprinting
Identity rotation
TLS fingerprintrandomised
User-agentrotated
IP poolresidential
Challenges blocked0
// pagination
Page coverage
48,291 pages queued running
// observability
Pipeline health
99.9%
uptime
142ms
p99 lat
0.3%
null rate
2
alerts
Dynamic Scheduling
Client-side React hydration

Outschool class schedules and available seat counts load dynamically via JavaScript after the initial page request. We use Playwright to execute the JavaScript context, wait for network idle states, and extract the fully rendered schedule matrices.

Timezone Normalisation
Consistent UTC scheduling data

Class times are displayed based on the requesting IP's local timezone. Our infrastructure normalises all extracted meeting times to UTC, preventing data corruption when proxies route through different geographic locations.

Pagination Limits
Deep category traversal

Search results and category pages often cap visible results. We bypass these arbitrary UI limits by iterating through the underlying API endpoints and filtering by granular age ranges to ensure 100% catalogue coverage.

Anti-bot layer
Residential proxy rotation

Frequent requests to educator profiles and class listings trigger rate limits. We distribute requests across a pool of US-based residential proxies, maintaining low concurrency per IP to avoid detection and ensure uninterrupted extraction.

Schema stability
Resilient selectors for UI updates

Marketplaces frequently A/B test their class detail pages. We extract primary data directly from the Next.js application state (__NEXT_DATA__) rather than relying solely on fragile DOM selectors.

Applications

Who uses Outschool data and how

Teams across industries use outschool.com data to build competitive products and smarter operations.

01
Competitor Pricing Analysis

EdTech platforms benchmark their class pricing, subscription models, and hourly rates against Outschool averages.

02
Curriculum Gap Identification

Content creators analyze class volume and review counts across subjects to identify underserved topics.

03
Educator Supply Tracking

Marketplace operators monitor the growth of active educators and their class output to understand supply-side dynamics.

04
Demand Forecasting

Analysts correlate available seats with total seats over time to estimate enrollment velocity and gross marketplace value.

05
Format Trend Analysis

Strategy teams track the shift between Live Online, Flex, and Group classes to align their own product roadmaps.

06
Investment Due Diligence

Private equity firms analyze review sentiment, pricing trends, and catalogue size to evaluate marketplace health.

Why DataFlirt

"Outschool holds the definitive dataset on supplementary K-12 online education, but mapping dynamic schedules to static records requires dedicated infrastructure."

Most teams underestimate the complexity of scraping ed-tech marketplaces. Outschool relies on heavy client-side rendering for schedule availability and localised pricing. DataFlirt handles the JavaScript execution, proxy rotation, and schema normalisation so your engineers can focus on analysis rather than maintenance.

Technical Spec

Outschool scraper technical capabilities

Everything supported by our outschool.com scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.

JavaScript rendering
Full Playwright sessions required for schedule and seat availability data
Supported
Schedule extraction
Detailed capture of cohort start dates, meeting times, and remaining seats
Supported
Educator metrics
Aggregate review scores, total learner counts, and historical class listings
Supported
Search ranking
Track class positions for specific subject keywords
Supported
Change detection (diffs)
Hash-based diff to only emit records with changed fields since last run
Supported
Timezone normalisation
All schedule times converted to UTC regardless of proxy location
Supported
Learner messages/inbox
Private communication between parents and educators
Partial
Private Zoom URLs
Meeting links hidden behind enrollment and authentication walls
Partial
Infrastructure

Infrastructure powering the Outschool pipeline

Open-source tooling on proven cloud infra — no vendor lock-in, full observability.

ScrapyPlaywrightPython 3.12RedisPostgreSQLApache AirflowAWS LambdaS3CloudWatch2CaptchaCapSolverResidential ProxiesDockerKubernetesGrafanaPrometheus
Scrapy + Playwright Stack

Scrapy handles crawl orchestration, deduplication, and retry logic. Playwright handles JavaScript rendering, cookie sessions, and interaction flows. Combined via scrapy-playwright middleware.

Residential Proxy Infrastructure

We maintain pools of residential ISP proxies across US regions. Rotation happens per-request with sticky sessions where required. IP score monitoring prevents blacklisted pool contamination.

Cloud-Native Orchestration

Pipelines run on AWS Lambda (burst) and ECS (sustained). Airflow handles scheduling, dependency management, and SLA alerting. All state stored in managed Postgres.

Output & Delivery

Your data, your destination

Data delivered to where your team already works — no new tooling required.

JSON
Newline-delimited or nested array structures
CSV
Flat file with typed columns for tabular analysis
XLS
Excel compatible format for business users
Parquet
Columnar format for BigQuery, Snowflake, Athena
AWS S3
Direct bucket delivery compatible with any data lake
Webhook
HTTP POST per record for real-time downstream processing
API
REST endpoints to query your extracted datasets
PostgreSQL
Direct inserts into your relational database schema
S3
Direct bucket delivery — compatible with any data lake
// faq

Common questions.

About outschool.com scraping, legality, and pipeline operations.

Ask us directly →
Is scraping Outschool legal?

Scraping publicly available information is generally permissible under applicable law. DataFlirt targets only public, non-authenticated class, educator, and schedule data. We do not extract personal learner data or circumvent authentication walls.

How do you handle dynamic schedule widgets?

We use headless browsers via Playwright to execute the client-side React code, allowing the schedule components to fully hydrate before extraction.

Can you track available seats over time?

Yes. By running pipelines on a daily cadence, we capture the available seat count for specific class cohorts, allowing you to calculate enrollment velocity.

Do you extract educator contact information?

We extract all public data on the educator profile, including their bio and aggregate metrics. We do not extract private email addresses or direct messaging endpoints.

How fresh is the schedule data?

Pipelines can be configured to run daily or sub-daily depending on your requirements. Change-detection ensures you only process updated schedules.

Can I request a sample dataset?

Yes. We provide a sample run of up to 500 classes as part of the pre-engagement scoping process so you can validate schema fit and data quality.

$ dataflirt scope --new-project --source=outschool.com ready

Tell us what
to extract.
We do the rest.

20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off catalogue export or continuous schedule monitoring across thousands of classes, we build and operate the pipeline. Tell us what you need.

hello@dataflirt.com · Bengaluru · IST · typical reply < 4h
Related Scrapers

More in education and courses

Services

Data Extraction for Every Industry

View All Services →