# Kompass Scraper - Global B2B Company & Supplier Leads (`scrapesage/kompass-scraper`) Actor

Scrape the Kompass global B2B directory (60+ countries): company name, phone, email, website, full address, VAT & registration number, legal form, employees, year founded, products & a 0–100 lead score. Filter by country, industry & company type. No login.

- **URL**: https://apify.com/scrapesage/kompass-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Automation, E-commerce
- **Stats:** 11 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 company records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Kompass Scraper — Global B2B Company, Supplier & Contact Leads

Extract **complete B2B company records** from [Kompass](https://www.kompass.com), the global business directory covering **60+ countries** and millions of companies. Every record ships the fields that make a real lead: **company name, direct phone, email, website, full postal address, geo-coordinates, VAT & registration number, legal form, corporate capital, employee count, year founded, and the full product/activity list** — plus a 0–100 lead score.

No login, no cookies, no browser — fast JSON-LD extraction with a clean key-value pipeline.

### Why this Kompass scraper?

Most B2B directory scrapers stop at the search-result card and return `null` for the data that matters. This actor opens every company profile and merges the page's **JSON-LD `Organization` block** with the **firmographics table** to ship the **richest record in the category**:

| Data | Typical scrapers | This actor |
|---|---|---|
| Company name, country, city | ✅ | ✅ |
| Direct **phone** + **fax** | ❌ | ✅ |
| Contact **email** | ❌ | ✅ |
| Company **website** + social profiles | ❌ | ✅ |
| Full street address + postal + **lat/lng** | partial | ✅ |
| **VAT / registration number** | ❌ | ✅ |
| Legal form + **corporate capital** | ❌ | ✅ |
| **Employee count** + size band | ❌ | ✅ |
| Year established | ❌ | ✅ |
| Products & activities (full list) | ❌ | ✅ |
| Lead score (0–100) + signals | ❌ | ✅ |
| Country / industry / company-type filters | ❌ | ✅ |
| Monitor mode (only new companies) | ❌ | ✅ |

### Use cases

- **B2B lead generation** — build targeted prospect lists of manufacturers, distributors, importers and service providers by industry and country, complete with direct phone, email and website.
- **Supplier sourcing & procurement** — find and compare suppliers for any product (valves, machinery, packaging, chemicals, electronics…) across Europe, Asia and the Americas.
- **Market & competitor mapping** — size up an industry in a country: who the players are, how big (employees, capital), how old, and what they make.
- **CRM & data enrichment** — paste a list of Kompass company URLs and get back clean firmographics (VAT, registration, legal form, employees) to enrich your records.
- **Trade & export research** — filter to importers/exporters in a target market to find trading partners.
- **Sales territory monitoring** — schedule recurring runs with monitor mode to catch newly listed companies in your niche.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Kompass Scraper**, enter one or more search queries (e.g. `industrial valves`), optionally a country filter, and click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchQueries": ["industrial valves", "cnc machining"],
    "countries": ["DE", "IT", "FR"],
    "companyTypes": ["producer"],
    "includeDetails": true,
    "maxItems": 100,
    "maxPagesPerQuery": 10
}
```

- **searchQueries** — keywords matched against company products/activities across all 60+ countries. Each term runs separately and paginates.
- **searchType** — `products` (match products & activities, default) or `companyName` (match the company name).
- **startUrls** — paste Kompass search URLs (`…/searchCompanies?text=…`) or company profile URLs (`…/c/<slug>/<id>/`); each is auto-routed.
- **companyUrls** — Kompass company profile URLs to fetch directly as full lead records.
- **countries** — keep only companies in these countries (ISO-2 codes or names, e.g. `FR`, `DE`, `US`). Empty = all countries.
- **companyTypes** — keep only `producer`, `distributor`, `service`, `importer` and/or `exporter`. Empty = all.
- **withEmailOnly / withPhoneOnly / withWebsiteOnly** — keep only companies that expose that contact channel.
- **minEmployees / minLeadScore** — quality thresholds.
- **includeDetails** *(default true)* — open each company profile for phone, email, website, address, geo, VAT/registration, legal form, capital, employees, year founded and products. The listing alone is thin — keep this on.
- **maxItems** *(default 100)* — total record cap.
- **maxPagesPerQuery** *(default 10)* — result pages per query (~20–40 companies each). Raise it when filtering to a single country.
- **monitorMode / monitorStoreName** — emit only companies not seen in previous runs (see below).
- **proxyConfiguration** — defaults to Apify Residential; keep it for reliable results.

### Output

One record per company (`type: "company"`):

```json
{
    "type": "company",
    "platform": "Kompass",
    "kompassId": "es0016541",
    "companyName": "INOXPA S.A.U.",
    "countryCode": "ES",
    "country": "Spain",
    "city": "Banyoles",
    "postalCode": "17820",
    "street": "C/ Telers, 60",
    "fullAddress": "C/ Telers, 60, 17820 Banyoles, Spain",
    "latitude": 42.1105933,
    "longitude": 2.7783434,
    "phone": "972 575 200",
    "fax": "972 575 502",
    "email": "web@inoxpa.com",
    "website": "http://www.inoxpa.com",
    "socialProfiles": { "linkedin": "https://www.linkedin.com/company/inoxpa" },
    "primaryActivity": "Pumps",
    "role": "Exporter",
    "products": ["Pumps NES", "Pneumatic valves", "Mixing machinery for the food industry"],
    "yearEstablished": 1972,
    "legalForm": "Sociedad Anónima",
    "corporateCapital": "20,000,000 EUR",
    "registrationNumber": "A17778390",
    "vatNumber": "ESA17778390",
    "employeeCount": 930,
    "employeeRange": "500-999",
    "isVerified": true,
    "logo": "https://img.kompass.com/...",
    "leadScore": 95,
    "leadSignals": ["email", "phone", "website", "verified", "employees", "established", "registered"],
    "profileUrl": "https://us.kompass.com/c/inoxpa-s-a-u/es0016541/",
    "searchQuery": "industrial valves",
    "scrapedAt": "2026-06-26T12:00:00.000Z"
}
```

### Monitor new companies (only-new mode)

Turn on **monitorMode** and the actor remembers every company id it has emitted (in a named key-value store) and outputs **only newly listed companies** on subsequent runs. Pair it with [Schedules](https://docs.apify.com/platform/schedules) to watch an industry or country for new entrants — perfect for a fresh-leads pipeline. Monitor mode is **orthogonal to scheduling**: the schedule decides *when* the actor runs, monitor mode decides *what* gets emitted, so they never conflict. Use a distinct `monitorStoreName` per saved task to keep histories separate.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly to monitor an industry or country for new companies; ideal for lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/kompass-scraper').call({
    searchQueries: ['packaging machinery'],
    countries: ['DE', 'IT'],
    includeDetails: true,
    maxItems: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} B2B company leads`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new company leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new companies.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find packaging-machinery manufacturers in Germany with contact details" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **B2B sourcing & lead-gen stack**:

- **[IndiaMART Scraper](https://apify.com/scrapesage/indiamart-scraper)** — India's #1 B2B marketplace: suppliers, products & phone leads.
- **[Made-in-China Scraper](https://apify.com/scrapesage/made-in-china-scraper)** — Chinese manufacturers, products & supplier leads.
- **[Alibaba Scraper](https://apify.com/scrapesage/alibaba-scraper)** — wholesale products & supplier leads.
- **[TradeIndia Scraper](https://apify.com/scrapesage/tradeindia-scraper)** — B2B suppliers, manufacturers & leads.
- **[LinkedIn Company Scraper](https://apify.com/scrapesage/linkedin-company-scraper)** — firmographics & B2B company data.
- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — emails, phones & socials from any domain (enrich Kompass websites).
- **[Website Tech Stack Scraper](https://apify.com/scrapesage/website-tech-stack-scraper)** — detect a company's tech stack + lead intelligence.
- **[Google Maps Scraper](https://apify.com/scrapesage/google-maps-scraper)** — local business places, leads & contacts.
- **[ImportYeti Scraper](https://apify.com/scrapesage/importyeti-scraper)** — US import records, suppliers & B2B leads.
- **[Companies House Scraper](https://apify.com/scrapesage/companies-house-scraper)** — UK companies, directors & PSCs.

### Tips

- **Target a market:** add `countries`. Kompass is strongest in **Europe and Asia**; for smaller markets raise `maxPagesPerQuery` so there are enough matches to fill the cap.
- **Cheapest run:** set `includeDetails: false` for a fast company list (name, country, city, activity, products preview) without per-profile contact enrichment.
- **Best leads first:** set `minLeadScore` (e.g. 70) or `withEmailOnly: true` to keep only contact-ready records.
- **Proxies:** keep the default residential proxy group; Kompass rate-limits aggressive datacenter traffic.
- **Exhaust an industry:** combine several related `searchQueries` (synonyms and sub-categories) rather than one broad term.

### FAQ

**How do I get companies from one country?** Add the country to `countries` (ISO-2 like `FR`, `DE`, `US`, or a name). The actor keeps only matching companies. For smaller markets, increase `maxPagesPerQuery`.

**Where do the emails and phones come from?** From each company's own public Kompass profile (the page's structured `Organization` data). Companies that haven't published a contact channel are `null` — never faked.

**Does it need a Kompass login or API key?** No. It reads public company profiles and search pages — no login, no key.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new companies automatically?** Turn on `monitorMode` and create a [Schedule](https://docs.apify.com/platform/schedules); optionally add a [webhook](https://docs.apify.com/platform/integrations/webhooks) to push new leads into your CRM.

**A field is null — why?** Some companies genuinely don't publish a website, email, VAT number or employee count. Fields are `null` only when the data isn't on the page, not because the scraper skipped them.

**Is scraping Kompass legal?** This actor collects publicly available business data only. You are responsible for using the data in compliance with applicable laws (GDPR/CCPA for any personal data) and Kompass's terms.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords searched across Kompass's global directory (60+ countries). Each term is matched against company products/activities, e.g. <code>industrial valves</code>, <code>cnc machining</code>, <code>packaging machinery</code>, <code>logistics</code>, <code>software development</code>. Results are paginated; combine with <b>Countries</b> to target a market.

## `searchType` (type: `string`):

<code>products</code> = match the keyword against company products & activities (broadest, default). <code>companyName</code> = match against the company name only.

## `startUrls` (type: `array`):

Paste any Kompass URLs — search pages (<code>.../searchCompanies?text=…</code>) or company profiles (<code>.../c/\<slug>/\<id>/</code>). Search-page URLs are crawled and paginated just like a search query.

## `companyUrls` (type: `array`):

Kompass company profile URLs (<code>https://www.kompass.com/c/\<slug>/\<id>/</code>). Each is fetched as a full company-lead record (phone, email, website, address, firmographics).

## `countries` (type: `array`):

Keep only companies in these countries. Use ISO-2 codes or names, e.g. <code>FR</code>, <code>DE</code>, <code>IT</code>, <code>US</code>, <code>India</code>. Leave empty for all countries. Tip: Kompass is strongest in Europe & Asia — when filtering to a smaller market, raise <b>Max pages per query</b> so there are enough matches to fill the cap.

## `companyTypes` (type: `array`):

Keep only companies tagged as one of these roles on Kompass. Leave empty for all.

## `withEmailOnly` (type: `boolean`):

Emit only companies that expose a contact email (requires details).

## `withPhoneOnly` (type: `boolean`):

Emit only companies that expose a phone number (requires details).

## `withWebsiteOnly` (type: `boolean`):

Emit only companies that expose their own website (requires details).

## `minEmployees` (type: `integer`):

Keep only companies with at least this many employees (requires details; companies that don't publish a headcount are excluded when set).

## `minLeadScore` (type: `integer`):

Emit only companies with at least this 0–100 lead score (email, phone, website, verification, size, tenure, registration).

## `includeDetails` (type: `boolean`):

Open each company profile for phone, fax, email, website, socials, full address, geo, year established, legal form, corporate capital, VAT & registration number, employees and the full product list (from the page's JSON-LD). Adds one request per company and a companyDetails charge. Strongly recommended — the listing alone is thin.

## `maxItems` (type: `integer`):

Total cap on company records emitted in this run.

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

How many result pages to crawl per search term (each page lists ~20–40 companies). Raise it when a Countries filter is set so there are enough matches to fill the cap.

## `monitorMode` (type: `boolean`):

Remember companies seen in previous runs (in a named key-value store) and emit only NEW ones. Pair with Apify Schedules to watch an industry or country for newly listed companies. Does not conflict with scheduling.

## `monitorStoreName` (type: `string`):

Named key-value store holding the 'already seen' company ids for monitor mode. Use a distinct name per saved task so their histories stay separate.

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

Maximum parallel requests.

## `proxyConfiguration` (type: `object`):

Proxy settings. The default Apify proxy (datacenter) is fast and reliable for Kompass; the actor automatically escalates to residential on the rare blocked request. Pick Residential here only if you see blocks.

## Actor input object example

```json
{
  "searchQueries": [
    "industrial valves"
  ],
  "searchType": "products",
  "companyTypes": [],
  "withEmailOnly": false,
  "withPhoneOnly": false,
  "withWebsiteOnly": false,
  "minEmployees": 0,
  "minLeadScore": 0,
  "includeDetails": true,
  "maxItems": 100,
  "maxPagesPerQuery": 10,
  "monitorMode": false,
  "monitorStoreName": "kompass-monitor",
  "maxConcurrency": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

All scraped Kompass company records as JSON items in the 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 = {
    "searchQueries": [
        "industrial valves"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/kompass-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 = {
    "searchQueries": ["industrial valves"],
    "maxItems": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

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

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

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

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "industrial valves"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapesage/kompass-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/kompass-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/PCl0hQzJReCF6FtQh/builds/d5VltqpBCEhCZHHGb/openapi.json
