Superprof Scraper $1πŸ’° Tutors, Lessons, Prices & Ratings avatar

Superprof Scraper $1πŸ’° Tutors, Lessons, Prices & Ratings

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Superprof Scraper $1πŸ’° Tutors, Lessons, Prices & Ratings

Superprof Scraper $1πŸ’° Tutors, Lessons, Prices & Ratings

From $1/1K. Scrape Superprof tutors by subject and location, or paste tutor URLs. One rich record per tutor: name, photo, price, rating, reviews count, subjects, city, geo, response time, lesson type and more. Filter by price, rating and lesson type.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

11 days ago

Last modified

Share

Superprof Tutor Scraper

Collect private tutors and their lesson listings from Superprof at scale. Search by subject and location, or paste tutor and results URLs, and get one clean, structured record per tutor: name, photo, hourly price, average rating and review count, subjects taught, city, lesson type, response time and more.

Why This Scraper?

  • One rich record per tutor with name, price, rating, reviews count, badge, response time, lesson type and photo variants.
  • Dual input: search by subject and location, or paste specific tutor pages and results URLs.
  • Filter by hourly price, minimum rating, lesson type, webcam availability and free first lesson.
  • No artificial page ceiling by default, just one overall item cap; set maxPages if you want a safety limit instead.
  • Resume an interrupted full-catalogue run with resumeFromRunId, and the run survives a platform migration or Resurrect automatically -- no duplicate tutors, no double charges.
  • Incremental & dedup mode for recurring/scheduled monitoring: turn on incrementalMode and the actor remembers the previous run of the same search itself, returning only NEW, UPDATED and REAPPEARED tutors by default (EXPIRED and UNCHANGED are opt-in, and both bill extra rows).
  • Optional per-tutor enrichment adds city, subjects taught and the full description.
  • Push results straight into Notion, Linear, Airtable or Apify through MCP connectors.
  • Runs on any Apify plan, including the free tier.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
id_annonce"0000000"
teacherName"Jane Doe"
title"Personalized math lessons for all levels"
url"https://www.superprof.com/sample-tutor-headline.html"
price30
price_1H30
type"webcam"
teacherCity"New York"
city"New York"
country"US"
lat40.712800
lng-74.006000
rating_score5
rating_count120
rating_label"120 reviews"
badge"Ambassador"
is_ambassadortrue
subjects["Mathematics", "Physics"]
firstHourFree1
firstFreeDuration"0hr30"
offer_lesson_first_is_freetrue
price_5H100
price_10H200
price_webcam30
offers[{"type": "hourly", "price": 30}]
stat_stars5
stat_count_reviews120
stat_count_recommendations15
status"Ambassador"
is_superproftrue
is_verified_membertrue
has_valid_diplomatrue
has_videotrue
video"https://www.youtube.com/watch?v=XXXXXXXXXXX"
has_interviewtrue
interview[{"question": "1) ...", "answer": "..."}]
levels["All Levels"]
has_all_levelstrue
native_language"English"
languages["English"]
experience"Hi, I'm Jane ..."
teaching"I teach algebra ..."
reviews[{"author": "Sam", "text": "Great tutor!"}]
gallery["https://example.com/photo.jpg"]
venue_can_movefalse
venue_can_receivetrue
sex"female"
responseTimeDesc"Responds within 5 hours"
response_time_sec18000
webcamtrue
faceToFacefalse
teacherPhoto"https://example.com/photo.jpg"
search_url"https://www.superprof.com/s/mathematics,New-York,,,,.html"

How to Use

Search a subject in a location:

{
"mode": "search",
"subjects": ["Mathematics"],
"locations": ["New York"],
"maxItems": 20
}

Search with filters:

{
"mode": "search",
"subjects": ["Guitar"],
"locations": ["London"],
"lessonType": "online",
"minRating": 5,
"maxPrice": 40,
"onlyFirstLessonFree": true,
"maxItems": 50
}

Scrape specific URLs:

{
"mode": "url",
"urls": [
"https://www.superprof.com/s/mathematics,United-States,,,,.html",
"https://www.superprof.com/sample-tutor-headline.html"
],
"fetchDetails": true
}

Monitor a search daily and get only what changed:

{
"mode": "search",
"subjects": ["Mathematics"],
"locations": ["New York"],
"incrementalMode": true,
"emitExpired": true,
"maxItems": 0
}

Resume and recurring updates

Two different features, both optional:

  • Resume (resumeFromRunId): continue ONE specific interrupted run or full-catalogue pull. Paste a previous run id or dataset id and this run returns only tutors it did not already collect. Use it once, after an interruption or a large capped-off pull.

  • Incremental mode (incrementalMode): for scheduling this actor to run again and again against the SAME search or URL set (e.g. daily). The actor remembers its own state -- no run id to paste. Every tutor is classified:

    • NEW -- never seen before.
    • UPDATED -- a comparable field changed since last time; changedFields names exactly which.
    • UNCHANGED -- nothing changed. Suppressed by default; turn on emitUnchanged to also get these rows (and be billed for them).
    • REAPPEARED -- was marked EXPIRED before, and is back.
    • EXPIRED -- was tracked before and is no longer found. Only ever produced after a run that proved a complete scan of the tracked search or URL set (no maxItems/maxPages cap hit, and no resumeFromRunId). Off by default; turn on emitExpired to get these rows (and be billed for them).

    By default (both toggles off) a recurring run returns only NEW, UPDATED and REAPPEARED tutors -- exactly what changed. State is scoped automatically to the search/URL and filter combination you use (stateKey lets you name a campaign explicitly, or deliberately share state across differently-configured runs).

    incrementalMode and resumeFromRunId can combine to bootstrap: the first incremental run for a search can also resume from a prior plain run, seeding the new baseline from it. Once a baseline exists for a stateKey, adding resumeFromRunId on a later run fails fast with a clear message instead of silently guessing.

Input Parameters

ParameterTypeDescription
modeselect"search" for subject/location searches, "url" to scrape pasted URLs.
subjectsarraySubjects to search, e.g. "Mathematics", "Guitar". Search mode only.
locationsarrayPlaces to search, e.g. "New York". Empty means country-wide. Search mode only.
lessonTypeselectRestrict to "any", "online" or "face_to_face".
minPriceintegerOnly tutors charging at least this much per hour.
maxPriceintegerOnly tutors charging at most this much per hour.
minRatingintegerOnly tutors with an average rating at or above this value (1 to 5).
onlyWebcambooleanOnly tutors who offer lessons by webcam.
onlyFirstLessonFreebooleanOnly tutors who offer a free first lesson.
sortByselectResult order: "relevance" or "distance".
urlsarrayTutor page URLs or results URLs to scrape. URL mode only.
fetchDetailsbooleanAdds city, subjects taught and the full description from the tutor's profile.
maxPagesintegerSafety ceiling on result pages per search. 0 (default) is unlimited -- the walk continues until the source's own page count is reached. Does not cap items.
maxItemsintegerMaximum tutors collected across the whole run. The single overall limit. 0 is unlimited.
resumeFromRunIdstringPaste a previous run id (or its dataset id) to continue that run: tutors already collected there are skipped, so this run only returns new tutors (a delta). Leave empty for a normal run.
incrementalModebooleanTurn on for recurring/scheduled monitoring of the same search or URL set. Returns NEW/UPDATED/REAPPEARED by default; see "Resume and recurring updates" above.
stateKeystringOptional. Name a monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Auto-derived from the search/URL/filter setup when left empty.
emitUnchangedbooleanIncremental mode only. Also return (and bill) tutors unchanged since the last run, marked UNCHANGED. Off by default.
emitExpiredbooleanIncremental mode only. Also return (and bill) tutors no longer found, marked EXPIRED -- only after a complete scan. Off by default.
proxyobjectConnection settings. The default works on every plan.
mcpConnectorsarrayOptional MCP servers (Notion, Linear, Airtable, Apify) to receive the results.
notionParentPageUrlstringOptional Notion page URL under which a results database is created.
maxNotifyListingsintegerOptional cap on how many tutors are pushed to the connected apps.

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"id_annonce": "0000000",
"teacherName": "Jane Doe",
"title": "Personalized math lessons for all levels",
"url": "https://www.superprof.com/sample-tutor-headline.html",
"landing_url": "https://www.superprof.com/s/mathematics,United-States,,,,.html",
"type": "webcam",
"price": 30,
"price_1H": 30,
"prices": { "hourly": 30, "firstHour": 30, "currency_hint": null },
"teacherCity": "New York",
"city": "New York",
"country": "US",
"lat": 40.712800,
"lng": -74.006000,
"subjects": ["Mathematics", "Physics"],
"badge": "Ambassador",
"is_ambassador": true,
"is_available": true,
"teacherId": "00000000",
"teacherPhoto": "https://example.com/photo.jpg",
"teacherRating": { "average": 5, "count": 120, "label": "120 reviews" },
"rating_score": 5,
"rating_count": 120,
"rating_label": "120 reviews",
"firstHourFree": 1,
"firstFreeDuration": "0hr30",
"offer_lesson_first_is_free": true,
"price_5H": 100,
"price_10H": 200,
"price_webcam": 30,
"offers": [{ "type": "hourly", "price": 30 }, { "type": "pack_5h", "price": 100 }],
"stat_stars": 5,
"stat_count_reviews": 120,
"stat_count_recommendations": 15,
"status": "Ambassador",
"is_superprof": true,
"is_verified_member": true,
"has_valid_diploma": true,
"has_video": true,
"video": "https://www.youtube.com/watch?v=XXXXXXXXXXX",
"has_interview": true,
"interview": [{ "question": "1) When did you start tutoring?", "answer": "..." }],
"levels": ["All Levels"],
"has_all_levels": true,
"native_language": "English",
"languages": ["English"],
"experience": "Hi, I'm Jane ...",
"teaching": "I teach algebra ...",
"reviews": [{ "author": "Sam", "text": "Great tutor!" }],
"gallery": ["https://example.com/photo.jpg"],
"venue_can_move": false,
"venue_can_receive": true,
"sex": "female",
"is_feminin": 1,
"verified": 1,
"webcam": true,
"faceToFace": false,
"responseTime": 5,
"responseTimeDesc": "Responds within 5 hours",
"response_time_sec": 18000,
"search_url": "https://www.superprof.com/s/mathematics,New-York,,,,.html",
"description": "Sample description placeholder.",
"scrapedAt": "2026-01-01T00:00:00+00:00"
}

Send results into your apps (MCP connectors)

Connect one or more MCP servers to push the scraped tutors straight into your tools after a run finishes. Set mcpConnectors to the servers you want (Notion, Linear, Airtable, Apify). For Notion, set notionParentPageUrl to the page under which a results database is created, and use maxNotifyListings to cap how many tutors are sent. The export is a side channel: it never changes or blocks the dataset output.

Connection and proxy

The only connection setting you control is the standard Proxy object. Everything else is handled automatically. There are no extra proxy tuning fields to set.

  • Defaults that just work. The default proxy setting enables Apify Proxy and is recommended for the most reliable results. You can leave it as is.
  • Automatic IP handling. Each request uses a fresh exit IP, and a failing exit is replaced automatically, so a single bad IP does not stall the run.
  • Cost stays bounded. The actor keeps connection usage within a sensible internal budget for the run, so a large run cannot run up unbounded proxy cost.
  • Runs without paid proxy. If Apify Proxy access is not available, the actor logs a clear message and still completes the run; results may be less reliable.
  • Survives interruption. The run periodically checkpoints its progress, so if the platform restarts it (a server migration, or you use Resurrect) it picks up where it left off instead of starting over: no duplicate tutors and no double charges. No input is needed for this; it is automatic.

Plan Requirement

This actor runs on any Apify plan, including the free tier.