# Dutch Garages & Car Dealers (RDW) (`memorable_alphabet/dutch-garages-dealers-rdw`) Actor

Directory of the 30,000 Dutch companies recognised by the RDW: APK garages, car dealers, dismantlers, tachograph workshops, exporters and more. Official open data with address, recognitions and coordinates. Filter by type, city and postcode. No proxy.

- **URL**: https://apify.com/memorable_alphabet/dutch-garages-dealers-rdw.md
- **Developed by:** [Mathieu](https://apify.com/memorable_alphabet) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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/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

## Dutch Garages & Car Dealers (RDW recognised companies)

The RDW, the Dutch vehicle authority, recognises about 30,000 companies for vehicle-related work:
APK (MOT) garages, car dealers, dismantlers, tachograph workshops, exporters, number plate makers and
more. This Actor returns that official list with name, address, every recognition the company holds,
and coordinates, municipality and province. Filter by recognition type, city, postcode area or name.
No proxy, no login, no scraping.

### Use cases

- **Sales and marketing to the automotive trade:** build target lists of garages, dealers or scrap
  yards per region.
- **Suppliers, parts and software vendors:** find every APK garage in a province, or every
  tachograph workshop in the country.
- **Maps and store locators:** coordinates and municipality are included.
- **Market analysis:** count garages per municipality, see which companies hold several recognitions.

### Input

| Field | Description |
|---|---|
| `recognitions` | RDW recognition types to include (APK garages, dealers, dismantlers, ...). Empty = all companies. |
| `cities` | Cities, matched case-insensitively. |
| `postcodePrefixes` | 1 to 4 digit postcode prefixes, e.g. `35` for the Utrecht area. |
| `nameContains` | Text the company name must contain. |
| `addLocation` | Add coordinates, municipality and province (default on). |
| `maxItems` | Cap on companies returned. Default `1000`. |

### Output (one row per company)

`companyNumber`, `name`, `tradeName`, `street`, `houseNumber`, `postcode`, `city`, `recognitions`
(the full list the company holds), the flags `isApkGarage`, `isApkHeavyGarage`, `isApkAgricultural`,
`isDealer`, `isDismantler`, `isTachographWorkshop`, `isExporter`, `isGasInstaller`, `isPlateMaker`,
and with `addLocation`: `municipality`, `province`, `latitude`, `longitude`.

### Notes

- Source: RDW open data (opendata.rdw.nl) for the companies and recognitions, and the PDOK
  Locatieserver (the national geo registry) for locations. Coordinates are those of the address and
  are missing when PDOK cannot match the address.
- The register holds the company and its recognitions only: **no phone number, email or website**.
- `isDealer` is the RDW's dealer trade plate recognition (`Handelaarskenteken`); it also covers
  businesses that are not typical car dealers. A company can hold many recognitions.
- Recognitions are filtered on the "any of" basis: a company is returned if it holds at least one
  of the selected types.
- The data reflects the register, which updates regularly. Recognitions can be withdrawn.

# Actor input Schema

## `recognitions` (type: `array`):

Only companies with at least one of these RDW recognitions. Empty = all 30,000 companies. For garages choose 'APK light vehicles'; for dealers 'Dealer trade plates'; for scrap yards 'Dismantling'.

## `cities` (type: `array`):

Only companies in these cities, e.g. Utrecht, Rotterdam. Matched case-insensitively on the register's city name.

## `postcodePrefixes` (type: `array`):

Only companies whose 4-digit postcode starts with one of these, e.g. 35 for the Utrecht area, 1011 for one postcode.

## `nameContains` (type: `string`):

Only companies whose name contains this text, e.g. 'Kwik-Fit', 'BMW'.

## `addLocation` (type: `boolean`):

Add latitude, longitude, municipality and province from the Dutch national address registry (PDOK). Adds one lookup per company.

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

Cap on the number of companies returned.

## `maxRequestRetries` (type: `integer`):

Retries per failed request, with growing waits.

## Actor input object example

```json
{
  "recognitions": [],
  "cities": [],
  "postcodePrefixes": [],
  "addLocation": true,
  "maxItems": 1000,
  "maxRequestRetries": 3
}
```

# Actor output Schema

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

All matching companies as a 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("memorable_alphabet/dutch-garages-dealers-rdw").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("memorable_alphabet/dutch-garages-dealers-rdw").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 '{}' |
apify call memorable_alphabet/dutch-garages-dealers-rdw --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memorable_alphabet/dutch-garages-dealers-rdw"
        }
    }
}
```

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/e8OMP9r4daguC6hKO/builds/Npoyz5QCeX39fj4xo/openapi.json
