# Dutch Company Register — KVK Scraper, No Login Required (`studio-amba/kvk-scraper`) Actor

Search and extract Dutch company data from the KVK (Kamer van Koophandel). Look up by company name, KVK number, city, or postal code. Returns company name, KVK number, address, trade names, legal form, registration status, and more. No cookies, no login.

- **URL**: https://apify.com/studio-amba/kvk-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Dutch Company Register Scraper — KVK Data Lookup

Search and extract Dutch company data from the KVK (Kamer van Koophandel), the Netherlands' official commercial register. Look up by company name, KVK number, city, or postal code. Returns company name, KVK number, address, trade names, legal form, SBI activity codes, and registration status. No cookies, no login required.

### How to scrape KVK company data

This actor searches the official Dutch Kamer van Koophandel register and extracts structured company data. The KVK register contains every Dutch company, sole trader, foundation, and association — over 2.5 million active entities.

#### Search by Company Name

Enter a company name or keyword. The actor searches the KVK register and returns all matching companies with their registration details, addresses, and activity codes.

#### Search by KVK Number

Look up a specific company by its 8-digit KVK number for an exact match. Every Dutch company has a unique KVK number assigned at registration.

#### Filter by Location

Narrow results by city name or postal code to focus on a specific geographic area. Useful for local market research, mapping competitors, or building regional lead lists.

### What data does Dutch Company Register Scraper extract?

| Field | Type | Description |
|-------|------|-------------|
| **companyName** | String | Official registered company name |
| **kvkNumber** | String | 8-digit KVK registration number |
| **branchNumber** | String | 12-digit branch establishment number (vestigingsnummer) |
| **rsin** | String | RSIN number (used for tax and government interactions) |
| **legalForm** | String | Legal form (BV, NV, Eenmanszaak, VOF, Stichting, etc.) |
| **registrationStatus** | String | Active or deregistered |
| **tradeNames** | Array | Current trade names (handelsnamen) |
| **formerTradeNames** | Array | Previous trade names |
| **address** | String | Full visiting address |
| **street** | String | Street name |
| **houseNumber** | String | House number |
| **postalCode** | String | Dutch postal code (1234AB format) |
| **city** | String | City name |
| **province** | String | Province |
| **sbiActivities** | Array | SBI activity codes with descriptions |
| **employeeCount** | String | Number of employees |
| **establishmentType** | String | Hoofdvestiging (main) or Nevenvestiging (branch) |
| **registrationDate** | String | Date of registration |
| **url** | String | KVK profile URL |
| **scrapedAt** | String | ISO timestamp of extraction |

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| **Company Name / Keywords** | String | — | Search by company name or keywords |
| **KVK Number** | String | — | Look up by 8-digit KVK number |
| **City** | String | — | Filter by city name |
| **Postal Code** | String | — | Filter by postal code |
| **Active Companies Only** | Boolean | `true` | Skip deregistered companies |
| **Max Results** | Integer | `100` | Maximum companies to return |
| **Proxy Configuration** | Object | Residential | Proxy settings |

### Example output

```json
{
    "companyName": "Koninklijke Philips N.V.",
    "kvkNumber": "17085670",
    "branchNumber": "000023529097",
    "rsin": "003645498",
    "legalForm": "Naamloze Vennootschap",
    "registrationStatus": "active",
    "tradeNames": ["Philips", "Royal Philips"],
    "formerTradeNames": ["Philips Electronics"],
    "address": "Amstelplein 2, 1096BC Amsterdam",
    "street": "Amstelplein",
    "houseNumber": "2",
    "postalCode": "1096BC",
    "city": "Amsterdam",
    "province": "Noord-Holland",
    "sbiActivities": [
        { "code": "2660", "description": "Vervaardiging van bestralingsapparatuur en elektromedische apparatuur" }
    ],
    "employeeCount": "2000+",
    "establishmentType": "Hoofdvestiging",
    "registrationDate": "01-01-1920",
    "url": "https://www.kvk.nl/bestellen/bedrijfsdossier/?kvkNummer=17085670",
    "scrapedAt": "2026-05-20T14:30:00.000Z"
}
````

### Tips for best results

- **B2B lead generation**: Search by city + industry keyword to build targeted lead lists. Example: "accountant" in "Rotterdam".
- **Due diligence**: Look up specific KVK numbers to verify company existence and registration status.
- **Competitor mapping**: Search by product or service keyword to find all competitors in a region.
- **Active filter**: Keep "Active Companies Only" enabled to exclude dissolved and deregistered entities.
- **Rate limiting**: The KVK site has modest rate limits. For large runs (1000+ results), use proxy configuration.

### How much does it cost?

Dutch Company Register Scraper runs on the Apify platform. You pay only for compute resources used.

| Search size | Estimated time | Estimated cost |
|-------------|---------------|----------------|
| 10 companies | ~15 seconds | ~$0.005 |
| 100 companies | ~3 minutes | ~$0.04 |
| 1,000 companies | ~30 minutes | ~$0.30 |

Apify's free tier includes $5 of monthly compute — enough to search thousands of companies at no cost.

### Can I integrate?

Yes. Send Dutch company data directly to your existing tools:

- **Google Sheets** — Build a live Dutch company database
- **HubSpot / Salesforce** — Enrich CRM contacts with official KVK data
- **Slack** — Get notified about new companies matching your criteria
- **Webhooks** — Push to any HTTP endpoint for custom workflows

### Can I use it as an API?

Yes. Call Dutch Company Register Scraper programmatically:

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("studio-amba/kvk-scraper").call(run_input={
    "searchQuery": "Philips",
    "city": "Amsterdam",
    "maxResults": 20,
})

for company in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{company['companyName']} (KVK {company['kvkNumber']}) — {company['city']}")
```

#### JavaScript

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

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

const run = await client.actor('studio-amba/kvk-scraper').call({
    searchQuery: 'IT',
    city: 'Utrecht',
    maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(c => console.log(`${c.companyName} | KVK ${c.kvkNumber} | ${c.city}`));
```

### FAQ

#### What is the KVK?

The KVK (Kamer van Koophandel) is the Netherlands' official commercial register. Every Dutch business entity — companies, sole traders, foundations, associations — must register with the KVK and receives a unique 8-digit KVK number.

#### What is a KVK number?

A KVK number is a unique 8-digit identifier assigned to every entity in the Dutch commercial register. It's used for business identification, tax, and legal purposes.

#### What are SBI codes?

SBI (Standaard Bedrijfsindeling) codes classify companies by economic activity, similar to NACE codes in Europe. Each company has one or more SBI codes describing what they do.

#### How to verify a Dutch company?

Enter the KVK number in this actor to verify a company's registration status, legal form, and address. Active companies are currently registered; deregistered companies have been dissolved.

#### What's the difference between KVK number and vestigingsnummer?

The KVK number identifies the legal entity. The vestigingsnummer (12 digits) identifies a specific establishment/branch location. A company with 5 offices has 1 KVK number and 5 vestigingsnummers.

### Limitations

- Detailed company profiles (full SBI codes, employee counts, annual reports) require the paid KVK API — this actor extracts what's publicly available on the search interface
- The KVK site rate-limits at roughly 60-120 requests/minute
- Maximum 50 results per search page on kvk.nl — broad queries need multiple pages
- Some company data (e.g., financial statements) is only available via paid KVK products

### Other European company register scrapers

Working with European business data? Combine with these tools:

- **[Belgian Company Enrichment](https://apify.com/studio-amba/kbo-enrichment)** — Belgian KBO/BCE company register
- **[German Company Register](https://apify.com/studio-amba/handelsregister-scraper)** — German Handelsregister
- **[French Company Enrichment](https://apify.com/studio-amba/french-company-enrichment)** — French company data from official sources

### Your feedback

Found a bug or want a feature? Open an issue on the [Issues tab](https://console.apify.com/actors/studio-amba~kvk-scraper/issues). Your feedback helps improve this actor.

# Actor input Schema

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

Search for companies by name or keywords. Example: 'Philips', 'Shell', 'Booking'.

## `kvkNumber` (type: `string`):

Look up a specific company by its 8-digit KVK number.

## `city` (type: `string`):

Filter by city. Example: 'Amsterdam', 'Rotterdam', 'Utrecht'.

## `postalCode` (type: `string`):

Filter by postal code. Example: '1012AB'.

## `activeOnly` (type: `boolean`):

Only return currently registered (active) companies.

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

Maximum number of companies to return.

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

Apify proxy configuration. Datacenter proxies work fine for KVK.

## Actor input object example

```json
{
  "searchQuery": "Philips",
  "activeOnly": true,
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "searchQuery": "Philips",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/kvk-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 = {
    "searchQuery": "Philips",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/kvk-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 '{
  "searchQuery": "Philips",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call studio-amba/kvk-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Dutch Company Register — KVK Scraper, No Login Required",
        "description": "Search and extract Dutch company data from the KVK (Kamer van Koophandel). Look up by company name, KVK number, city, or postal code. Returns company name, KVK number, address, trade names, legal form, registration status, and more. No cookies, no login.",
        "version": "0.0",
        "x-build-id": "1gfuBfi5cvSNTm4gK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~kvk-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-kvk-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/studio-amba~kvk-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-kvk-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/studio-amba~kvk-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-kvk-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQuery": {
                        "title": "Company Name / Keywords",
                        "type": "string",
                        "description": "Search for companies by name or keywords. Example: 'Philips', 'Shell', 'Booking'."
                    },
                    "kvkNumber": {
                        "title": "KVK Number",
                        "type": "string",
                        "description": "Look up a specific company by its 8-digit KVK number."
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "Filter by city. Example: 'Amsterdam', 'Rotterdam', 'Utrecht'."
                    },
                    "postalCode": {
                        "title": "Postal Code",
                        "type": "string",
                        "description": "Filter by postal code. Example: '1012AB'."
                    },
                    "activeOnly": {
                        "title": "Active Companies Only",
                        "type": "boolean",
                        "description": "Only return currently registered (active) companies.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of companies to return.",
                        "default": 100
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Datacenter proxies work fine for KVK."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
