# Kompass Scraper - Global B2B Company Directory (`santamaria-automations/kompass-scraper`) Actor

Scrape company data from Kompass.com, a global B2B directory with 60M+ companies across 70+ countries. Extract names, websites, phone numbers, emails, addresses, employee counts, certifications, and more.

- **URL**: https://apify.com/santamaria-automations/kompass-scraper.md
- **Developed by:** [NanoScrape](https://apify.com/santamaria-automations) (community)
- **Categories:** Lead generation, Automation, AI
- **Stats:** 81 total users, 21 monthly users, 99.7% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 company found (search)s

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 Directory

Scrape company data from [Kompass.com](https://www.kompass.com), a global B2B directory with 60M+ companies across 70+ countries.

### Anti-Bot Protection Note

Kompass.com uses DataDome anti-bot protection. For best results, use residential proxies (`RESIDENTIAL` group) with country matching enabled (e.g., `countryCode: "DE"` for German results). If you experience empty results, try running again — a fresh residential IP often passes the challenge.

### Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client — Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

**Apify MCP server URL:**

```
https://mcp.apify.com?tools=santamaria-automations/kompass-scraper
```

**Example prompt once connected:**

> "Use `kompass-scraper` to scrape company data from kompass. Return results as a table."

Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically via `add-actor`.

### What data do you get?

For each company, the scraper extracts:

- **Company name** and description
- **Website URL**, phone number, and email
- **Full address** (street, postal code, city, country)
- **GPS coordinates** (latitude/longitude)
- **Employee count** (e.g., "Von 20 bis 49 Mitarbeiter")
- **Year founded**
- **Revenue/turnover**
- **Supplier type** (Exporter, Manufacturer, Service provider, etc.)
- **Product categories** and certifications (ISO, etc.)
- **Company logo**

### How to use

#### Option 1: Paste a search URL

1. Go to any Kompass country site (e.g., [de.kompass.com](https://de.kompass.com)) and search for companies
2. Copy the search results URL
3. Paste it into the **Search URLs** field

Works with all Kompass country domains: `de.kompass.com`, `fr.kompass.com`, `gb.kompass.com`, `it.kompass.com`, `es.kompass.com`, and 70+ more.

#### Option 2: Use search query + country

Set the **Search Query** (e.g., "software") and **Country** code (e.g., "DE") fields. The scraper builds the URL automatically.

#### Option 3: Paste company profile URLs directly

You can also paste company profile URLs (e.g., `https://in.kompass.com/c/rolex-rings-private-limited/in774979/`) into **Search URLs** to fetch a single company's full profile without paginating. Ideal for dedupe workflows: run a search-only pass first, dedupe against your database, then pay for detail only on the new companies.

#### Country filter for long searches

Kompass sometimes returns off-target results at the tail of long queries (e.g., a "forged components India" search may leak UAE companies beyond page 10). Setting the **Country** field alongside `searchUrls` enables a post-filter that drops non-matching results before the paid detail fetch.

#### Input example

```json
{
  "searchUrls": ["https://de.kompass.com/searchCompanies?text=software"],
  "maxResults": 100,
  "includeDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "countryCode": "DE"
  }
}
```

#### Input parameters

| Parameter | Type | Description |
|-----------|------|-------------|
| `searchUrls` | array | Kompass search result URLs |
| `searchQuery` | string | Search keyword (alternative to searchUrls) |
| `country` | string | ISO country code for domain (default: "DE") |
| `maxResults` | integer | Maximum companies to scrape (default: 100) |
| `includeDetails` | boolean | Fetch detail pages for full data (default: true) |
| `fetchCatalogueLinks` | boolean | Fetch media page to extract `catalogue_pdf` and `catalogue_video` (default: false) |
| `proxyConfiguration` | object | Proxy settings (RESIDENTIAL recommended) |

### Output example

```json
{
  "id": "DENKC00033877",
  "name": "RLS Wacon analytics GmbH",
  "description": "Die RLS Wacon analytics GmbH ist ein Familienunternehmen mit Sitz in Hildesheim...",
  "website": "https://www.rls-wacon.de",
  "phone": "+49 5121 28 126 0",
  "email": "info@rls-wacon.de",
  "address": "Gropiusstrasse 12, 31137 Hildesheim",
  "city": "Hildesheim",
  "postal_code": "31137",
  "country": "Germany",
  "country_code": "DE",
  "latitude": 52.16463,
  "longitude": 9.92306,
  "logo_url": "https://img.kompass.com/sys-master-images/...",
  "employee_count": "Von 20 bis 49 Mitarbeiter",
  "year_founded": "2005",
  "supplier_type": "Exporteur",
  "categories": ["Elektrische Messgeraete und Steuergeraete", "Analysegeraete fuer Fluessigkeiten"],
  "certifications": ["ISO 9001"],
  "vat_number": "DE124391220",
  "catalogue_url": "https://de.kompass.com/c/cv/rls-wacon-analytics-gmbh/denkc00033877/",
  "catalogue_pdf": "https://prokcssmedia.blob.core.windows.net/sys-master-images/.../Wasserkatalog.pdf",
  "catalogue_video": "https://www.youtube.com/watch?v=vpS9_St3K6s",
  "source_url": "https://de.kompass.com/c/rls-wacon-analytics-gmbh/denkc00033877/",
  "source_platform": "kompass.com",
  "scraped_at": "2026-03-26T10:30:00Z"
}
```

### Tips

- **Include Details = ON** gives you email, full address, coordinates, employee count, founding year, VAT/GST number, and more. Highly recommended.
- **`catalogue_url`** is always the Kompass media page (listing brochures and videos). Enable **`fetchCatalogueLinks`** to also get `catalogue_pdf` (direct PDF download) and `catalogue_video` (YouTube/Vimeo link) — this makes one extra request per company.
- **Include Details = OFF** is faster but only returns name, city, phone, website, and categories from search results.
- **RESIDENTIAL proxy with country matching** is recommended. Kompass uses DataDome bot protection which may challenge datacenter IPs. Set `countryCode` in proxy config to match the Kompass domain (e.g., "DE" for de.kompass.com).
- The scraper works with all 70+ Kompass country domains.
- The scraper rotates through multiple Chrome TLS profiles and proxy sessions automatically for best success rates.

### Known limitations

Kompass.com uses DataDome bot protection which requires JavaScript execution for initial challenge solving. The success rate depends on the proxy quality and IP reputation. If you consistently get 0 results, try:

1. Using RESIDENTIAL proxy group with country matching
2. Running at different times of day
3. Reducing `maxResults` to avoid rate limiting

### Pricing

This actor uses pay-per-result pricing:

| Event | Price |
|-------|-------|
| Per run | $0.005 |
| Per company (search only) | $0.003 |
| Per company (with details) | $0.005 |

# Actor input Schema

## `searchUrls` (type: `array`):

One or more Kompass URLs. Two forms are supported:

1. Search URLs — e.g. https://de.kompass.com/searchCompanies?text=software — paginate through results.
2. Company profile URLs — e.g. https://in.kompass.com/c/rolex-rings-private-limited/in774979/ — fetch a single company's full profile directly. Useful for cheap dedupe workflows: run a search-only pass first, dedupe against your DB, then pay for detail only on new companies.

Works with any country domain (de., fr., gb., in., us., etc.).

## `searchQuery` (type: `string`):

Search keyword (e.g., 'software', 'engineering', 'metalworking'). Used to build a search URL if searchUrls is empty.

## `country` (type: `string`):

ISO country code (e.g. 'DE', 'FR', 'IN'). When searchUrls is empty, this picks the Kompass subdomain. When searchUrls is set, it acts as a post-filter that drops SERP results not matching the target country — helpful because Kompass sometimes returns off-target companies at the tail of long queries.

## `maxResults` (type: `integer`):

Maximum number of companies to scrape.

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

Fetch each company's detail page for full address, email, coordinates, employee count, founding year, and more. Slower but much richer data.

## `fetchCatalogueLinks` (type: `boolean`):

When enabled, the scraper makes an extra request to the company's media page to find direct PDF catalogue download links. Increases request count slightly but provides direct download URLs where available.

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

Apify proxy settings. Recommended for Kompass to handle bot protection.

## Actor input object example

```json
{
  "searchUrls": [
    "https://de.kompass.com/searchCompanies?text=software"
  ],
  "country": "DE",
  "maxResults": 50,
  "includeDetails": true,
  "fetchCatalogueLinks": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `companies` (type: `string`):

Dataset containing scraped company data

# 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 = {
    "searchUrls": [
        "https://de.kompass.com/searchCompanies?text=software"
    ],
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("santamaria-automations/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 = {
    "searchUrls": ["https://de.kompass.com/searchCompanies?text=software"],
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("santamaria-automations/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 '{
  "searchUrls": [
    "https://de.kompass.com/searchCompanies?text=software"
  ],
  "maxResults": 50
}' |
apify call santamaria-automations/kompass-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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