Preply Tutor Directory Scraper avatar

Preply Tutor Directory Scraper

Pricing

Pay per event

Go to Apify Store
Preply Tutor Directory Scraper

Preply Tutor Directory Scraper

Scrape the Preply tutor directory for language and subject tutors. Extracts name, subjects, native language, country of birth, hourly rate (USD), trial lesson price, rating, review count, lesson count, languages spoken, profile URL, and badges.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Scrape the Preply tutor directory for all subjects and languages. Preply is one of the world's largest online tutoring marketplaces with 40,000+ tutors across 179 subjects. This actor extracts structured tutor profiles from Preply's listing pages without requiring individual profile page visits.

What data does it extract?

Each tutor record includes:

FieldDescription
tutor_idUnique Preply tutor ID
nameTutor full name (first name + last initial)
subjects_taughtList of subjects taught (e.g. English, Spanish, Math)
native_languageTutor's native language(s)
country_of_birthCountry of birth
hourly_rate_usdHourly lesson rate in USD
trial_lesson_price_usdTrial lesson price in USD
ratingAverage rating (0–5 scale)
reviews_countTotal number of student reviews
lessons_countTotal number of lessons completed
languages_spokenLanguages spoken with proficiency level (e.g. English (Native))
profile_urlFull URL to the tutor's Preply profile
badgesAchievement badges (e.g. Super Tutor, Top 5)

How does it work?

The actor uses Preply's Next.js __NEXT_DATA__ JSON embedded in each listing page — no JavaScript rendering required. It:

  1. Loads the English tutors seed page to discover all 179 subject slugs
  2. Paginates through each subject's tutor listing (e.g. /en/online/english-tutors?page=N)
  3. Extracts all tutor fields directly from the embedded JSON — no per-profile page visits needed
  4. Respects maxItems to cap the result count

Input

ParameterTypeDefaultDescription
maxItemsinteger15Maximum number of tutor records to scrape

Output

Results are saved to the default dataset. Example record:

{
"tutor_id": "311304",
"name": "Louise M.",
"subjects_taught": ["English"],
"native_language": "English",
"country_of_birth": "United Kingdom",
"hourly_rate_usd": 36,
"trial_lesson_price_usd": 18,
"rating": 4.99,
"reviews_count": 25,
"lessons_count": 3275,
"languages_spoken": ["French (C2)", "Arabic (C2)", "English (Native)", "Spanish (A1)", "Italian (A1)"],
"profile_url": "https://preply.com/en/tutor/311304",
"badges": []
}

Use cases

  • Language school lead generation — identify tutors by subject and native language for outreach
  • Pricing intelligence — benchmark hourly rates across subjects and countries of origin
  • Marketplace research — analyze tutor supply, rating distributions, and lesson volume by subject
  • Competitor analysis — track tutor counts and quality signals across Preply's subject catalog

Notes

  • Prices are normalized to USD using Preply's seoPrice field (always factor=1)
  • 179 subjects are crawled; tutors teaching multiple subjects appear on multiple subject listing pages
  • Set a low maxItems (e.g. 100–1000) for targeted sampling
  • robots.txt specifies crawl-delay: 10; the actor respects this with conservative concurrency