# SEEK Email Scraper (`neuro-scraper/seek-email-scraper`) Actor

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

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

### SEEK Email Scraper: Employer Contacts Across Australia and New Zealand

The SEEK Email Scraper builds a deduplicated list of employer and recruiter email addresses from publicly indexed SEEK pages.

SEEK is the default job board for Australia and New Zealand, and it is where labour-hire firms, RTOs, healthcare groups and mining contractors advertise. Those adverts frequently publish an application address on purpose.

If your ideal customer is an Australian or New Zealand business that is actively growing headcount, the SEEK Email Scraper converts that hiring signal into a contactable list.

The SEEK Email Scraper does not log in, does not call the SEEK API and never opens the SEEK website. It reads Google search results through the Apify GOOGLE_SERP proxy and pulls emails out of the snippets.

#### Who uses the SEEK Email Scraper

HR-tech and ATS vendors run the SEEK Email Scraper to find employers whose advert volume signals a broken hiring process. Staffing and labour-hire agencies use it to find client companies rather than candidates.

Superannuation and employee-benefits providers, payroll bureaus, WHS consultancies and employer-branding studios all work the same list. So do B2B sellers whose whole thesis is that a growing team needs new tooling.

**Candidate data is out of scope.** The SEEK Email Scraper finds employer and recruiter contacts only. It does not collect jobseeker names, resumes, applications or any other candidate personal data.

### Key features of the SEEK Email Scraper

| Feature | What it means in practice |
|---|---|
| Google `site:` search | Queries target `seek.com.au` and `seek.co.nz`, covering both trans-Tasman markets |
| 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 you list in `customDomains` are kept |
| Global deduplication | Each email appears once across every query and every page in a run |
| Email normalisation | Handles `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` |
| Junk filter | Drops 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 | Rejects a hit that is only the tail of another email in the same block |
| Structural parsing | Finds 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 interstitials are detected and retried, never counted 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 land in the dataset as they are found, so partial runs stay useful |
| Run summary | Pages fetched, blocked pages, retries and emails per page are all logged |

Every item in that table ships in the SEEK Email Scraper today. There are no hidden modes and no paid add-ons.

### How the SEEK Email Scraper works

There is no browser, no JavaScript rendering, no authentication and no cookies. The whole pipeline is six steps.

1. The SEEK Email Scraper reads your input: keywords, location, email domains and limits.
2. It builds Google queries with the `site:` operator, for example `site:seek.com.au recruiter "@gmail.com" "Brisbane"`.
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 from the block text using a domain-filtered regex.
6. It deduplicates globally and pushes each lead to the dataset immediately.

Google caps a single query at roughly 300 results, which is exactly why query expansion exists. Leaving `expandQueries` on is the right default for the SEEK Email Scraper.

#### Measured SEEK Email Scraper performance

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

That is a distinctive profile worth understanding. SEEK resolves handles essentially perfectly, so almost every row arrives with a usable `username` and `profileUrl`.

The trade-off is email yield. SEEK's employer pages are richly indexed but comparatively few of them print an address in the snippet, so raise `maxEmails` and let the run work harder.

If you need raw email volume rather than clean identities, pair the SEEK Email Scraper with the [Monster Email Scraper](https://apify.com/leads-scraper/monster-email-scraper) or the [Indeed Email Scraper](https://apify.com/leads-scraper/indeed-email-scraper).

Results always vary with keywords, domains and location. Those figures are one observation, not a guarantee.

### SEEK Email Scraper input fields

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["recruiter", "hiring"]` | Search terms describing the SEEK 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 SEEK Email Scraper runs on defaults. Everything else refines the search.

#### Tuning SEEK Email Scraper location and countryCode for ANZ

SEEK spans two country domains, so `countryCode` and `location` are the levers that decide which market you actually reach.

For Australia set `countryCode` to `AU` and use a `location` such as `Sydney`, `Melbourne`, `Brisbane`, `Perth` or `Adelaide`. Regional phrases like `Newcastle`, `Geelong` or `Townsville` surface employers a capital-city query never shows.

For New Zealand set `countryCode` to `NZ` with `Auckland`, `Wellington` or `Christchurch`. Run the SEEK Email Scraper separately per market; a single trans-Tasman run is dominated by Sydney and Melbourne.

Industry keywords matter more here than on most boards. `mining recruitment`, `aged care hiring`, `civil construction`, `FIFO`, `registered nurse` and `traineeship` all pull distinct employer cohorts.

Because email yield is the constraint rather than identity resolution, widening `customDomains` helps. Add `@outlook.com`, `@bigpond.com` or `@hotmail.com` alongside the defaults.

#### Example SEEK Email Scraper input

```json
{
  "keywords": ["recruiter", "hiring", "labour hire", "aged care recruitment"],
  "location": "Brisbane",
  "customDomains": ["@gmail.com", "@yahoo.com", "@outlook.com", "@bigpond.com"],
  "maxEmails": 300,
  "countryCode": "AU",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "apply", "recruiter", "hiring"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

### SEEK Email Scraper output fields

Every dataset item the SEEK 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 SEEK exposes one; otherwise `null` |
| `profileUrl` | Canonical company URL when a handle is known; otherwise empty |
| `url` | Direct SEEK 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 SEEK Email Scraper output

```json
[
  {
    "network": "SEEK",
    "keyword": "labour hire",
    "query": "site:seek.com.au \"labour hire\" \"@gmail.com\" \"Brisbane\"",
    "title": "Northgate Workforce Solutions Jobs and Careers | SEEK",
    "accountName": "Northgate Workforce Solutions",
    "fullName": "Northgate Workforce Solutions",
    "username": "northgate-workforce-solutions",
    "profileUrl": "https://www.seek.com.au/companies/northgate-workforce-solutions",
    "url": "https://www.seek.com.au/companies/northgate-workforce-solutions",
    "description": "Labour hire and civil construction staffing across South East Queensland. Applications to recruitment.northgate@gmail.com",
    "email": "recruitment.northgate@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T10:02:18Z"
  },
  {
    "network": "SEEK",
    "keyword": "aged care recruitment",
    "query": "site:seek.co.nz intitle:\"aged care\" \"@outlook.com\"",
    "title": "Kowhai Care Group | Careers | SEEK New Zealand",
    "accountName": "Kowhai Care Group",
    "fullName": "Kowhai Care Group",
    "username": "kowhai-care-group",
    "profileUrl": "https://www.seek.com.au/companies/kowhai-care-group",
    "url": "https://www.seek.co.nz/companies/kowhai-care-group",
    "description": "Residential aged care provider hiring registered nurses across Auckland. Contact careers.kowhai@outlook.com",
    "email": "careers.kowhai@outlook.com",
    "emailDomain": "@outlook.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-31T10:03:04Z"
  }
]
```

Both rows resolve a handle, which reflects how the SEEK Email Scraper actually behaves. Identity resolution is this Actor's strength.

### Use cases for the SEEK Email Scraper

| Buyer | How they use the SEEK Email Scraper |
|---|---|
| ATS and HR-tech vendors | Reach ANZ employers advertising continuously in shortage occupations |
| Labour-hire and staffing agencies | Build a client list of businesses hiring in a target state or region |
| RTOs and training providers | Contact employers hiring apprentices, trainees or ticketed trades |
| Superannuation and benefits providers | Approach companies visibly expanding their payroll |
| WHS and compliance consultancies | Target construction, mining and logistics employers scaling crews |
| Employer-branding agencies | Pitch a careers-page rebuild to firms with thin, repetitive adverts |
| Payroll and PEO providers | Find NZ businesses opening an Australian entity, and vice versa |
| Market and workforce researchers | Map which ANZ sectors are hiring hardest, by city |

#### Building an ANZ prospect list with the SEEK Email Scraper

Start with two or three sharp keywords rather than a broad sweep. `FIFO recruitment`, `registered nurse`, `heavy diesel mechanic` and `apprentice electrician` each pull a different employer cohort.

Set `maxEmails` modestly on a first pass to check relevance, then raise it. Because SEEK's yield per block is lower, a serious run wants a higher cap than you would use elsewhere.

Export CSV or JSON from the Apify console, or pull the dataset into your CRM through the Apify API. Drop rows where `possiblyTruncated` is `true` before sending anything.

Many teams schedule the SEEK Email Scraper weekly so new adverts, and therefore fresh hiring signals, arrive while they still matter.

### Responsible use of the SEEK Email Scraper

The SEEK Email Scraper collects only addresses already publicly visible in Google's index. Public does not automatically mean lawful to email.

Australia has the Spam Act and the Privacy Act; New Zealand has the Unsolicited Electronic Messages Act and its own Privacy Act. UK or EU recipients bring GDPR and PECR expectations, and US outreach falls under CAN-SPAM.

Practically, that means a genuine business purpose, honest sender identification, a working unsubscribe path and prompt honouring of opt-outs. This is general guidance, not legal advice.

Remember the scope as well. These are business contacts published for recruitment; treating them as a consumer marketing list invites complaints.

### Limitations of the SEEK Email Scraper

- The SEEK Email Scraper only finds addresses that are **publicly visible in Google's index**. Anything behind a SEEK login stays invisible.
- Email yield per result block is lower on SEEK than on several sibling Actors, even though identity resolution is excellent.
- 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 incomplete. Verify before sending.
- `username` and `profileUrl` populate only when Google's result exposes a handle. SEEK is unusually good here, but rows without a handle can still occur. That 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.

### SEEK Email Scraper FAQ

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

A measured ten-block run resolved 10 identities and 10 profile URLs but only 4 unique emails. Expect clean identity data and modest email volume, and raise `maxEmails` accordingly.

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

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

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

No. There is no login, no SEEK API call and no visit to seek.com.au. Everything comes from publicly indexed Google results.

#### Which SEEK domains does the SEEK Email Scraper search?

`seek.com.au` and `seek.co.nz`, covering Australia and New Zealand.

#### Why does SEEK resolve handles so well but return fewer emails?

Google indexes SEEK company pages thoroughly, so account names and URLs are easy to parse. Fewer of those snippets print a contact address, which caps email yield.

#### How do I get more emails out of the SEEK Email Scraper?

Widen `customDomains`, add more industry-specific keywords, raise `maxEmails` and keep `expandQueries` on. Running per-city also helps.

#### Should I run Australia and New Zealand together?

No. Run the SEEK Email Scraper twice, once with `countryCode` set to `AU` and once with `NZ`. A combined run is dominated by Australian results.

#### What does `possiblyTruncated` mean?

Google's snippet ended in an ellipsis touching the email, so the address may be cut off. Treat those rows as needing verification.

#### Can I resume an interrupted run?

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

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

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

#### 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 happens if Google changes its layout?

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

### Related Actors

Covering more than ANZ? These 27 sibling Actors run the same engine elsewhere. Southeast Asian teams should start with the [JobStreet Email Scraper](https://apify.com/leads-scraper/jobstreet-email-scraper), which shares SEEK's ownership and its strong handle resolution. For UK coverage the [Reed Email Scraper](https://apify.com/neuro-scraper/reed-email-scraper) is the usual first stop, and for the highest all-round yield in the family try the [Glassdoor Email Scraper](https://apify.com/leads-scraper/glassdoor-email-scraper).

| Actor | What it collects |
|---|---|
| [SEEK Email and Phone Number Scraper](https://apify.com/neuro-scraper/seek-email-and-phone-number-scraper) | Emails and phone numbers from SEEK |
| [SEEK Phone Number Scraper](https://apify.com/neuro-scraper/seek-phone-number-scraper) | Public phone numbers from SEEK |
| [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 |
| [Reed Email Scraper](https://apify.com/neuro-scraper/reed-email-scraper) | Public contact emails from Reed |
| [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 |
| [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 SEEK 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 SEEK 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 SEEK.

## `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 SEEK 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/seek-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/seek-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/seek-email-scraper --silent --output-dataset

```

## MCP server setup

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