We extract tutor profiles, pricing structures, availability matrices, and review corpora from Italki. Delivered as clean JSON, CSV, or Parquet to S3, BigQuery, or Snowflake on your cadence.
Structured, schema-consistent data across all major object types — delivered clean, typed, and ready to query.
Complete list of extractable fields for Teacher Profiles objects from italki.com. All fields typed and schema-versioned.
"tutor_id": "T849201", "display_name": "Maria G.", "tutor_type": "Professional Teacher", "average_rating": 4.9, "students_count": 412, "lessons_count": 1845, "teaches_languages": "['Spanish (Native)']"
| # | tutor_id | display_name | tutor_type | teaches_languages | speaks_languages | average_rating |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Pricing & Lessons objects from italki.com. All fields typed and schema-versioned.
"tutor_id": "T849201", "lesson_title": "DELE Exam Preparation", "category": "Test Preparation", "duration_mins": 60, "price_single": 25.0, "price_package": 115.0, "trial_available": true
| # | tutor_id | lesson_title | category | duration_mins | price_single | price_package |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Availability Calendar objects from italki.com. All fields typed and schema-versioned.
"tutor_id": "T849201", "date_utc": "2026-05-14", "start_time_utc": "14:00:00", "end_time_utc": "15:00:00", "status": "available", "original_timezone": "Europe/Madrid", "scraped_at": "2026-05-12T08:11:00Z"
| # | tutor_id | date_utc | start_time_utc | end_time_utc | status | slot_id |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Reviews objects from italki.com. All fields typed and schema-versioned.
"review_id": "REV99281", "tutor_id": "T849201", "student_name": "James L.", "rating": 5, "review_text": "Maria is incredibly patient and explains grammar perfectly.", "review_date": "2026-04-22"
| # | review_id | tutor_id | student_name | rating | review_text | review_date |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Complete list of extractable fields for Search Results objects from italki.com. All fields typed and schema-versioned.
"keyword": "spanish native speaker", "rank_position": 4, "tutor_id": "T849201", "base_price": 18.0, "rating": 4.9, "is_online": false, "scraped_at": "2026-05-12T08:15:22Z"
| # | keyword | rank_position | tutor_id | display_name | base_price | rating |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | ||||||
| 3 |
Our Italki scraper handles every layer of the platform: tutor profiles, dynamic availability calendars, complex pricing structures, and the review corpus. JavaScript rendering and anti-bot circumvention are built in.
Capture display names, tutor types, native languages, introduction text, video URLs, and overall statistics scraped at the profile level.
Extract available booking slots across a 30-day window. We hydrate the JavaScript calendar widgets and normalise all times to UTC.
Capture individual lesson rates, bulk package discounts, and trial lesson pricing across different lesson categories.
Map the exact languages a tutor teaches against the languages they speak, including proficiency levels.
Extract full review text, star ratings, student details, and lesson counts paginated across all tutor reviews.
Track tutor visibility for specific language queries and filters, capturing organic rank positions.
Log the real-time online indicator for tutors to correlate availability with search visibility.
Italki displays times based on local browser settings. We enforce UTC standardisation across all extracted calendar data.
Run one-off bulk exports or configure continuous pipelines at hourly or daily cadences with change-detection diffing.
Brief in. Clean data out.
Provide target languages, tutor types, or specific profile URLs. We design the extraction schema together.
We configure Playwright crawlers, proxy rotation, and session management to handle Italki dynamic calendars.
Schema validation, null-rate checks, and timezone conversion tests before full launch.
JSON, CSV, or Parquet pushed to your S3 bucket, BigQuery dataset, or Snowflake stage on agreed cadence.
Extracting accurate availability and pricing requires deep JavaScript execution and timezone management. Here is how we build resilient pipelines.
Italki availability calendars are heavily JavaScript-rendered and require complex interaction to paginate through weeks. We run full Playwright browser sessions to trigger lazy-loads and extract all open booking slots.
The platform renders calendar times based on the client browser timezone. We force strict UTC contexts in our headless browsers to ensure all extracted availability data is standardised and comparable.
Frequent requests to tutor search endpoints trigger rate limits. Our crawlers use residential ISP proxies with realistic browser fingerprints and randomised request timing to maintain pipeline stability.
Tutor profiles vary wildly based on tutor type and completed sections. Our selector strategy uses fallback chains to ensure missing optional fields do not break the extraction of core pricing and rating data.
For tracking tutor availability, we maintain a hash index of last-seen slots. Subsequent runs only push diffs, reducing compute cost and downstream processing load.
Language learning platforms monitor Italki pricing structures, tutor counts, and lesson types to benchmark their own offerings.
Marketplaces track hourly rates by language and tutor type to optimise their own dynamic pricing algorithms.
Aggregators track the volume of active tutors per language pair to identify supply shortages and recruitment opportunities.
Analysts correlate review velocity and booked slots with specific languages to measure shifts in global language learning demand.
Companies evaluate the density of native speakers offering lessons in emerging markets before launching localised services.
ML teams use structured tutor profiles and review text to train matching algorithms and sentiment analysis models.
"Italki holds the most comprehensive dataset on global language tutoring rates and availability, but none of it is queryable unless you build the pipeline."
Most teams underestimate the investment required: reliable Italki scraping requires residential proxies, full JavaScript rendering for dynamic calendars, daily selector maintenance, and complex timezone normalisation. DataFlirt absorbs that complexity so your engineers can focus on the analysis, not the infrastructure.
Everything supported by our italki.com scraper — rendered SPA elements, auth walls, rate-limit evasion and beyond.
Open-source tooling on proven cloud infra — no vendor lock-in, full observability.
Scrapy handles crawl orchestration and deduplication. Playwright handles JavaScript rendering, calendar pagination, and interaction flows.
We maintain pools of residential ISP proxies. Rotation happens per-request with sticky sessions where required to load continuous calendar views.
Pipelines run on AWS Lambda and ECS. Airflow handles scheduling, dependency management, and SLA alerting. All state stored in managed Postgres.
Data delivered to where your team already works — no new tooling required.
About italki.com scraping, legality, and pipeline operations.
Ask us directly →Scraping publicly available information from Italki is generally permissible. DataFlirt targets only public, non-authenticated tutor profiles, pricing, calendars, and review data. We do not extract private student data or circumvent authentication walls.
We use full Playwright browser sessions to render the JavaScript calendar widgets. Our crawlers paginate through the UI to extract all available slots and strictly convert local browser times to UTC for standardisation.
Yes. Every pipeline run produces timestamped snapshots. We maintain a time-series table per tutor for base rates, package prices, and trial lesson costs.
Full catalogue refreshes at daily cadence complete within a 4-8 hour window. For specific subsets of high-volume tutors, we can configure hourly runs to track real-time calendar availability.
Our smallest packages start at a defined set of languages or a specific list of tutor URLs with weekly delivery. We price based on volume and delivery frequency.
Absolutely. We provide a sample run of up to 500 tutor profiles as part of the pre-engagement scoping process so you can validate schema fit and data quality.
20-minute scoping call. Pilot dataset within the week. Production within two. Whether you need a one-off tutor catalogue dump or a continuous availability monitoring feed, we scope, build, and operate the pipeline. Tell us what you need.