# Dutch & Belgian Companies Hiring Now – Vacancy Leads (NL/BE) (`codeclouds/nlbe-vacature-leads-werkgevers`) Actor

Which Dutch and Belgian companies are hiring near you, and for what? Vacancies (vacatures) straight from employers' own career sites, no agencies or job boards. Filter by province, city and job group; get one lead per company with open roles, new this week, hard-to-fill roles and hiring signals.

- **URL**: https://apify.com/codeclouds/nlbe-vacature-leads-werkgevers.md
- **Developed by:** [Dennis](https://apify.com/codeclouds) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 job 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 & Belgian Companies Hiring Now – Vacancy Leads (NL/BE)

**Which companies near you are hiring right now, and for what?** Get a list of Dutch and Belgian employers with open vacancies in your region and segment, straight from their own career sites, without agency reposts. One row per company: how many vacancies, which roles, in which cities, what is new this week, and which vacancies have been open so long that they are probably **hard to fill**.

- **For** uitzendbureaus and interimkantoren, detacheerders, werving & selectie, B2B sales teams and labour-market analysts.
- **Price:** $0.02 per company lead, $0.001 per vacancy row. A typical first run costs about **$0.70** and takes under a minute.
- **No job-board scraping, no personal data**, staffing agencies and job boards filtered out: direct employers only.

### Example output

A run for Noord-Brabant (6 October 2026, leads only, minimum 2 vacancies) returned 35 employers in 23 seconds. The top of the list:

| Employer | Vacancies | Open 60+ days | Main roles | Cities |
|---|---|---|---|---|
| GGz Breburg | 124 | 91 | zorg 118 | Breda, Tilburg, Dongen |
| BAS Group | 88 | 59 | sales 22 · techniek 17 · logistiek 14 | Veghel |
| Savant Zorg | 61 | 40 | zorg 49 | Helmond |
| Vencomatic Group | 40 | 28 | techniek 15 · ict 5 | Eersel |
| NTS | 21 | 16 | productie 9 · techniek 7 | Eindhoven |

Every lead also carries a one-line Dutch summary ("*BAS Group zoekt 17 technici in Veghel*"), the salary range where published ("*€ 4.361 – € 5.901 per maand*"), its three newest vacancies with links, the website, and links to look the company up in the KvK, KBO or LinkedIn.

### Quick start

1. Pick **Provinces** (or **Cities**) and, optionally, **Job groups**. The form is prefilled with a cheap Noord-Brabant example.
2. Click **Start**. The Output tab opens with the **Company leads** view.
3. Want every vacancy as a row too? Set **What to deliver** to *Company leads + every vacancy* and switch to the **Vacancies** view.

**Your own prospect list?** Paste websites, careers pages or job-board links into **Company websites or job pages**. This works for any Dutch or Belgian employer on a public job system, not only the ones in the built-in directory.

### Recipes

- **Weekly lead feed for your region.** Save a task with your provinces and job groups, turn on **Only new since the previous run**, and schedule it weekly. From the second run you only get employers with new vacancies, and only the new vacancies; employers without news are not charged again. A province typically costs **$1–2 per month** this way.
- **Hard-to-fill vacancies.** Set **Only vacancies open at least (days)** to 60: the employers that have struggled to fill a role for two months are the warmest leads for an agency.
- **Are my clients hiring?** Put your client or prospect domains in your own company list and schedule it: a free not_found record tells you which employers have no public vacancies.
- **Into Google Sheets or your CRM.** Use Apify's Google Sheets, Make, Zapier or webhook integrations on the scheduled task. Every list field also has a flat text version (`jobGroupsText`, `topCitiesText`, `signalsText`), so the export is one column per field.

### Coverage (read this before your first run)

The built-in directory holds about **680 Dutch and Belgian employers** that publish their vacancies on a public job system (≈550 with Dutch and ≈210 with Belgian vacancies, ≈6,400 open vacancies, October 2026 build).

| Region | Employers | Region | Employers |
|---|---|---|---|
| Noord-Holland | 305 | Brussel | 67 |
| Zuid-Holland | 111 | Antwerpen | 54 |
| Noord-Brabant | 64 | Oost-Vlaanderen | 33 |
| Utrecht | 57 | Vlaams-Brabant | 26 |
| Gelderland | 34 | Waals-Brabant | 21 |
| Overijssel | 24 | West-Vlaanderen | 15 |
| Friesland / Flevoland / Limburg / Groningen | 17–22 each | Luik / Limburg (BE) | 12–13 |
| Zeeland / Drenthe | 8–9 | Henegouwen / Namen / Luxemburg | 3–9 |

Strongest segments: healthcare and mental health (GGZ, hospitals), IT and tech, finance and accounting, sales, consultancy. Thinner: logistics, production, transport and cleaning, where many employers use agencies or closed systems. **Your segment thin?** Use your own company list: any employer whose careers page links to Recruitee, Teamtailor, Workable, Greenhouse, Lever, Ashby, Personio, SmartRecruiters or Workday works.

Other limits, honestly: nationwide/remote vacancies have no province and are left out by a province filter; KvK numbers appear only where the employer prints its number on its own website (with SBI code and legal form for those numbers, cached); Belgian leads get the validated enterprise number but no KBO data yet.

### What you get per company

| Field | Meaning |
|---|---|
| `company`, `summary` | Employer and its main hiring signal in one Dutch sentence. |
| `matchingJobs`, `uniqueRoles` | Open vacancies matching your filters, and the number of distinct roles (one role posted for five offices counts once). |
| `newJobs7d`, `longOpenJobs`, `medianDaysOpen` | Posted in the last 7 days; open for 60+ days (*moeilijk vervulbaar*); median age. |
| `jobGroupsText`, `topCitiesText`, `provincesText` | Counts per job group, city and province (also as arrays). |
| `salaryRangeText`, `parttimeShare` | Median published salary range, and the share of part-time (≤ 32 h) vacancies. |
| `topVacancies` | The three newest vacancies: title, city, days open, link. |
| `momentum` | `heet` (≥ 70) / `groeiend` (≥ 50) / `stabiel` (≥ 30) / `traag`: number of vacancies, share posted in the last 30 days and growth since the previous run. |
| `newSinceLastRun`, `closedSinceLastRun` | Change since the previous run of the same task. The first run says *Eerste meting opgeslagen*: changes appear from the second run. |
| `website`, `careersUrl`, `kvkNumber`, `kboNumber`, `sbiCode`, `kvkSearchUrl`, `kboSearchUrl`, `linkedinSearchUrl` | Next-step links for your CRM. |
| `status` | `ok`, or (free, only for your own list) `not_found` / `error` with the reason in `message`. |

Job groups (*beroepsgroepen*): logistiek, transport, productie, techniek, bouw, zorg, onderwijs, horeca, schoonmaak, beveiliging, retail, klantenservice, administratie, financien, ict, sales, marketing, hr, juridisch, advies, management, **stage** (internships and graduation projects, easy to exclude) and overig (titles that fit no group).

### How it compares

- **Job-board scrapers** (Indeed, Nationale Vacaturebank, werk.nl, VDAB): far more vacancies, but full of agency reposts and duplicates, no per-company view, and job-board terms of service. Use them for volume; use this Actor for *companies*.
- **Global career-site job feeds**: jobs only, no Dutch provinces, job groups or hiring signals, and $0.004–0.012 per job. An employer with 50 vacancies costs $0.20–0.60 there, $0.02 here as one lead.
- **Jobdigger / Textkernel Jobfeed**: complete market data on subscription; this Actor is pay-per-use with no contract.

### Input

| Field | Default | Description |
|---|---|---|
| `provinces` | all | ISO codes, e.g. `NL-NB` (Noord-Brabant), `BE-VAN` (Antwerpen), `BE-BRU` (Brussel). |
| `cities` | – | Place names, e.g. `Eindhoven`, `Den Bosch`, `Gent`. Also works without a postcode. |
| `jobGroups` | all | See the list above. |
| `titleKeywords` | – | Title must contain one of these words. |
| `minOpenJobs` | `1` | Minimum open matching vacancies per employer. |
| `minDaysOpen` | `0` | Only vacancies open at least N days (hard to fill). |
| `postedWithinDays` | `0` | Only vacancies published in the last N days. |
| `countries` | `["NL","BE"]` | Country of the vacancy location. |
| `postcodes` | – | Postcode prefixes, e.g. `50`, `5611`, `2000`; NL and BE overlap, so combine with `countries`. |
| `companies` | – | Your own list (max 1,000): `acme.nl`, `acme.nl/werken-bij`, `Acme`, `acme.recruitee.com`. |
| `alsoSearchDirectory` | `false` | With your own list, also search the directory. |
| `onlyNew` | `false` | Weekly feed mode, see Recipes. Each task (or filter combination) keeps its own history; `stateKey` can name it. |
| `output` | `leads_and_jobs` | `leads`, `leads_and_jobs` or `jobs`. |
| `maxCompanies` / `maxJobs` | `100` / `500` | Directory employers checked and vacancy rows delivered per run (shared fairly, newest first). |
| `excludeStaffingAgencies` | `true` | Skip agencies, recruiters and job boards. |
| `sbiPrefixes`, `maxKvkLookups`, `includeDescription`, `trackChanges`, `stateKey` | – | Advanced. |

### Output

Company lead (`recordType: "company_lead"`, shortened):

```json
{
  "company": "BAS Group",
  "summary": "BAS Group zoekt 22 salesfuncties (o.a. Veghel); 3 nieuw in de afgelopen 7 dagen.",
  "matchingJobs": 88,
  "uniqueRoles": 88,
  "newJobs7d": 6,
  "longOpenJobs": 59,
  "medianDaysOpen": 76,
  "jobGroupsText": "sales 22 · techniek 17 · logistiek 14 · stage 7 · management 6 · transport 6 · ...",
  "topCitiesText": "Veghel 87 · Tilburg 1",
  "salaryRangeText": "€ 2.850 – € 4.200 per maand (mediaan van 2 vacatures met salaris)",
  "topVacancies": [{ "title": "Voorman Werkplaats Trucks", "city": "Veghel", "daysOpen": 4, "url": "https://basgroup.recruitee.com/o/voorman-werkplaats-trucks" }],
  "momentum": "stabiel",
  "signals": ["BAS Group zoekt 17 technici in Veghel.", "59 van de 88 vacatures staan al 60+ dagen open: mogelijk moeilijk vervulbaar."],
  "website": null,
  "careersUrl": "https://basgroup.recruitee.com",
  "kvkNumber": null,
  "kvkSearchUrl": "https://www.kvk.nl/zoeken/?q=BAS%20Group",
  "status": "ok"
}
```

Vacancy (`recordType: "job"`): `title`, `company`, `jobGroup`, `seniority`, `city`, `postcode`, `province`, `country`, `hoursPerWeekMin/Max`, `employmentType`, `workplaceType`, `salaryMin/Max/Period`, `postedAt`, `daysOpen`, `isNew`, `url`, `applyUrl`, `kvkNumber`. A `RUN_SUMMARY` record in the key-value store lists employers checked, leads, vacancies and KvK lookups.

### When should an AI agent use this?

- "Which companies in Noord-Brabant are hiring technicians right now?"
- "Give me healthcare employers in the Netherlands with at least 3 open vacancies."
- "Which employers in Utrecht have vacancies open for more than 60 days?"
- "Is acme.nl hiring, how many vacancies, and in which cities?"
- "Which new vacancies appeared in Zuid-Holland this week?"

Do not use it for job-board volume or for contact persons: it returns no personal data.

### How it works

1. Selects employers from the built-in directory (built from the Common Crawl index, refreshed during maintenance) or resolves your own list (careers page, `/werken-bij`, `/vacatures`, `werkenbij.` subdomain, or a guessed board that must carry the company's name).
2. Reads each employer's live public job feed, politely throttled per job system.
3. Locates every vacancy: postcode first (exact PDOK table for NL, bpost ranges for BE), then the place name, then the job system's region; foreign locations ("Kampen, Germany") are dropped.
4. Classifies job group, seniority, hours per week (not working hours or shifts) and salary (only with a salary word nearby, so budgets are ignored).
5. Compares with the previous run of the same feed, builds the company lead, and adds KvK/KBO data where the employer publishes its number.

### Pricing

$0.02 per company lead and $0.001 per vacancy row (pay per event). Free: not_found and error records, skipped agencies, and leads of a weekly feed without new vacancies. Examples: first run in leads mode ≈ $0.70; a weekly *only new* feed for one province ≈ $1–2 per month. Set a maximum charge per run to cap spend; the Actor stops cleanly and still delivers cheaper vacancy rows that fit.

### Legal

Only public data meant for distribution: employers' own job feeds (no login, no anti-bot circumvention), the KVK Open Dataset (open data) and company numbers that companies publish on their own website. No job-board content. **No personal data**: no recruiter names, e-mail addresses or phone numbers. You remain responsible for how you use the leads (GDPR, rules for cold outreach).

### FAQ

**Why not Indeed or Nationale Vacaturebank?** Their terms forbid scraping, and their ads are full of agency reposts. Employer career sites are the original, legal source.

**Why is `kvkNumber` empty for most employers?** Few employers print their KvK number on their website. Use `kvkSearchUrl` to look it up in one click.

**How fresh is the data?** Vacancies are read live on every run; the list of employers in the directory is refreshed during maintenance.

**Does it work for French-speaking Belgium?** Yes, Wallonia and Brussels are included and French titles are classified, but coverage is strongest in Flanders and Brussels.

### Nederlandse samenvatting

**Welke bedrijven bij jou in de buurt zoeken nu personeel?** Deze Actor haalt vacatures direct bij Nederlandse en Belgische werkgevers op, zonder vacaturebanken en zonder uitzendbureaus, en maakt er per bedrijf een lead van: aantal vacatures per beroepsgroep en plaats, nieuw deze week, vacatures die al 60+ dagen openstaan (moeilijk vervulbaar), salarisrange, website en KvK-nummer waar de werkgever dat publiceert. Ideaal voor acquisitie door uitzendbureaus, interimkantoren, detacheerders en werving & selectie.

**Veelgestelde vragen**

- *Hoe vind ik bedrijven die personeel zoeken in mijn regio?* Kies je provincie of plaatsen en eventueel beroepsgroepen, en start.
- *Hoe krijg ik elke week alleen de nieuwe vacatures?* Sla een taak op, zet "Only new since the previous run" aan en plan hem wekelijks in.
- *Welke werkgevers hebben moeilijk vervulbare vacatures?* Zet "Only vacancies open at least (days)" op 60.
- *Kan ik mijn eigen klantenlijst controleren?* Ja, zet de websites in "Company websites or job pages".
- *Prospectie voor interim- en selectiekantoren in Vlaanderen?* Kies Antwerpen, Oost-Vlaanderen, Vlaams-Brabant of Brussel; Belgische leads krijgen het ondernemingsnummer waar gepubliceerd.

**Résumé (FR).** Quelles entreprises belges et néerlandaises recrutent près de chez vous ? Offres d'emploi publiées directement par les employeurs, par province, ville et groupe de métiers, avec numéro d'entreprise (BCE) et signaux de recrutement.

### Related Actors

- [Career Sites ATS Job Feed & Company Hiring Signals](https://apify.com/CodeClouds/career-sites-ats-jobfeed): the same job-feed engine for any company worldwide.
- [NL Bedrijven Compliance Dossier](https://apify.com/codeclouds/nl-bedrijven-compliance-dossier): KvK-based compliance checks for Dutch companies.
- [Tech Stack Detector](https://apify.com/CodeClouds/tech-stack-detector): which technologies a company website uses.

### Keywords

Keywords (NL): bedrijven die personeel zoeken, vacature leads, acquisitie uitzendbureau, leads voor detachering, werving en selectie leads, interimkantoor, selectiekantoor, vacatures per provincie, vacatures per plaats, moeilijk vervulbare vacatures, vacatures direct van werkgevers, KvK-nummer, wervingssignalen, werken bij, zorgvacatures, technische vacatures, IT-vacatures Amsterdam, vacatures Vlaanderen, ondernemingsnummer.
Keywords (FR): entreprises qui recrutent, offres d'emploi Belgique, leads recrutement, numéro BCE.

### Changelog

#### 0.1.0 (2026-10-06)

- First version: built-in directory of ~680 NL/BE employers, own company list with job-system detection, province/city/postcode/job-group filters, 23 Dutch job groups, hard-to-fill vacancies, salary range, hours per week, top vacancies, next-step links, staffing-agency filter, KvK/KBO numbers, weekly *only new* feed with per-task history.

# Actor input Schema

## `provinces` (type: `array`):

Only vacancies in these provinces. The province is derived from the postcode first, then the place name, then the ATS region. Leave empty for the whole country. Nationwide/remote vacancies have no province and are left out when this is set.

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

Only vacancies in these places, e.g. Eindhoven, Tilburg, Den Bosch, Gent. Matches the city or location text, so it also works for vacancies without a postcode.

## `jobGroups` (type: `array`):

Only vacancies in these job groups, classified from the job title (Dutch, English and French titles). Empty = all groups. Tip: everything except 'stage' leaves out internships and graduation projects.

## `titleKeywords` (type: `array`):

Only vacancies whose title contains at least one of these words (case-insensitive), e.g. heftruck, monteur, verpleegkundige.

## `minOpenJobs` (type: `integer`):

Only employers with at least this many open matching vacancies (e.g. 3 for 'companies hiring 3+ technicians'). Employers from your own company list below it come back as free not_found records.

## `minDaysOpen` (type: `integer`):

Hard to fill: only vacancies open at least this many days, e.g. 60. These are the employers most likely to need help from an agency. 0 = no limit.

## `postedWithinDays` (type: `integer`):

Only vacancies published in the last N days. 0 = no limit. Vacancies without a publication date are kept.

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

Only vacancies located in these countries (NL = Netherlands, BE = Belgium).

## `postcodes` (type: `array`):

Only vacancies whose postcode starts with one of these prefixes, e.g. 50 (Tilburg region), 5611, 2000 (Antwerpen). Dutch and Belgian codes overlap (28 is both Gouda and Mechelen): combine with Countries. Vacancies without a published postcode are excluded when this is set; use Cities for those.

## `companies` (type: `array`):

One per line: a website (acme.nl), a careers page (acme.nl/werken-bij), a company name, or a job-board URL (acme.recruitee.com, https://acme.teamtailor.com/jobs, https://apply.workable.com/acme). The job system is detected automatically. Employers without a public job system come back as free not_found records. Max 1,000 per run.

## `alsoSearchDirectory` (type: `boolean`):

With an own company list the built-in directory is skipped, unless this is on.

## `onlyNew` (type: `boolean`):

Deliver only vacancies that were not there at the previous run of this feed, plus vacancies an earlier run matched but could not deliver (max vacancies or max charge). Company leads are only delivered (and charged) for employers with at least one genuinely new vacancy; their counts still cover all open matching vacancies. The first run stores the baseline and returns everything. Each task (or each filter combination) keeps its own history.

## `trackChanges` (type: `boolean`):

Remember which vacancies each employer had, so the next run marks new ones (isNew) and counts closed ones. Needed for 'Only new'.

## `output` (type: `string`):

Company leads only (one row per employer, with its top 3 newest vacancies inside), leads plus one row per vacancy, or vacancies only. Leads only gives the cleanest table and the lowest cost.

## `maxCompanies` (type: `integer`):

Upper limit on directory employers checked per run. Employers matching your provinces/postcodes are selected first, larger employers before smaller ones.

## `maxJobs` (type: `integer`):

Upper limit on vacancy rows delivered (and charged) per run, shared fairly over the employers (newest vacancies first). Company leads always count all matching vacancies.

## `excludeStaffingAgencies` (type: `boolean`):

Skip uitzendbureaus, detacheerders, recruiters and job boards (detected by name or by 'voor onze opdrachtgever zoeken wij' wording), so you only get direct employers.

## `sbiPrefixes` (type: `array`):

Only directory employers whose main KvK activity (SBI) starts with one of these codes, e.g. 86 (healthcare). Experimental: only a few dozen directory employers have known KvK data, so this narrows the result to very few leads. Not applied to your own company list.

## `maxKvkLookups` (type: `integer`):

SBI code and legal form come from the KVK open dataset, which rate-limits hard: every lookup adds 25-90 seconds of run time. Results are cached in your account, so later runs get them for free. 0 = only cached/pre-enriched KvK data.

## `includeDescription` (type: `boolean`):

Add the plain-text vacancy description (max 20,000 characters) to each vacancy row. Makes the dataset much larger.

## `stateKey` (type: `string`):

Optional name for this feed's history (new/closed vacancies). By default each saved task, or else each combination of filters, has its own history. Set the same key on two runs to make them share one.

## Actor input object example

```json
{
  "provinces": [
    "NL-NB"
  ],
  "minOpenJobs": 2,
  "minDaysOpen": 0,
  "postedWithinDays": 0,
  "countries": [
    "NL",
    "BE"
  ],
  "alsoSearchDirectory": false,
  "onlyNew": false,
  "trackChanges": true,
  "output": "leads",
  "maxCompanies": 40,
  "maxJobs": 100,
  "excludeStaffingAgencies": true,
  "maxKvkLookups": 1,
  "includeDescription": false
}
```

# Actor output Schema

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

All dataset items: company leads first, then vacancies.

## `runSummary` (type: `string`):

Employers checked, leads and vacancies delivered, KvK lookups, directory build date.

# 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 = {
    "provinces": [
        "NL-NB"
    ],
    "minOpenJobs": 2,
    "output": "leads",
    "maxCompanies": 40,
    "maxJobs": 100,
    "maxKvkLookups": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("codeclouds/nlbe-vacature-leads-werkgevers").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 = {
    "provinces": ["NL-NB"],
    "minOpenJobs": 2,
    "output": "leads",
    "maxCompanies": 40,
    "maxJobs": 100,
    "maxKvkLookups": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("codeclouds/nlbe-vacature-leads-werkgevers").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 '{
  "provinces": [
    "NL-NB"
  ],
  "minOpenJobs": 2,
  "output": "leads",
  "maxCompanies": 40,
  "maxJobs": 100,
  "maxKvkLookups": 0
}' |
apify call codeclouds/nlbe-vacature-leads-werkgevers --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,codeclouds/nlbe-vacature-leads-werkgevers"
        }
    }
}
```

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/Uwl37TYVYpiVaFHaB/builds/r84YpDXck05u11Hee/openapi.json
