# Reed Email Scraper (`neuro-scraper/reed-email-scraper`) Actor

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

- **URL**: https://apify.com/neuro-scraper/reed-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

### Reed Email Scraper: UK Recruiter and Employer Contacts from reed.co.uk

The Reed Email Scraper collects publicly indexed email addresses from reed.co.uk and delivers them as a clean, deduplicated Apify dataset.

Reed is one of the longest-running job boards in the United Kingdom, and it carries both employer vacancies and a very large training and courses catalogue. Both publish contact addresses.

One thing to know up front: **reed.co.uk indexes job and course pages more than recruiter profiles, so most rows carry an email without a resolvable handle.** The email is still there; the company page URL usually is not.

The Reed Email Scraper does not log in, does not use the Reed API and never opens the Reed website. It reads Google search results through the Apify GOOGLE_SERP proxy and extracts emails from the snippets.

#### Who the Reed Email Scraper is built for

UK-focused HR-tech and ATS vendors use the Reed Email Scraper to reach employers who are visibly struggling to fill roles. Recruitment agencies use it to find client companies, never candidates.

Umbrella companies, payroll bureaus, apprenticeship-levy consultancies and workplace-benefits brokers work the same list. So do employer-branding studios and any B2B seller who treats headcount growth as a buying signal.

**Candidate data is out of scope.** The Reed Email Scraper returns employer, recruiter and training-provider contacts only. It does not collect jobseeker names, CVs, applications or any other candidate personal data.

### Key features of the Reed Email Scraper

| Feature | What it means in practice |
|---|---|
| Google `site:` search | Every query targets `reed.co.uk` using the `site:` operator |
| Query expansion | Base, quoted and `intitle:` phrasings plus one variant per query modifier; base queries run first |
| Domain filtering | Only emails ending in a domain from `customDomains` are kept |
| Global deduplication | Each address appears once across every query and page in the run |
| Email normalisation | 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` never matches inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Discards a hit that is only the tail of another email in the same result block |
| Structural parsing | Locates the `<h3>` title then the smallest surrounding block, independent of Google CSS class names |
| Whole-page fallback | A Google markup change degrades to "emails without account details", not "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not treated as empty |
| Retries and re-queue | Up to 3 attempts per page with exponential backoff and a fresh proxy session; failed queries retry once at the end |
| Resumable state | Key-value store state keyed by an input hash, saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Async concurrency | An `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Streaming output | Leads reach the dataset as they are found, so aborted runs are still useful |
| Run summary | Pages fetched, blocked pages, retries and emails per page are logged |

Everything listed ships in the Reed Email Scraper today. No hidden modes, no paid add-ons.

### How the Reed Email Scraper works

No browser, no JavaScript rendering, no authentication, no cookies. Six steps, start to finish.

1. The Reed Email Scraper reads keywords, location, email domains and limits from your input.
2. It builds Google queries with the `site:` operator, for example `site:reed.co.uk recruiter "@gmail.com" "Manchester"`.
3. It fetches result pages asynchronously with `aiohttp` through the Apify GOOGLE_SERP proxy.
4. It parses each result block structurally rather than by CSS class name.
5. It extracts emails with a domain-filtered regex.
6. It deduplicates globally and pushes each lead straight to the dataset.

Google caps a single query at roughly 300 results, so query expansion is how the Reed Email Scraper widens coverage. Keep `expandQueries` on.

#### Measured Reed Email Scraper performance

In a real ten-page run the Reed Email Scraper returned 10 result blocks, resolved 2 account identities, produced 2 profile URLs and yielded 2 unique emails.

That is a modest result and worth being plain about. Reed is not the highest-yield source in this family, and the low identity count follows directly from the indexing pattern described above.

Reed still earns a place in a UK programme because the addresses it does surface are genuine employer and provider contacts. Pair the Reed Email Scraper with the [Totaljobs Email Scraper](https://apify.com/leads-scraper/totaljobs-email-scraper), which shows a similar shape but higher email yield.

Results vary with keywords, domains and location. That run is one observation and no volume is guaranteed.

### Reed Email Scraper input fields

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["recruiter", "hiring"]` | Search terms describing the reed.co.uk pages you want |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are kept; 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 |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email", "contact", "apply", "recruiter", "hiring"]` | 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 |

Only `keywords` is required, so the Reed Email Scraper will run on defaults while you experiment.

#### Tuning Reed Email Scraper location and countryCode for the UK

Reed is a single-country board, so set `countryCode` to `GB` and leave it there. That one change materially improves the relevance of what the Reed Email Scraper returns.

`location` then does the real segmentation work. `London`, `Manchester`, `Birmingham`, `Leeds`, `Glasgow`, `Bristol` and `Cardiff` each surface a different employer set.

Do not overlook regional phrases. `Milton Keynes`, `Reading`, `Newcastle upon Tyne` and `Belfast` pull SMEs that a London-weighted query never reaches.

Keyword choice matters more than usual because Reed mixes jobs with training. `recruitment agency`, `apprenticeship`, `training provider`, `CIPD` and `payroll` each isolate a distinct cohort.

Because yield is the constraint here, widen `customDomains`. Add `@outlook.com`, `@hotmail.co.uk`, `@btinternet.com` and `@yahoo.co.uk` alongside the defaults.

#### Example Reed Email Scraper input

```json
{
  "keywords": ["recruiter", "hiring", "recruitment agency", "training provider"],
  "location": "Manchester",
  "customDomains": ["@gmail.com", "@yahoo.com", "@outlook.com", "@hotmail.co.uk"],
  "maxEmails": 250,
  "countryCode": "GB",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "apply", "recruiter", "hiring"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

### Reed Email Scraper output fields

Every dataset item the Reed Email Scraper writes carries all fourteen fields 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 |
| `fullName` | Display name parsed from a profile-style title; empty for listing snippets |
| `username` | URL-safe handle when Reed exposes one; otherwise `null` |
| `profileUrl` | Canonical company URL when a handle is known; otherwise empty |
| `url` | Direct reed.co.uk link when exposed, else the profile URL |
| `description` | Snippet text, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email |
| `foundAt` | ISO 8601 UTC timestamp |

#### Example Reed Email Scraper output

```json
[
  {
    "network": "Reed",
    "keyword": "recruitment agency",
    "query": "site:reed.co.uk \"recruitment agency\" \"@gmail.com\" \"Manchester\"",
    "title": "Warehouse Operative - Trafford Park | Reed.co.uk",
    "accountName": "Pennine Staffing",
    "fullName": "",
    "username": null,
    "profileUrl": "",
    "url": "https://www.reed.co.uk/jobs/warehouse-operative-trafford-park/54120118",
    "description": "Immediate starts across Trafford Park. Send your CV to pennine.staffing@gmail.com to register.",
    "email": "pennine.staffing@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T11:20:41Z"
  },
  {
    "network": "Reed",
    "keyword": "training provider",
    "query": "site:reed.co.uk intitle:\"training provider\" \"@outlook.com\"",
    "title": "Northgate Skills Academy | Courses | Reed.co.uk",
    "accountName": "Northgate Skills Academy",
    "fullName": "Northgate Skills Academy",
    "username": "northgate-skills-academy",
    "profileUrl": "https://www.reed.co.uk/company/northgate-skills-academy",
    "url": "https://www.reed.co.uk/company/northgate-skills-academy",
    "description": "Accredited health and safety and CIPD courses across the North West. Enquiries to enquiries.northgate@outlook.com",
    "email": "enquiries.northgate@outlook.com",
    "emailDomain": "@outlook.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T11:22:09Z"
  }
]
```

The first row is the common case for the Reed Email Scraper: a usable email with `username` set to `null` and `profileUrl` empty. The second, with a resolved handle, is the exception.

### Use cases for the Reed Email Scraper

| Buyer | How they use the Reed Email Scraper |
|---|---|
| UK HR-tech and ATS vendors | Reach employers reposting the same vacancy month after month |
| Recruitment and staffing agencies | Build a client prospect list by city and sector |
| Umbrella and payroll providers | Target agencies placing contractors at volume |
| Apprenticeship-levy consultancies | Contact employers advertising trainee and apprentice roles |
| Benefits and insurance brokers | Approach UK SMEs visibly growing headcount |
| Employer-branding agencies | Pitch to firms whose Reed adverts read as boilerplate |
| Training and e-learning vendors | Reach providers already selling courses through Reed |
| Workforce researchers | Track which UK regions and sectors are advertising hardest |

#### Building a UK prospect list with the Reed Email Scraper

Begin narrow. Run the Reed Email Scraper with two or three precise keywords, check relevance, then widen rather than starting broad.

Because yield is modest, give the run room. Raise `maxEmails`, keep `maxPagesPerQuery` at 30 and leave query expansion on.

Export CSV or JSON from the Apify console, or pull the dataset into your CRM via the Apify API. Filter out any row where `possiblyTruncated` is `true` before sending.

Expect to enrich. Since most rows lack a `profileUrl`, use `accountName` and the `description` snippet to identify the company before outreach.

Scheduling the Reed Email Scraper weekly keeps the list fresh, because UK vacancies turn over quickly and a stale advert is a weak hiring signal.

### Responsible use of the Reed Email Scraper

The Reed Email Scraper collects only addresses already publicly visible in Google's index. That does not make every downstream use lawful.

UK B2B email marketing sits under UK GDPR and PECR; recipients elsewhere in Europe bring EU GDPR, and US contacts fall under CAN-SPAM.

In practice: a genuine business purpose, accurate sender identity, a clear and working unsubscribe path, and prompt honouring of opt-outs. This is general guidance, not legal advice, and you should take your own.

These are business contacts published for recruitment and course enquiries. Treating them as a consumer list is the quickest route to complaints.

### Limitations of the Reed Email Scraper

- **reed.co.uk indexes job and course pages more than recruiter profiles, so most rows carry an email without a resolvable handle.** Expect `username: null` and an empty `profileUrl` on the majority of rows.
- Measured yield is modest: 10 blocks produced 2 identities and 2 unique emails in a real run.
- The Reed Email Scraper only finds addresses that are **publicly visible in Google's index**.
- Google caps a single query at roughly 300 results, which is why query expansion exists.
- `possiblyTruncated: true` means Google's snippet ellipsis touched the email and it may be cut off. Verify before sending.
- `username` and `profileUrl` populate only when Google's result exposes a handle. This is a Google limitation, not a bug.
- The Actor requires the Apify GOOGLE_SERP proxy and cannot run without Apify proxy credentials.
- Free Apify plans are capped at 100 emails per run; paid plans are uncapped.
- Results vary with keywords, domains and location. No volume is guaranteed.
- Candidate and jobseeker personal data is out of scope by design.

### Reed Email Scraper FAQ

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

A measured ten-block run produced 2 identities, 2 profile URLs and 2 unique emails. Reed is a modest-yield source, so raise `maxEmails`, widen `customDomains` and expect to run several keyword sets.

#### Does the Reed Email Scraper collect candidate or jobseeker data?

No. It returns employer, recruiter and training-provider contacts only. It does not gather jobseeker names, CVs, applications or any other candidate personal data.

#### Why are most `username` values `null`?

Because reed.co.uk indexes job and course pages more than recruiter profiles, so most rows carry an email without a resolvable handle. The email is still valid.

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

No. There is no login, no Reed API call and no visit to reed.co.uk. Everything comes from publicly indexed Google search results.

#### Which domain does the Reed Email Scraper search?

`reed.co.uk` only. Reed is a UK-focused board, so set `countryCode` to `GB`.

#### How do I improve Reed Email Scraper yield?

Widen `customDomains` with `@outlook.com`, `@hotmail.co.uk` and `@yahoo.co.uk`, use more specific keywords, raise `maxEmails` and keep `expandQueries` on.

#### Can the Reed Email Scraper target a specific UK city?

Yes. Set `countryCode` to `GB` and put a city or region in `location`. Running the Reed Email Scraper once per city consistently beats one national sweep.

#### Which other UK Actors should I run alongside it?

The [Totaljobs Email Scraper](https://apify.com/leads-scraper/totaljobs-email-scraper) has the same shape but better email yield, and the [JobServe Email Scraper](https://apify.com/leads-scraper/jobserve-email-scraper) covers UK contract and IT roles.

#### What does `possiblyTruncated` mean?

Google's snippet ended in an ellipsis that touched the email, so the address may be incomplete. Treat those rows as needing verification.

#### Can I resume an interrupted run?

Yes. State is kept in the key-value store keyed by an input hash, and saves fire on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events.

#### Is the Reed Email Scraper affiliated with Reed?

No. It is an independent tool and is not endorsed by or affiliated with Reed.

#### Is there a cap on emails per run?

Free Apify plans stop at 100 emails per run. Paid plans are uncapped and `maxEmails` accepts 1 to 10000.

#### What if Google changes its layout?

A whole-page fallback parser takes over, so the Reed Email Scraper degrades to emails without account details rather than to no emails at all.

### Related Actors

Building wider UK or international coverage? These 27 sibling Actors run the same engine against other boards. UK teams usually add the [Totaljobs Email Scraper](https://apify.com/leads-scraper/totaljobs-email-scraper) first, then the [Monster Email Scraper](https://apify.com/leads-scraper/monster-email-scraper) for its UK domain, and the [Glassdoor Email Scraper](https://apify.com/leads-scraper/glassdoor-email-scraper) for the strongest all-round employer coverage in the family.

| Actor | What it collects |
|---|---|
| [Reed Email and Phone Number Scraper](https://apify.com/neuro-scraper/reed-email-and-phone-number-scraper) | Emails and phone numbers from Reed |
| [Reed Phone Number Scraper](https://apify.com/neuro-scraper/reed-phone-number-scraper) | Public phone numbers from Reed |
| [CareerBuilder Email Scraper](https://apify.com/leads-scraper/careerbuilder-email-scraper) | Public contact emails from CareerBuilder |
| [CV-Library Email Scraper](https://apify.com/leads-scraper/cv-library-email-scraper) | Public contact emails from CV-Library |
| [Dice Email Scraper](https://apify.com/leads-scraper/dice-email-scraper) | Public contact emails from Dice |
| [Fiverr Email Scraper](https://apify.com/leads-scraper/fiverr-email-scraper) | Public contact emails from Fiverr |
| [FlexJobs Email Scraper](https://apify.com/leads-scraper/flexjobs-email-scraper) | Public contact emails from FlexJobs |
| [Freelancer Email Scraper](https://apify.com/leads-scraper/freelancer-email-scraper) | Public contact emails from Freelancer |
| [Glassdoor Email Scraper](https://apify.com/leads-scraper/glassdoor-email-scraper) | Public contact emails from Glassdoor |
| [Guru.com Email Scraper](https://apify.com/leads-scraper/guru-com-email-scraper) | Public contact emails from Guru |
| [Hired Email Scraper](https://apify.com/neuro-scraper/hired-email-scraper) | Public contact emails from Hired |
| [Indeed Email Scraper](https://apify.com/leads-scraper/indeed-email-scraper) | Public contact emails from Indeed |
| [JobServe Email Scraper](https://apify.com/leads-scraper/jobserve-email-scraper) | Public contact emails from JobServe |
| [Jobspresso Email Scraper](https://apify.com/leads-scraper/jobspresso-email-scraper) | Public contact emails from Jobspresso |
| [JobStreet Email Scraper](https://apify.com/leads-scraper/jobstreet-email-scraper) | Public contact emails from JobStreet |
| [Ladders Email Scraper](https://apify.com/neuro-scraper/ladders-email-scraper) | Public contact emails from Ladders |
| [Monster Email Scraper](https://apify.com/leads-scraper/monster-email-scraper) | Public contact emails from Monster |
| [PeoplePerHour Email Scraper](https://apify.com/leads-scraper/peopleperhour-email-scraper) | Public contact emails from PeoplePerHour |
| [Remote.co Email Scraper](https://apify.com/leads-scraper/remote-co-email-scraper) | Public contact emails from Remote.co |
| [Remote OK Email Scraper](https://apify.com/leads-scraper/remote-ok-email-scraper) | Public contact emails from Remote OK |
| [Remotive Email Scraper](https://apify.com/leads-scraper/remotive-email-scraper) | Public contact emails from Remotive |
| [SEEK Email Scraper](https://apify.com/neuro-scraper/seek-email-scraper) | Public contact emails from SEEK |
| [SimplyHired Email Scraper](https://apify.com/leads-scraper/simplyhired-email-scraper) | Public contact emails from SimplyHired |
| [The Muse Email Scraper](https://apify.com/leads-scraper/the-muse-email-scraper) | Public contact emails from The Muse |
| [Toptal Email Scraper](https://apify.com/neuro-scraper/toptal-email-scraper) | Public contact emails from Toptal |
| [Totaljobs Email Scraper](https://apify.com/leads-scraper/totaljobs-email-scraper) | Public contact emails from Totaljobs |
| [Upwork Email Scraper](https://apify.com/leads-scraper/upwork-email-scraper) | Public contact emails from Upwork |
| [We Work Remotely Email Scraper](https://apify.com/leads-scraper/we-work-remotely-email-scraper) | Public contact emails from We Work Remotely |
| [ZipRecruiter Email Scraper](https://apify.com/leads-scraper/ziprecruiter-email-scraper) | Public contact emails from ZipRecruiter |
| [CV-Library Email and Phone Number Scraper](https://apify.com/leads-scraper/cv-library-email-and-phone-number-scraper) | Emails and phone numbers from CV-Library |
| [Fiverr Email and Phone Number Scraper](https://apify.com/neuro-scraper/fiverr-email-and-phone-number-scraper) | Emails and phone numbers from Fiverr |
| [FlexJobs Email and Phone Number Scraper](https://apify.com/leads-scraper/flexjobs-email-and-phone-number-scraper) | Emails and phone numbers from FlexJobs |
| [Freelancer Email and Phone Number Scraper](https://apify.com/leads-scraper/freelancer-email-and-phone-number-scraper) | Emails and phone numbers from Freelancer |
| [Glassdoor Email and Phone Number Scraper](https://apify.com/leads-scraper/glassdoor-email-and-phone-number-scraper) | Emails and phone numbers from Glassdoor |
| [Guru Email and Phone Number Scraper](https://apify.com/neuro-scraper/guru-com-email-and-phone-number-scraper) | Emails and phone numbers from Guru |
| [Hired Email and Phone Number Scraper](https://apify.com/neuro-scraper/hired-email-and-phone-number-scraper) | Emails and phone numbers from Hired |
| [Indeed Email and Phone Number Scraper](https://apify.com/leads-scraper/indeed-email-and-phone-number-scraper) | Emails and phone numbers from Indeed |
| [JobServe Email and Phone Number Scraper](https://apify.com/neuro-scraper/jobserve-email-and-phone-number-scraper) | Emails and phone numbers from JobServe |
| [Jobspresso Email and Phone Number Scraper](https://apify.com/neuro-scraper/jobspresso-email-and-phone-number-scraper) | Emails and phone numbers from Jobspresso |
| [JobStreet Email and Phone Number Scraper](https://apify.com/leads-scraper/jobstreet-email-and-phone-number-scraper) | Emails and phone numbers from JobStreet |
| [Ladders Email and Phone Number Scraper](https://apify.com/neuro-scraper/ladders-email-and-phone-number-scraper) | Emails and phone numbers from Ladders |
| [Monster Email and Phone Number Scraper](https://apify.com/leads-scraper/monster-email-and-phone-number-scraper) | Emails and phone numbers from Monster |

### Leave a review

If the Reed 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.

# Actor input Schema

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

Search terms describing the Reed 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 Reed.

## `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": [
    "recruiter",
    "hiring"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "apply",
    "recruiter",
    "hiring"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Reed 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": [
        "recruiter",
        "hiring"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "apply",
        "recruiter",
        "hiring"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuro-scraper/reed-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": [
        "recruiter",
        "hiring",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "apply",
        "recruiter",
        "hiring",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("neuro-scraper/reed-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": [
    "recruiter",
    "hiring"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "apply",
    "recruiter",
    "hiring"
  ]
}' |
apify call neuro-scraper/reed-email-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuro-scraper/reed-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/GiV9ygIphMa8v7zIY/builds/PrbbTpkR01PAg1DEh/openapi.json
