Superprof Scraper icon

Superprof Scraper

Scrape Superprof tutors by subject and location, or paste tutor URLs. One rich record per tutor: name, photo, price, rating, reviews count, subjects,…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Superprof Scraper at a glance

Superprof Scraper is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes tutor, headline, change type (incremental mode), price/h and 5h pack, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Jobs, Lead Generation, Ecommerce
Pricing
$1.80 per 1,000 results (Free plan), from $1.00 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
23 options

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.

What Superprof Scraper can do

  • One rich record per tutor covering price, 5h/10h pack rates, rating, review count, badge, response time, lesson format, subjects taught and profile photo.
  • Two ways to find tutors: search by subject and location, or paste tutor pages and results links directly.
  • Filters that actually narrow the search: hourly price, minimum rating, lesson format, webcam availability and free first lesson apply in search mode and to a pasted results link alike.
  • Optional per-tutor enrichment pulls city, subjects taught and the full profile description straight from each tutor's own page, billed only for tutors that are actually returned.
  • Resume a capped or interrupted run with one pasted run id, and the run survives a platform restart automatically with no duplicate tutors and no double charges.
  • Incremental mode for recurring monitoring: schedule the same search and later runs return only new and updated tutors by default (reappeared tutors need an earlier run that completed a full scan with Emit expired tutors on).

Choose what to collect

These inputs let you configure Superprof Scraper - Tutors, Lessons, Prices & Ratings. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose how to find tutors. 'search' runs subject and location searches with filters. 'url' scrapes the tutor pages or results URLs you paste.

Choices: search, url

subjectsarrayOne or more subjects to search, e.g. 'Mathematics', 'Guitar', 'Spanish'. Each subject is searched independently against each location.
locationsarrayOne or more places to search, e.g. 'New York', 'London', 'United States'. Leave empty for a country-wide search. Each location is paired with each subject.
urlsarrayMulti-URL mode: paste Superprof tutor page URLs (e.g. https://www.superprof.com/.html) or results URLs. The fields in the Filters and sort section still apply to a pasted results URL; a pasted tutor page returns that one tutor. A results URL collects across its available pages up to Max items. Only www.superprof.com is supported; other Superprof country sites and other hosts are skipped with a warning.
lessonTypestringRestrict to a lesson format. Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.

Choices: any, online, face_to_face

minPriceintegerOnly return tutors charging at least this much per hour (in the local currency of the search location). Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.
maxPriceintegerOnly return tutors charging at most this much per hour. Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.
Show 16 more inputs
More input fields
InputWhat it controls
minRatingintegerOnly return tutors with an average rating at or above this value (1 to 5). Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.
onlyWebcambooleanWhen on, only tutors who offer lessons by webcam are returned. Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.
onlyFirstLessonFreebooleanWhen on, only tutors who offer a free first lesson are returned. Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.
sortBystringOrder of the results returned by the search. Applies in BOTH search mode and URL mode: a pasted results URL is re-queried through the same search feed, so the filter is sent with it. It does not narrow a pasted tutor page, which returns that one tutor.

Choices: relevance, distance

fetchDetailsbooleanWhen on, each tutor is enriched from its profile page with city, subjects taught and the full description. When off, only the rich results fields are returned (no per-tutor fetch).
reviewLimitintegerMaximum number of student reviews (and recommendation notes) returned per tutor profile (needs Fetch full tutor profiles). Values above 50 are lowered to 50. Set 0 to return none.
maxPagesintegerSafety ceiling on how many result pages to walk per search. Empty or 0 (default) means unlimited -- the walk continues until the source's own page count is reached. This does NOT cap the number of items; use Max items for that.
maxItemsintegerMaximum number of tutors to collect across the whole run. The single overall limit. Set 0 for unlimited.
resumeFromRunIdstringOptional. Paste a previous run id (or its dataset id) to continue that run: tutors already collected there are skipped, so this run returns only new tutors (a delta). For recurring daily monitoring of the same search, use Incremental mode below instead.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/URL and filter settings -- different searches then never mix state with each other.
emitUnchangedbooleanOff by default. Turn on to also return tutors that have not changed since the last run, marked UNCHANGED. This returns -- and bills -- extra rows you already have, so leave it off unless you specifically want the full snapshot every run.
emitExpiredbooleanOff by default. Turn on to also return tutors that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search or URL set -- not when Max items or Max pages capped it, or when Resume was used. This returns -- and bills -- extra synthetic rows, so leave it off unless you need expiry tracking.
ignoreFieldsForChangesarrayOptional. Top-level field names to exclude from UPDATED change detection, in addition to the built-in exclusions (scrapedAt, distance, resultTier). Use it when a field is noisy in your setup, for example a field that changes without the tutor really changing. Ignored fields stay in the output; they just never make a tutor UPDATED.
mcpConnectorsarrayOptional. Connect MCP servers (Notion, Linear, Airtable, Apify) to push the scraped tutors straight into your tools after the run.
notionParentPageUrlstringOptional. When a Notion MCP connector is set, the URL of the Notion page under which a results database is created.
maxNotifyListingsintegerOptional. Cap on how many tutors are pushed to the connected MCP apps.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

teacherNameTutor (text)
titleHeadline (text)
changeTypeChange type (incremental mode) (text)
pricePrice/h (number)
price_5H5h Pack (number)
price_10H10h Pack (number)
price_webcamWebcam/h (number)
typeLesson Type (text)
teacherCityCity (text)
stat_starsRating (number)
stat_count_reviewsReviews (number)
stat_count_recommendationsRecommendations (number)
Show 28 more fields
statusStatus (text)
is_superprofSuperprof (boolean)
is_verified_memberVerified (boolean)
has_videoVideo (boolean)
has_interviewInterview (boolean)
levelsLevels (array)
native_languageNative Language (text)
subjectsSubjects (array)
offer_lesson_first_is_free1st Free (boolean)
venue_can_moveTravels (boolean)
venue_can_receiveHosts (boolean)
responseTimeDescResponse (text)
teacherPhotoPhoto (image)
latLat (number)
lngLng (number)
urlURL (link)
search_urlSearch URL (link)
scrapedAtScraped (text)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
languagesLanguages (array)
recommendationsRecommendations (array)
experienceExperience (text)
teachingTeaching (text)
explicationsDescription (text)
venue_max_distanceMax distance (text)
reviewsreviews

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "id_annonce": "10000001",
  "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",
  "teacherPhoto": "https://example.com/photo.jpg",
  "price": 30,
  "price_1H": 30,
  "prices": {
    "hourly": 30,
    "firstHour": 30,
    "currency_hint": null
  },
  "teacherCity": "New York",
  "city": "New York",
  "country": "US",
  "lat": 40.7128,
  "lng": -74.006,
  "subjects": [
    "Mathematics",
    "Algebra",
    "Statistics"
  ],
  "subjects_raw": [
    "Mathematics",
    "Algebra",
    "Statistics"
  ],
  "badge": "Ambassador",
  "is_ambassador": true,
  "is_available": true,
  "search_url": "https://www.superprof.com/s/mathematics,New-York,,,,.html",
  "sex": "female",
  "is_superprof": true,
  "is_verified_member": true,
  "stat_count_reviews": 120,
  "stat_stars": 5,
  "response_time_sec": 3600,
  "offer_lesson_first_is_free": true,
  "offer_lesson_first_lesson_duration": "0hr30",
  "stat_count_recommendations": 15,
  "status": "Ambassador",
  "price_5H": 100,
  "price_10H": 200,
  "price_webcam": 30,
  "price_with_travel": null,
  "offers": [
    {
      "type": "hourly",
      "price": 30
    },
    {
      "type": "pack_5h",
      "price": 100
    },
    {
      "type": "pack_10h",
      "price": 200
    },
    {
      "type": "webcam",
      "price": 30
    }
  ],
  "levels": [
    "All Levels"
  ],
  "has_all_levels": true,
  "native_language": "English",
  "languages": [
    "English"
  ],
  "experience": "Sample tutor bio placeholder.",
  "teaching": "Sample lesson approach placeholder.",
  "explications": "Sample lesson approach placeholder.",
  "interview": [
    {
      "question": "1) When did you start tutoring?",
      "answer": "Sample answer placeholder."
    }
  ],
  "has_interview": true,
  "video": null,
  "has_video": false,
  "gallery": [
    "https://example.com/photo.jpg"
  ],
  "reviews": [
    {
      "author": "Sam",
      "rating": 5,
      "text": "Perfect! Great lesson.",
      "answers": [
        {
          "author": "Drew",
          "text": "Sample tutor response placeholder."
        }
      ]
    }
  ],
  "recommendations": [
    {
      "author": "Alex",
      "text": "Sample recommendation note placeholder."
    }
  ],
  "has_valid_diploma": true,
  "venue_can_move": false,
  "venue_can_receive": false,
  "venue_can_receive_individually": false,
  "venue_can_receive_several_students": false,
  "venue_max_distance": null,
  "creation_date": null,
  "update_date": "2026-02-23T09:41:38Z",
  "contact_label": "Contact",
  "contact_url": null,
  "emails": [],
  "cv": null,
  "department": null,
  "teacherId": "20000001",
  "key": "a1b2c3d4",
  "webcam": true,
  "faceToFace": false,
  "responseTimeDesc": "Responds within 1 hour",
  "description": "Sample tutor bio placeholder.",
  "searchMode": "search",
  "sourceUrl": "https://www.superprof.com/sample-tutor-headline.html",
  "scrapedAt": "2026-01-01T00:00:00+00:00"
}

Ways to use this data

  • Tutoring marketplaces and comparison sites: build a searchable directory of tutors with live pricing, ratings and availability.
  • Price and market research: track average hourly rates and pack pricing by subject and city over time.
  • Lead generation for tutoring businesses: find tutors in a subject and location with profile links ready to review.
  • Recurring monitoring: schedule the actor to catch new tutors, price changes and tutors who stop listing.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Superprof Scraper return?

The documented output for Superprof Scraper includes tutor, headline, change type (incremental mode), price/h, 5h pack, 10h pack, webcam/h and lesson type. Availability of each field depends on the source page and the selected mode.

How much does Superprof Scraper cost?

It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed tutors on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated tutors, and unchanged ones are not billed unless you opt in. Reappeared and expired tutors only appear once an earlier run had Emit expired tutors on and completed a full scan.

Why did my run fail instead of returning an empty dataset?

If the connection is refused before any page can be read, or every request during the run is rejected with nothing getting through, the run stops with a clear error message instead of completing with zero tutors, so "nothing matched" is never confused with "nothing could be read". A genuinely empty search (the connection worked, but no tutors matched) still succeeds normally with an empty dataset and a status message explaining why.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Superprof Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.