# Kompass Email Scraper (`leads-scraper/kompass-email-scraper`) Actor

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

- **URL**: https://apify.com/leads-scraper/kompass-email-scraper.md
- **Developed by:** [Leads Scraper](https://apify.com/leads-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

### Kompass Email Scraper - public supplier contact emails from kompass.com

The Kompass Email Scraper collects publicly indexed contact emails that appear in Google search results for `kompass.com`. Kompass is one of the oldest global B2B company databases, listing registered manufacturers, distributors and service providers across dozens of countries.

That heritage is exactly why this Actor works. A company profile on the Kompass company database exists to be contacted by buyers, so sales, export and enquiry addresses are published deliberately rather than hidden.

The Kompass Email Scraper turns that published layer into a dataset. It builds Google `site:kompass.com` queries, reads the result pages through the Apify GOOGLE_SERP proxy, and pulls out every email that matches your domain filter.

It is built for people who source rather than people who browse. Procurement teams, import and export agents, industrial distributors and trade-show organisers all need a way to reach many suppliers at once, and a supplier directory is where those routes live.

#### A measured live result, stated plainly

A live Google run of the Kompass Email Scraper returned **10 result blocks, 10 rows with account identity, 10 resolvable profile URLs and 6 unique emails**. Those are the observed figures, not a projection.

The important part of that shape is the identity column. Kompass exposes a clean company slug in Google's result, so the Kompass Email Scraper resolves a handle and a `profileUrl` on essentially every row it finds.

Six unique emails from ten blocks is a normal ratio for a B2B supplier directory on the default webmail filter. Widening `customDomains` is the single biggest lever you have, and it is covered in detail further down.

### Features of the Kompass Email Scraper

Every feature below is genuinely implemented in the Actor. Nothing here is aspirational.

| Feature | What it means in practice |
|---|---|
| Google SERP parsing | Reads Google result pages through the Apify GOOGLE_SERP proxy. No browser, no JavaScript rendering |
| Structural block detection | Locates the `<h3>` title, then the smallest surrounding block. Does not depend on Google's CSS class names |
| Domain filter | Only emails ending in one of your `customDomains` values are kept |
| Query expansion | Base, quoted, `intitle:` and one variant per query modifier. Base queries run first |
| Global deduplication | An email seen once is never pushed twice, across every query and every page |
| Email normalisation | Understands `name [at] domain [dot] com`, `name (at) domain`, `name @ domain.com`, `domain .com`, zero-width characters and the full-width `＠` sign |
| Junk filter | Rejects placeholders such as `email@`, `yourname@`, `test@`, `xxx@` and single-character locals |
| Boundary-correct matching | `@gmail.com` does not match inside `@gmail.company` or `@gmail.com.br` |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same block |
| Concurrency | An `asyncio` worker pool with a shared stop signal on `maxEmails` |
| Retries | Up to 3 attempts per page, exponential backoff, a fresh proxy session per request |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Re-queueing | Blocked or failed queries are retried once at the end of the run |
| Resumable run | State is stored in the key-value store, keyed by a hash of the input, and saved on `PERSIST_STATE`, `MIGRATING` and `ABORTING` |
| Fallback parser | If Google's markup changes, the run degrades to "emails without account details" rather than "no emails" |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |
| Dataset output | Rows push immediately and export to CSV, JSON, Excel or XML from the Apify dataset |

Those features are shared across this Actor family, but their value inside the Kompass Email Scraper is specific: a large multilingual index rewards aggressive query expansion far more than a small one does.

Resilience matters here too. Because the Kompass Email Scraper works through a wide expanded query set, a single blocked page should never cost you the run, and the re-queueing and retry logic exists for exactly that.

### How the Kompass Email Scraper works

The pipeline is six steps and there is nothing hidden inside it.

1. It reads your input: keywords, location, email domains and limits.
2. It builds Google search queries with the `site:` operator against `kompass.com`, for example `site:kompass.com manufacturer "@gmail.com" "Lyon"`.
3. It fetches Google result pages through the Apify GOOGLE_SERP proxy using `aiohttp`, asynchronously.
4. It parses each result block structurally, finding the `<h3>` title and the smallest block around it.
5. It extracts emails from that block's text with a domain-filtered regex.
6. It deduplicates globally and pushes each lead straight into the Apify dataset.

The Kompass Email Scraper does **not** log into Kompass, does not use any Kompass API, and does not open the site in a browser. Every field comes from publicly indexed Google search results - titles, snippets and site labels, with no authentication and no cookies.

### Who the Kompass Email Scraper is built for

This is a B2B sourcing tool, and its audience is people whose job is finding suppliers rather than finding consumers.

Procurement and category buyers use it to assemble a shortlist of manufacturers in a product class before an RFQ round. Import and export agents use it to find export-ready companies in a target country.

Industrial distributors use it to identify brands that do not yet have regional representation. Trade-show organisers use it to recruit exhibitors from the exact industrial segments their floor plan is short of.

What these users share is that a Kompass supplier listing is already a business contact route. The company put a sales address on a public B2B supplier directory precisely so that buyers could use it.

If your work is closer to consumer-facing local services than to industrial sourcing, the Kompass Email Scraper is the wrong Actor and [Cybo Email Scraper](https://apify.com/neuro-scraper/cybo-email-scraper) or [Fyple Email Scraper](https://apify.com/neuro-scraper/fyple-email-scraper) will suit you better.

### Input fields for the Kompass Email Scraper

| Field | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | array (required) | `["manufacturer", "supplier"]` | Search terms - niche, job title, industry |
| `location` | string | `""` | Optional location phrase added to every query |
| `customDomains` | array | `["@gmail.com", "@yahoo.com"]` | Only emails on these domains are kept; the `@` is optional |
| `maxEmails` | integer 1-10000 | `20` | Stop after this many unique emails |
| `countryCode` | string | `""` | Two-letter country for the search proxy (US, GB, DE...) |
| `expandQueries` | boolean | `true` | Search each keyword x domain pair in several phrasings |
| `queryModifiers` | array | `["email", "contact", "export", "wholesale", "sales enquiries"]` | Extra words combined with each keyword when expansion is on |
| `maxPagesPerQuery` | integer 1-50 | `30` | Page cap per query |
| `maxConcurrency` | integer 1-20 | `5` | Parallel queries |

#### How the Kompass Email Scraper input fields actually behave

`keywords` drives everything in the Kompass Email Scraper. The defaults `manufacturer` and `supplier` are broad on purpose, but a real sourcing run should replace them with the product class you actually buy - `injection moulding`, `stainless steel fittings`, `packaging machinery`.

`queryModifiers` only fire when `expandQueries` is `true`. The defaults `export`, `wholesale` and `sales enquiries` are tuned to Kompass because those are the words that sit next to a published address on a supplier profile.

`customDomains` decides how many rows you get. Free webmail is common among smaller exporters, but larger Kompass-listed companies use corporate mail, so adding domains such as `@outlook.com`, `@hotmail.com` or a country webmail provider widens the net considerably.

`maxEmails` is a hard stop shared across the worker pool, so raising it does not create leads that are not indexed. It simply lets the run keep working through the expanded query set.

`maxConcurrency` and `maxPagesPerQuery` trade speed against politeness, and the defaults of 5 and 30 are sensible for a domain this large.

### JSON input example for the Kompass Email Scraper

```json
{
  "keywords": ["injection moulding", "packaging machinery", "fournisseur emballage"],
  "location": "Lyon",
  "customDomains": ["@gmail.com", "@yahoo.com", "@outlook.com", "@orange.fr"],
  "maxEmails": 200,
  "countryCode": "FR",
  "expandQueries": true,
  "queryModifiers": ["email", "contact", "export", "wholesale", "sales enquiries"],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

Note the French-language keyword mixed in with the English ones. Kompass runs country sites in many languages, and a native-language product term reaches listings that an English term never surfaces.

That input is a realistic sourcing configuration for the Kompass Email Scraper: a narrow product class, a manufacturing region, a matching country code and a widened domain filter.

### Output fields of the Kompass Email Scraper

Every dataset item carries all fourteen fields.

| 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 non-profile results |
| `username` | URL-safe handle when the platform exposes one; otherwise `null` |
| `profileUrl` | Canonical account URL when a handle is known; otherwise empty |
| `url` | Direct platform link when exposed, else the profile URL |
| `description` | Bio or snippet text, cleaned of labels and counters |
| `email` | Lower-cased email address |
| `emailDomain` | The matched domain, for example `@gmail.com` |
| `possiblyTruncated` | `true` when Google's snippet ellipsis touched the email - verify before sending |
| `foundAt` | ISO 8601 UTC timestamp |

On Kompass, `username` and `profileUrl` are populated on most rows, because company pages carry a stable slug that Google prints in the result. That is what the measured 10 out of 10 profile URLs reflects.

Always check `possiblyTruncated` before you send anything. When it is `true`, Google's ellipsis may have clipped the address and you should confirm it on the source page.

### JSON output example from the Kompass Email Scraper

```json
[
  {
    "network": "Kompass",
    "keyword": "injection moulding",
    "query": "site:kompass.com injection moulding export \"@gmail.com\" \"Lyon\"",
    "title": "Delta Plastiques SAS - Injection moulding - Kompass",
    "accountName": "Delta Plastiques SAS",
    "fullName": "Delta Plastiques SAS",
    "username": "delta-plastiques-sas-fr0184223",
    "profileUrl": "https://www.kompass.com/c/delta-plastiques-sas-fr0184223/",
    "url": "https://www.kompass.com/c/delta-plastiques-sas-fr0184223/",
    "description": "Technical injection moulding for automotive and packaging. Export enquiries welcome.",
    "email": "delta.plastiques.export@gmail.com",
    "emailDomain": "@gmail.com",
    "possiblyTruncated": false,
    "foundAt": "2026-08-29T09:14:02Z"
  },
  {
    "network": "Kompass",
    "keyword": "packaging machinery",
    "query": "site:kompass.com packaging machinery \"sales enquiries\" \"@outlook.com\"",
    "title": "Verpackungstechnik Hauser GmbH - Kompass",
    "accountName": "Verpackungstechnik Hauser GmbH",
    "fullName": "Verpackungstechnik Hauser GmbH",
    "username": "verpackungstechnik-hauser-gmbh-de0451907",
    "profileUrl": "https://www.kompass.com/c/verpackungstechnik-hauser-gmbh-de0451907/",
    "url": "https://www.kompass.com/c/verpackungstechnik-hauser-gmbh-de0451907/",
    "description": "Filling and packaging lines for food and pharma. Wholesale and OEM supply.",
    "email": "vertrieb.hauser@outlook.com",
    "emailDomain": "@outlook.com",
    "possiblyTruncated": true,
    "foundAt": "2026-08-29T09:15:38Z"
  }
]
```

### Use cases for the Kompass Email Scraper

| Audience | What they do with the data |
|---|---|
| Procurement and category buyers | Build a supplier shortlist in a product class before issuing an RFQ |
| Import and export agents | Find export-ready manufacturers in a specific country and language |
| Industrial distributors | Identify brands with no regional distributor and pitch representation |
| Trade-show and expo organisers | Recruit exhibitors from the industrial segments a floor plan is missing |
| Contract manufacturers | Reach companies that outsource production in an adjacent category |
| Logistics and freight forwarders | Approach exporters who ship the lanes they already run |
| B2B marketing agencies | Assemble an industrial prospect list for an account-based campaign |
| Market researchers | Map which supplier segments publish contact routes in which countries |

Each of those is an outbound job aimed at a business inbox that was published for business enquiries. That is the honest boundary of what the Kompass Email Scraper is for.

Notice that none of these use cases depend on personal or private data. The Kompass Email Scraper works entirely on the company-level contact routes that a supplier chose to publish in a trade directory.

### Targeting tips and multilingual keywords for the Kompass Email Scraper

`location` and `countryCode` are both real levers on the Kompass Email Scraper, and using them together is what separates a thin run from a productive one.

`location` appends a phrase to every query, so `"Lyon"`, `"Lombardia"` or `"Nordrhein-Westfalen"` narrows to a manufacturing cluster rather than a whole country. Industrial buying is regional, and this field lets you match that.

`countryCode` changes the country of the search proxy, which changes which Kompass country site Google prefers. Setting `FR`, `DE`, `IT` or `ES` reaches an entirely different slice of the B2B supplier directory.

Kompass is genuinely multilingual, so native-language keywords pay off in the Kompass Email Scraper more than on most platforms. `fournisseur`, `Hersteller`, `fornitore` and `proveedor` will each surface company pages that the English `supplier` misses.

Combine a native-language keyword with the matching `countryCode` and a regional `location`, and keep `expandQueries` on so the `export` and `wholesale` modifiers reach the pages where addresses appear. For neighbouring European coverage, run [Europages Email Scraper](https://apify.com/leads-scraper/europages-email-scraper) with the same country settings.

### Limitations of the Kompass Email Scraper

Read all of these before your first run.

- The Kompass Email Scraper only finds addresses that are **publicly visible in Google's index**. Anything Google has not indexed is invisible to it.
- Google caps a single query at roughly 300 results, which is exactly why query expansion exists and why it is on by default.
- `possiblyTruncated: true` means Google's snippet ellipsis may have cut the email short. Verify it before sending.
- It 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.
- `username` and `profileUrl` are only populated when Google exposes a handle. Kompass usually does, but rows built from category or search pages can still arrive with `username: null` and an empty `profileUrl`. That is a Google limitation, not a bug.
- Results vary with keywords, domains, language and location. No volume is guaranteed by the Kompass Email Scraper or by any Actor in this family.

### Responsible use of Kompass Email Scraper output

The addresses the Kompass Email Scraper surfaces are business contacts that companies published on a public B2B supplier directory so that buyers could reach them. Treat them as exactly that and nothing more.

Under GDPR, a named individual's work address is still personal data even when it is public. Record your legitimate interest, name yourself and your organisation in the first line, and make the relevance of your message obvious.

Honour opt-outs immediately and permanently, keep your list current, and follow the local marketing rules in each country you contact. Do not use this output for bulk unsolicited mail.

### FAQ about the Kompass Email Scraper

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

A live Google run returned 10 result blocks, 10 identified accounts, 10 profile URLs and 6 unique emails on the default settings. Volume scales with how many keyword and domain combinations you give it, so a run with ten product keywords and five domains will return far more than the default two-by-two. No specific number is guaranteed, because everything depends on what Google has indexed.

#### Does the Kompass Email Scraper log into Kompass or use its API?

No. It builds Google `site:kompass.com` queries, fetches result pages through the Apify GOOGLE_SERP proxy and parses them. There is no browser, no login, no API and no cookies.

#### Why do most Kompass Email Scraper rows have a working profile URL?

Because Kompass company pages carry a stable slug that Google prints in the result title and link. The Actor derives `username` from that slug and builds `profileUrl` in the form `https://www.kompass.com/c/{username}/`.

#### Should I use non-English keywords with the Kompass Email Scraper?

Yes, if you are targeting a non-English market. Kompass runs country sites in many languages, so `Hersteller`, `fournisseur` or `fornitore` reaches listings that never appear for `manufacturer`.

#### What is the fastest way to increase Kompass Email Scraper yield?

Widen `customDomains` beyond the two webmail defaults and add more specific product keywords. Larger listed companies frequently use `@outlook.com`, `@hotmail.com` or a national provider rather than Gmail.

#### Can the Kompass Email Scraper find corporate addresses on a company's own domain?

Only if that address is printed in the Google result block and you list the domain in `customDomains`. The filter compares the end of each address, so every domain you want must appear in the array.

#### Why does the Kompass Email Scraper turn `expandQueries` on by default?

Google caps one query at roughly 300 results. Expansion runs base, quoted and `intitle:` variants plus one per modifier, which reaches pages a single query cannot. Base queries always run first.

#### Can I run the Kompass Email Scraper on a free Apify plan?

Yes. Free plans are capped at 100 emails per run, and paid plans are uncapped.

#### What happens if a Kompass Email Scraper run is interrupted?

State is saved in the key-value store, keyed by a hash of your input, and written on Apify's `PERSIST_STATE`, `MIGRATING` and `ABORTING` events. Restarting with the same input resumes rather than starting over.

#### Which export formats does the Kompass Email Scraper support?

Anything the Apify dataset supports - CSV, JSON, Excel and XML - plus the API for pushing rows straight into a CRM.

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

No. It is an independent Actor that reads publicly indexed Google results and has no relationship with, or endorsement from, the platform.

#### Which other Actor pairs best with the Kompass Email Scraper?

For European industrial sourcing, [Europages Email Scraper](https://apify.com/leads-scraper/europages-email-scraper). For North American manufacturing, [Thomasnet Email Scraper](https://apify.com/leads-scraper/thomasnet-email-scraper). For Asian export supply, [EC21 Email Scraper](https://apify.com/neuro-scraper/ec21-email-scraper) and [TradeIndia Email Scraper](https://apify.com/leads-scraper/tradeindia-email-scraper).

### Related Actors

More email scrapers from the same Business & Professional Directories family, built on the same Google SERP pipeline.

| Actor | What it collects |
|---|---|
| [Kompass Email and Phone Number Scraper](https://apify.com/leads-scraper/kompass-email-and-phone-number-scraper) | Emails and phone numbers from Kompass |
| [Kompass Phone Number Scraper](https://apify.com/leads-scraper/kompass-phone-number-scraper) | Public phone numbers from Kompass |
| [Angi Email Scraper](https://apify.com/leads-scraper/angi-email-scraper) | Public contact emails from Angi |
| [Bark Email Scraper](https://apify.com/leads-scraper/bark-email-scraper) | Public contact emails from Bark |
| [Better Business Bureau Email Scraper](https://apify.com/leads-scraper/better-business-bureau-email-scraper) | Public contact emails from Better Business Bureau |
| [Bizapedia Email Scraper](https://apify.com/neuro-scraper/bizapedia-email-scraper) | Public contact emails from Bizapedia |
| [Brownbook Email Scraper](https://apify.com/neuro-scraper/brownbook-email-scraper) | Public contact emails from Brownbook |
| [Callupcontact Email Scraper](https://apify.com/neuro-scraper/callupcontact-email-scraper) | Public contact emails from CallUpContact |
| [Capterra Email Scraper](https://apify.com/leads-scraper/capterra-email-scraper) | Public contact emails from Capterra |
| [Clutch Email Scraper](https://apify.com/leads-scraper/clutch-email-scraper) | Public contact emails from Clutch |
| [Crunchbase Email Scraper](https://apify.com/leads-scraper/crunchbase-email-scraper) | Public contact emails from Crunchbase |
| [Cybo Email Scraper](https://apify.com/neuro-scraper/cybo-email-scraper) | Public contact emails from Cybo |
| [Cylex Email Scraper](https://apify.com/neuro-scraper/cylex-email-scraper) | Public contact emails from Cylex |
| [EC21 Email Scraper](https://apify.com/neuro-scraper/ec21-email-scraper) | Public contact emails from EC21 |
| [Europages Email Scraper](https://apify.com/leads-scraper/europages-email-scraper) | Public contact emails from Europages |
| [ExportHub Email Scraper](https://apify.com/neuro-scraper/exporthub-email-scraper) | Public contact emails from ExportHub |
| [FindUsLocal Email Scraper](https://apify.com/neuro-scraper/finduslocal-email-scraper) | Public contact emails from FindUsLocal |
| [Foursquare Email Scraper](https://apify.com/neuro-scraper/foursquare-email-scraper) | Public contact emails from Foursquare |
| [Fyple Email Scraper](https://apify.com/neuro-scraper/fyple-email-scraper) | Public contact emails from Fyple |
| [G2 Email Scraper](https://apify.com/neuro-scraper/g2-email-scraper) | Public contact emails from G2 |
| [Hotfrog Email Scraper](https://apify.com/leads-scraper/hotfrog-email-scraper) | Public contact emails from Hotfrog |
| [Houzz Email Scraper](https://apify.com/leads-scraper/houzz-email-scraper) | Public contact emails from Houzz |
| [Infobel Email Scraper](https://apify.com/neuro-scraper/infobel-email-scraper) | Public contact emails from Infobel |
| [Lacartes Email Scraper](https://apify.com/neuro-scraper/lacartes-email-scraper) | Public contact emails from Lacartes |
| [Manta Email Scraper](https://apify.com/leads-scraper/manta-email-scraper) | Public contact emails from Manta |
| [MapQuest Email Scraper](https://apify.com/neuro-scraper/mapquest-email-scraper) | Public contact emails from MapQuest |
| [N49 Email Scraper](https://apify.com/neuro-scraper/n49-email-scraper) | Public contact emails from N49 |
| [Porch Email Scraper](https://apify.com/neuro-scraper/porch-email-scraper) | Public contact emails from Porch |
| [Scoot Email Scraper](https://apify.com/neuro-scraper/scoot-email-scraper) | Public contact emails from Scoot |
| [Thomasnet Email Scraper](https://apify.com/leads-scraper/thomasnet-email-scraper) | Public contact emails from Thomasnet |
| [Thumbtack Email Scraper](https://apify.com/leads-scraper/thumbtack-email-scraper) | Public contact emails from Thumbtack |
| [Touch Local Email Scraper](https://apify.com/leads-scraper/touch-local-email-scraper) | Public contact emails from Touch Local |
| [TradeIndia Email Scraper](https://apify.com/leads-scraper/tradeindia-email-scraper) | Public contact emails from TradeIndia |
| [Trustpilot Email Scraper](https://apify.com/leads-scraper/trustpilot-email-scraper) | Public contact emails from Trustpilot |
| [Tupalo Email Scraper](https://apify.com/leads-scraper/tupalo-email-scraper) | Public contact emails from Tupalo |
| [Yalwa Email Scraper](https://apify.com/leads-scraper/yalwa-email-scraper) | Public contact emails from Yalwa |
| [Yellow Pages Email Scraper](https://apify.com/leads-scraper/yellow-pages-email-scraper) | Public contact emails from Yellow Pages |
| [Angi Email and Phone Number Scraper](https://apify.com/neuro-scraper/angi-email-and-phone-number-scraper) | Emails and phone numbers from Angi |
| [Bark Email and Phone Number Scraper](https://apify.com/neuro-scraper/bark-email-and-phone-number-scraper) | Emails and phone numbers from Bark |
| [Better Business Bureau Email and Phone Number Scraper](https://apify.com/leads-scraper/better-business-bureau-email-and-phone-number-scraper) | Emails and phone numbers from Better Business Bureau |
| [Bizapedia Email and Phone Number Scraper](https://apify.com/neuro-scraper/bizapedia-email-and-phone-number-scraper) | Emails and phone numbers from Bizapedia |
| [Brownbook Email and Phone Number Scraper](https://apify.com/neuro-scraper/brownbook-email-and-phone-number-scraper) | Emails and phone numbers from Brownbook |

### Leave a review

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

## `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": [
    "manufacturer",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "maxEmails": 20,
  "countryCode": "",
  "expandQueries": true,
  "queryModifiers": [
    "email",
    "contact",
    "export",
    "wholesale",
    "sales enquiries"
  ],
  "maxPagesPerQuery": 30,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Records produced by Kompass 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": [
        "manufacturer",
        "supplier"
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com"
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "export",
        "wholesale",
        "sales enquiries"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("leads-scraper/kompass-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": [
        "manufacturer",
        "supplier",
    ],
    "location": "",
    "customDomains": [
        "@gmail.com",
        "@yahoo.com",
    ],
    "countryCode": "",
    "queryModifiers": [
        "email",
        "contact",
        "export",
        "wholesale",
        "sales enquiries",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("leads-scraper/kompass-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": [
    "manufacturer",
    "supplier"
  ],
  "location": "",
  "customDomains": [
    "@gmail.com",
    "@yahoo.com"
  ],
  "countryCode": "",
  "queryModifiers": [
    "email",
    "contact",
    "export",
    "wholesale",
    "sales enquiries"
  ]
}' |
apify call leads-scraper/kompass-email-scraper --silent --output-dataset

```

## MCP server setup

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