# MasterClass Email Scraper (`neuro-scraper/masterclass-email-scraper`) Actor

MasterClass Email Scraper SD - MasterClass Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from MasterClass results by keyword, location and email domain - MasterClass email extractor.

- **URL**: https://apify.com/neuro-scraper/masterclass-email-scraper.md
- **Developed by:** [Neuro Scraper](https://apify.com/neuro-scraper) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.49 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### MasterClass Email Scraper — Extract Public Contact Emails from MasterClass Pages

The **MasterClass Email Scraper** collects publicly indexed contact emails that appear on `masterclass.com` pages and returns them as clean, structured data.

**Read this before you run it.** MasterClass has no public member or instructor profile pages with contact details. Results come from class and article pages, so expect very low volume.

That is not a caveat buried in a footnote — it is the single most important fact about this Actor. In one live test the default query returned **zero** emails.

If your goal is a large list of course-creator leads, this is the wrong tool and we would rather tell you now than take the run. Use the [Udemy Email Scraper](https://apify.com/leads-scraper/udemy-email-scraper), [Teachable Email Scraper](https://apify.com/neuro-scraper/teachable-email-scraper) or [Preply Email Scraper](https://apify.com/neuro-scraper/preply-email-scraper) instead — those platforms publish real creator and tutor profiles.

So what is the MasterClass Email Scraper actually for? A narrow job: finding the occasional public contact address printed on a MasterClass class page, press page, partnership page or article.

MasterClass publishes `press@masterclass.com` and `partnerships@masterclass.com` style addresses in public, and its long-form articles sometimes carry a contributor or organisation contact. Those are the realistic targets.

**Important:** the MasterClass Email Scraper never logs into MasterClass, never uses a MasterClass API, and never opens `masterclass.com` itself. Every record comes from publicly indexed Google search results.

***

### What the MasterClass Email Scraper Can and Cannot Do

This table is the honest version. It is worth reading before the feature list.

| Question | Answer |
|---|---|
| Does MasterClass have public instructor profiles with emails? | No. Instructors are celebrities represented by agents; MasterClass does not publish their contact details |
| Does MasterClass have public member profiles? | No |
| What pages does the MasterClass Email Scraper actually read? | Class pages under `/classes/` and article pages under `/articles/` |
| Realistic yield | Very low. Often a handful of rows; sometimes zero |
| Best use | Press, partnership and corporate contact discovery, plus contributor addresses in articles |
| Worse use | Building a large instructor prospect list — that population is not published anywhere on the site |

***

### Key Features of the MasterClass Email Scraper

The engine is the same one used across this Actor family. These features are real; the platform simply gives them very little to work with.

| Feature | What it means in practice |
|---|---|
| Google `site:` search collection | The MasterClass Email Scraper queries Google restricted to `masterclass.com`, so only MasterClass pages are parsed |
| Class and article path awareness | Only `/classes/` and `/articles/` are treated as content paths; `plans`, `gift`, `series`, `press` and similar segments are never mistaken for a handle |
| Query expansion | Each keyword × domain pair is searched in several phrasings: base, quoted, `intitle:`, plus one variant per query modifier |
| Domain-filtered extraction | Only addresses ending in your `customDomains` list are kept |
| Global deduplication | An email appears once across every query and every page of the run |
| Obfuscation-aware parser | Understands `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` will not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Discards a hit that is only the tail of another address in the same result block |
| Structural HTML parsing | Finds the `<h3>` title then the smallest enclosing block — it does not depend on Google's CSS class names |
| Whole-page fallback parser | If Google's markup changes, the run degrades to "emails without account details" rather than "no emails" |
| Concurrency | An `asyncio` worker pool runs several queries in parallel with a shared stop signal on `maxEmails` |
| Retry logic | Up to 3 attempts per page with exponential backoff and a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Blocked-query requeue | Failed or blocked queries are re-queued once at the end of the run |
| Resumable state | Progress is kept in the key-value store keyed by a hash of your input, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Streaming dataset writes | Each lead is pushed to the Apify dataset the moment it is found |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |

***

### How the MasterClass Email Scraper Works

The pipeline is short and deliberately transparent. There is no browser, no JavaScript rendering, no authentication and no cookies.

**1. Read input.** The MasterClass Email Scraper loads your keywords, optional location phrase, email domains and run limits.

**2. Build queries.** It composes Google queries with the `site:` operator, for example `site:masterclass.com instructor "@gmail.com"`.

**3. Fetch search pages.** Requests go out asynchronously with `aiohttp` through the Apify **GOOGLE_SERP** proxy, with retries and a fresh proxy session per attempt.

**4. Parse result blocks.** For each hit the scraper locates the `<h3>` title, walks up to the smallest surrounding block, and reads the title, site label and snippet.

**5. Extract and normalise addresses.** A domain-filtered regex pulls emails out of the block text, then normalisation and the junk filter clean the result.

**6. Deduplicate and push.** Every unique address the MasterClass Email Scraper finds is written to the dataset immediately.

The mechanics are sound. The constraint is upstream: `masterclass.com` simply does not publish many email addresses for Google to index.

#### Why the yield is structurally low

Most creator platforms work because individuals control their own public page and choose to put an address on it.

MasterClass does not work that way. Its instructor roster is celebrity talent represented by agencies, and the site is a polished marketing surface with no user-generated profile layer.

So the MasterClass Email Scraper is scanning a corporate website, not a community — and corporate websites publish a small, fixed number of addresses.

***

### What Data Does the MasterClass Email Scraper Extract?

The MasterClass Email Scraper produces exactly one dataset item per unique email, and every item carries the same 14 fields.

On this platform most rows will come from class or article pages rather than profiles, which means `username` and `profileUrl` are frequently empty.

You still get full provenance: the keyword and the exact Google query behind the lead, plus a UTC timestamp.

Nothing beyond these 14 fields is collected. The MasterClass Email Scraper reports no subscriber data, no video content, no ratings and nothing behind a login.

***

### MasterClass Email Scraper Input Schema

Every field below is taken verbatim from the Actor's input schema, including its default value.

| Field | Type | Default | Description |
|---|---|---|---|
| `keywords` | array (required) | `["instructor", "masterclass"]` | Search terms describing the MasterClass pages you want |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are collected; the leading `@` is optional |
| `maxEmails` | integer (1–10000) | `20` | Stop once this many unique emails have been collected |
| `countryCode` | string | `""` | Two-letter country code for the search proxy (`US`, `GB`, `DE`…) |
| `expandQueries` | boolean | `true` | Search each keyword × domain pair with several phrasings |
| `queryModifiers` | array | `["email", "contact", "enroll", "coaching", "workshop"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer (1–50) | `30` | Page cap per query |
| `maxConcurrency` | integer (1–20) | `5` | How many queries run in parallel |

#### JSON input example

Because volume is low, widen `customDomains` beyond the free-mail defaults — the addresses MasterClass actually publishes sit on its own domain.

```json
{
  "keywords": ["press", "partnerships", "media inquiries"],
  "location": "",
  "customDomains": ["@masterclass.com", "@gmail.com"],
  "maxEmails": 50,
  "countryCode": "US",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "enroll", "coaching", "workshop"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

***

### MasterClass Email Scraper Output Schema

Every dataset item produced by the MasterClass Email Scraper contains all 14 fields listed below.

| Field | Meaning |
|---|---|
| `network` | Platform name |
| `keyword` | The keyword that produced the lead |
| `query` | The exact Google query used |
| `title` | Raw result title |
| `accountName` | Account label Google prints (usually the page or section name here) |
| `fullName` | Display name parsed from a profile-style title; empty for class and article pages |
| `username` | URL-safe handle when MasterClass exposes one; otherwise `null` |
| `profileUrl` | Canonical URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Page snippet, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain (e.g. `@masterclass.com`) |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email — verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

#### JSON output example

This is an honest example: a public corporate contact from an article page, with `username` and `profileUrl` empty because no handle was exposed.

```json
{
  "network": "MasterClass",
  "keyword": "press",
  "query": "site:masterclass.com press \"@masterclass.com\"",
  "title": "Press and Media Inquiries | MasterClass",
  "accountName": "Press and Media Inquiries",
  "fullName": "",
  "username": null,
  "profileUrl": "",
  "url": "https://www.masterclass.com/articles/press-and-media-inquiries",
  "description": "For press and media inquiries, contact press@masterclass.com. For partnership opportunities, write to our partnerships team.",
  "email": "press@masterclass.com",
  "emailDomain": "@masterclass.com",
  "possiblyTruncated": false,
  "foundAt": "2026-08-31T10:21:08Z"
}
```

Do not expect a page of rows like this from the MasterClass Email Scraper. Expect a few, and sometimes none.

***

### How to Use the MasterClass Email Scraper

**Step 1 — set realistic expectations.** Re-read the yield note above. This is a narrow tool, not a lead engine.

**Step 2 — open the Actor.** Launch the [MasterClass Email Scraper](https://apify.com/neuro-scraper/masterclass-email-scraper) on the Apify platform.

**Step 3 — pick keywords aimed at pages, not people.** `press`, `partnerships`, `media`, `careers` and `affiliate` beat instructor names, because instructor pages carry no contact details.

**Step 4 — widen `customDomains`.** Add `@masterclass.com` alongside the free-mail defaults, since corporate addresses are the likeliest hit.

**Step 5 — keep `maxEmails` modest.** Setting it to 500 will not create leads that do not exist in the index; a value like 50 avoids a long run for nothing.

**Step 6 — export.** Download the MasterClass Email Scraper dataset as JSON, CSV or XLSX, or pull it through the Apify API.

If the run comes back light — and it usually will — pivot to a platform with real public profiles, such as the [Skillshare Email Scraper](https://apify.com/neuro-scraper/skillshare-email-scraper) or the **Outschool Email Scraper**.

***

### Use Cases for the MasterClass Email Scraper

These are the scenarios where a low-volume, page-oriented MasterClass Email Scraper run is still worth doing.

| Use case | How the MasterClass Email Scraper helps |
|---|---|
| Press and media outreach | Surface the public press contact printed on MasterClass pages |
| Partnership enquiries | Find the partnership or business-development address when it is published |
| Vendor and supplier pitching | Locate a public corporate contact route rather than a generic web form |
| Affiliate program research | Check whether an affiliate or referral contact is exposed publicly |
| Competitive monitoring | Track which contact routes MasterClass publishes over time by scheduling a run |
| Article contributor discovery | Pick up the occasional contributor or organisation address inside long-form articles |
| Contact-surface auditing | Confirm what a brand exposes to Google's index — useful for your own site audits |
| Category benchmarking | Compare MasterClass's near-zero public contact surface against sibling platforms |

Notice what is absent from the MasterClass Email Scraper use-case list: bulk instructor prospecting. That population does not exist in public on MasterClass, and we will not pretend otherwise.

***

### Why Choose This MasterClass Email Scraper

**It is honest.** This README leads with the limitation instead of hiding it in a footnote, because a run that returns nothing is a waste of your credits.

**It is honest about its source.** The MasterClass Email Scraper reads Google's public index. Nothing more, nothing concealed.

**It is precise.** Domain filtering, boundary-correct matching, obfuscation handling and the junk filter keep noise out of the few rows you do get.

**It is resumable.** A migration or abort does not cost you the run; state is keyed by a hash of your input.

**It is part of a family.** The same engine powers sibling Actors that are far better suited to lead generation, including the [Kajabi Email Scraper](https://apify.com/neuro-scraper/kajabi-email-scraper) and the [Domestika Email Scraper](https://apify.com/neuro-scraper/domestika-email-scraper).

***

### Limitations of the MasterClass Email Scraper

These are real constraints. The first one dominates all the others.

- **MasterClass has no public member or instructor profile pages with contact details.** Results come from class and article pages, so expect very low volume. In one live test the default query returned zero emails.
- **Only publicly indexed emails.** If an address is not visible in Google's index, the MasterClass Email Scraper cannot find it. Private data is never accessed.
- **Google's ~300-result cap.** One query returns roughly 300 results at most. Query expansion exists to work around this, so keep `expandQueries` on.
- **`possiblyTruncated`.** When Google's snippet ellipsis touches an address, the flag is set to `true`. Verify those rows before sending.
- **Apify GOOGLE_SERP proxy required.** The Actor cannot run without Apify proxy credentials.
- **Free-plan cap.** Free Apify plans are limited to 100 emails per run. Paid plans are uncapped — though on this platform you are very unlikely to reach either ceiling.
- **`username` and `profileUrl` availability.** These are only filled in when Google's result exposes a handle. On MasterClass most rows will have an empty `username` and `profileUrl`. That is a Google and platform limitation, not a bug.
- **No guaranteed volume.** Results vary with keywords, domains and location, and on MasterClass the realistic range starts at zero.

Nothing here is affiliated with, endorsed by or officially supported by MasterClass.

***

### Related Actors

Most of these siblings have a much higher yield than the MasterClass Email Scraper. If lead volume is your goal, start there.

| Actor | What it collects |
|---|---|
| [MasterClass Email and Phone Number Scraper](https://apify.com/neuro-scraper/masterclass-email-and-phone-number-scraper) | Emails and phone numbers from MasterClass |
| [MasterClass Phone Number Scraper](https://apify.com/neuro-scraper/masterclass-phone-number-scraper) | Public phone numbers from MasterClass |
| [Academia.edu Email Scraper](https://apify.com/neuro-scraper/academia-edu-email-scraper) | Public contact emails from Academia.edu |
| [Buy Me a Coffee Email Scraper](https://apify.com/neuro-scraper/buy-me-a-coffee-email-scraper) | Public contact emails from Buy Me a Coffee |
| [Carrd Email Scraper](https://apify.com/neuro-scraper/carrd-email-scraper) | Public contact emails from Carrd |
| [Domestika Email Scraper](https://apify.com/neuro-scraper/domestika-email-scraper) | Public contact emails from Domestika |
| [edX Email Scraper](https://apify.com/leads-scraper/edx-email-scraper) | Public contact emails from edX |
| [Gumroad Email Scraper](https://apify.com/leads-scraper/gumroad-email-scraper) | Public contact emails from Gumroad |
| [Kaggle Email Scraper](https://apify.com/neuro-scraper/kaggle-email-scraper) | Public contact emails from Kaggle |
| [Kajabi Email Scraper](https://apify.com/neuro-scraper/kajabi-email-scraper) | Public contact emails from Kajabi |
| [Ko-fi Email Scraper](https://apify.com/neuro-scraper/ko-fi-email-scraper) | Public contact emails from Ko-fi |
| [Linktree Email Scraper](https://apify.com/leads-scraper/linktree-email-scraper) | Public contact emails from Linktree |
| [Meetup Email Scraper](https://apify.com/leads-scraper/meetup-email-scraper) | Public contact emails from Meetup |
| [Pluralsight Email Scraper](https://apify.com/leads-scraper/pluralsight-email-scraper) | Public contact emails from Pluralsight |
| [Preply Email Scraper](https://apify.com/neuro-scraper/preply-email-scraper) | Public contact emails from Preply |
| [ResearchGate Email Scraper](https://apify.com/neuro-scraper/researchgate-email-scraper) | Public contact emails from ResearchGate |
| [Skillshare Email Scraper](https://apify.com/neuro-scraper/skillshare-email-scraper) | Public contact emails from Skillshare |
| [Teachable Email Scraper](https://apify.com/neuro-scraper/teachable-email-scraper) | Public contact emails from Teachable |
| [Udemy Email Scraper](https://apify.com/leads-scraper/udemy-email-scraper) | Public contact emails from Udemy |
| [Academia.edu Email and Phone Number Scraper](https://apify.com/neuro-scraper/academia-edu-email-and-phone-number-scraper) | Emails and phone numbers from Academia.edu |
| [Buy Me a Coffee Email and Phone Number Scraper](https://apify.com/neuro-scraper/buy-me-a-coffee-email-and-phone-number-scraper) | Emails and phone numbers from Buy Me a Coffee |
| [Carrd Email and Phone Number Scraper](https://apify.com/neuro-scraper/carrd-email-and-phone-number-scraper) | Emails and phone numbers from Carrd |
| [Domestika Email and Phone Number Scraper](https://apify.com/neuro-scraper/domestika-email-and-phone-number-scraper) | Emails and phone numbers from Domestika |
| [edX Email and Phone Number Scraper](https://apify.com/neuro-scraper/edx-email-and-phone-number-scraper) | Emails and phone numbers from edX |
| [Gumroad Email and Phone Number Scraper](https://apify.com/leads-scraper/gumroad-email-and-phone-number-scraper) | Emails and phone numbers from Gumroad |
| [Kaggle Email and Phone Number Scraper](https://apify.com/neuro-scraper/kaggle-email-and-phone-number-scraper) | Emails and phone numbers from Kaggle |
| [Kajabi Email and Phone Number Scraper](https://apify.com/neuro-scraper/kajabi-email-and-phone-number-scraper) | Emails and phone numbers from Kajabi |
| [Ko-fi Email and Phone Number Scraper](https://apify.com/neuro-scraper/ko-fi-email-and-phone-number-scraper) | Emails and phone numbers from Ko-fi |
| [Linktree Email and Phone Number Scraper](https://apify.com/leads-scraper/linktree-email-and-phone-number-scraper) | Emails and phone numbers from Linktree |
| [Meetup Email and Phone Number Scraper](https://apify.com/neuro-scraper/meetup-email-and-phone-number-scraper) | Emails and phone numbers from Meetup |
| [Pluralsight Email and Phone Number Scraper](https://apify.com/neuro-scraper/pluralsight-email-and-phone-number-scraper) | Emails and phone numbers from Pluralsight |
| [Preply Email and Phone Number Scraper](https://apify.com/neuro-scraper/preply-email-and-phone-number-scraper) | Emails and phone numbers from Preply |
| [ResearchGate Email and Phone Number Scraper](https://apify.com/neuro-scraper/researchgate-email-and-phone-number-scraper) | Emails and phone numbers from ResearchGate |
| [Skillshare Email and Phone Number Scraper](https://apify.com/neuro-scraper/skillshare-email-and-phone-number-scraper) | Emails and phone numbers from Skillshare |
| [Teachable Email and Phone Number Scraper](https://apify.com/neuro-scraper/teachable-email-and-phone-number-scraper) | Emails and phone numbers from Teachable |
| [Academia.edu Phone Number Scraper](https://apify.com/neuro-scraper/academia-edu-phone-number-scraper) | Public phone numbers from Academia.edu |
| [Buy Me a Coffee Phone Number Scraper](https://apify.com/neuro-scraper/buy-me-a-coffee-phone-number-scraper) | Public phone numbers from Buy Me a Coffee |
| [Carrd Phone Number Scraper](https://apify.com/neuro-scraper/carrd-phone-number-scraper) | Public phone numbers from Carrd |
| [Domestika Phone Number Scraper](https://apify.com/neuro-scraper/domestika-phone-number-scraper) | Public phone numbers from Domestika |
| [edX Phone Number Scraper](https://apify.com/neuro-scraper/edx-phone-number-scraper) | Public phone numbers from edX |
| [Gumroad Phone Number Scraper](https://apify.com/leads-scraper/gumroad-phone-number-scraper) | Public phone numbers from Gumroad |
| [Kaggle Phone Number Scraper](https://apify.com/neuro-scraper/kaggle-phone-number-scraper) | Public phone numbers from Kaggle |

### MasterClass Email Scraper Example Run

A PR agency needs a direct press route into MasterClass instead of a contact form.

They run the MasterClass Email Scraper with `keywords: ["press", "media inquiries", "partnerships"]`, `customDomains: ["@masterclass.com"]` and `maxEmails: 50`.

The run finishes quickly and returns a small handful of rows — corporate addresses from article and help pages, with `username` and `profileUrl` empty.

That is a successful outcome for this Actor. A run that returned two usable press contacts did its job; a run that returns none is also a normal result here.

***

### MasterClass Email Scraper FAQ

#### How many results should I expect from the MasterClass Email Scraper?

Very few, and possibly none. MasterClass has no public member or instructor profile pages with contact details, so results come only from class and article pages. In one live test the default query returned zero emails. Treat anything above a handful of rows as a good run.

#### Why is the yield so low?

Because MasterClass is a polished marketing site with celebrity instructors represented by agents, not a community platform where individuals publish their own contact address.

#### Can the MasterClass Email Scraper find instructor emails?

No. Those addresses are not published on `masterclass.com`, so they are not in Google's index and no Google-based tool can surface them.

#### What should I use instead for real lead volume?

Sibling Actors on platforms with public creator profiles — [Udemy](https://apify.com/leads-scraper/udemy-email-scraper), [Teachable](https://apify.com/neuro-scraper/teachable-email-scraper), **Outschool** or [Preply](https://apify.com/neuro-scraper/preply-email-scraper).

#### Does the MasterClass Email Scraper log into MasterClass?

No. It never logs in, never uses a MasterClass API and never opens `masterclass.com`. All data comes from publicly indexed Google search results.

#### Which keywords work best?

Page-oriented ones: `press`, `partnerships`, `media`, `affiliate`, `careers`. Person-oriented keywords rarely produce anything here.

#### Should I change `customDomains`?

Yes. Add `@masterclass.com`, because the addresses this platform actually publishes are corporate rather than free-mail.

#### Do I need an Apify proxy?

Yes. The MasterClass Email Scraper requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.

#### Why is `username` empty on almost every row?

Because MasterClass results come from class and article pages, which expose no handle. Those rows still carry `accountName` and the page snippet.

#### What does `possiblyTruncated: true` mean?

Google's snippet ellipsis touched the email, so the address may be cut off. Verify those rows before sending anything.

#### Does the MasterClass Email Scraper deduplicate?

Yes, globally. An email appears once per run regardless of how many queries or pages surfaced it.

#### What happens if a run is interrupted?

Progress is stored in the key-value store keyed by a hash of your input and flushed on `PERSIST_STATE`, `MIGRATING` and `ABORTING`, so restarting resumes rather than starting over.

#### Is this affiliated with MasterClass?

No. The MasterClass Email Scraper is an independent tool and is not affiliated with, endorsed by or officially supported by MasterClass.

#### How should I use the results responsibly?

Follow GDPR, CAN-SPAM and any other law that applies to you. Publicly visible does not mean consent to bulk marketing — keep outreach relevant and honour opt-outs.

***

### Leave a review

If the MasterClass Email Scraper saved you time, please leave a star rating and a short review
on the Actor page.

Reviews are how other buyers judge whether a tool works, and they tell us which features to
build next.

If something did not work, email <neurodata.apify@gmail.com>
instead - bugs get fixed faster than they get complained about.

### Support

Questions, bug reports or a custom build request? Email **neurodata.apify@gmail.com** and include your run ID so the MasterClass Email Scraper logs can be checked quickly.

# Actor input Schema

## `keywords` (type: `array`):

Search terms describing the MasterClass accounts you want (niche, job title, industry).

## `location` (type: `string`):

Optional location phrase added to every query (e.g. "New York").

## `customDomains` (type: `array`):

Only emails ending with one of these domains are collected. With or without the leading @. Each domain is searched separately, so more domains means more results but a longer run - remove some for a faster, narrower search, or add your own (e.g. @company.com).

## `maxEmails` (type: `integer`):

Stop once this many unique emails have been collected.

## `countryCode` (type: `string`):

Two-letter country code for the search proxy (e.g. US, GB, DE). Empty for any.

## `expandQueries` (type: `boolean`):

Search each keyword x domain pair with several phrasings. Recommended - Google caps a single query at ~300 results.

## `queryModifiers` (type: `array`):

Extra words combined with each keyword when Expand queries is on. Tuned for MasterClass.

## `maxPagesPerQuery` (type: `integer`):

Google rarely returns more than ~30 pages for one query.

## `maxConcurrency` (type: `integer`):

How many queries run in parallel.

## Actor input object example

```json
{
  "keywords": [
    "instructor",
    "masterclass"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "enroll",
    "coaching",
    "workshop"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Records produced by MasterClass Email Scraper, stored in the run's default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "instructor",
        "masterclass"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "enroll",
        "coaching",
        "workshop"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/masterclass-email-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "instructor",
        "masterclass",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "enroll",
        "coaching",
        "workshop",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("neuro-scraper/masterclass-email-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "instructor",
    "masterclass"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "enroll",
    "coaching",
    "workshop"
  ]
}' |
apify call neuro-scraper/masterclass-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/masterclass-email-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/botAIFdCFr4JzXlQc/builds/l0cbEIHQkSIXvtnsx/openapi.json
