# NL Faillissementen Monitor (`codeclouds/nl-faillissementen-monitor`) Actor

Dagelijkse feed van Nederlandse faillissementen en surseances van bedrijven (rechtspersonen), incl. KvK-nummer, adres, curator en rechtbank. Bron: Centraal Insolventieregister.

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

## Pricing

from $5.00 / 1,000 insolventie-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

## NL Faillissementen Monitor 🇳🇱

Get **daily Dutch bankruptcy and receivership (surseance) publications for companies** as structured JSON — company name, KvK number, address, court, curator and insolvency case number — straight from the official Centraal Insolventieregister.

Every working day, Dutch courts publish new bankruptcies, receiverships, and case updates (transfers, closures, trustee replacements). This actor turns that public stream into a clean, structured feed for credit risk, debt collection, and B2B lead generation — while deliberately **excluding personal debt restructuring (WSNP) publications and any record that matches a natural-person pattern**, even when it appears inside a "company" category.

### Who is this for?

- **Credit risk & credit management teams** — spot a customer's bankruptcy the day it's published
- **Debt collection agencies** — prioritize claims before a bankruptcy estate is distributed
- **Curators & insolvency law firms** — track case activity across courts
- **B2B lead generators** — auction houses, appraisers, liquidators looking for bankruptcy-estate opportunities
- **Data/market research teams** — feed Dutch corporate distress data into your own models
- **AI agents** — structured JSON output, ideal as a tool for agentic workflows (MCP-ready)

### When should an AI agent use this?

Point an AI agent at this actor when a user asks things like:

- "Which companies went bankrupt in the Netherlands this week?"
- "Has \[company name / KvK number] filed for bankruptcy?"
- "Give me all new receiverships (surseances) published by Rechtbank Amsterdam in the last 5 working days."
- "Monitor new bankruptcies daily and alert me to new cases."
- "Find the curator handling a specific bankruptcy case so I can file a claim."

### What data do you get?

Each result is one publication about a company (rechtspersoon), enriched into structured fields:

```json
{
  "dagId": "20260710000000",
  "publicatiedatum": "/Date(1783634400000)/",
  "gebeurtenisDatum": "07 juli 2026",
  "publicerendeRechtbank": "Rechtbank Amsterdam",
  "publicatiecluster": "faillissementen",
  "publicatiesoort": null,
  "insolventienummer": "F.13/26/216",
  "type": "faillissement",
  "gebeurtenisType": "uitspraak",
  "bedrijfsnaam": "Nidum Ovo B.V",
  "handelsnamen": ["De Kliniekinrichter", "Power Electrics"],
  "kvkNummer": "59232900",
  "correspondentieAdres": "Isolatorweg 4 A 1014AS Amsterdam",
  "vestigingsAdres": "Isolatorweg 4 A 1014AS Amsterdam",
  "curatorNaam": "mr D.P. Schildknecht",
  "curatorAdres": "Postbus 75640 1070AP AMSTERDAM",
  "curatorTelefoon": "020-5460606",
  "rechterCommissaris": "mr. A.E. de Vos",
  "ruweTekst": "Uitspraak faillissement op 07 juli 2026 inzake (F.13/26/216) Nidum Ovo B.V, ...",
  "zaakGeschiedenis": null
}
```

- **`ruweTekst`** always includes the original publication text, so you can verify or re-parse anything the structured fields might have missed
- **`type`** is `faillissement`, `surseance`, or `overig` (rectifications and trustee-replacement notices, which don't map to a single case type)
- **`gebeurtenisType`** classifies WHAT kind of event this is, independent of `type`: `uitspraak` (a fresh
  ruling), `einde` (case closure/settlement), `zitting` (a hearing), `rectificatie`, `curatorwissel` (trustee
  replacement), or `overig`. Use this to distinguish "a new case just started" from "a case is being wound
  down" without parsing `publicatiecluster` yourself

#### Case history (`trackZaakGeschiedenis`, optional, separately charged)

With `trackZaakGeschiedenis: true`, each record is compared against previously seen publications for the same
`insolventienummer` (tracked across runs in the actor's key-value store, within the register's ~20-25
working-day rolling window). When a match is found, `zaakGeschiedenis` is filled with the **full previously
seen chain** for this case (oldest first, capped at the last 10 entries so the key-value store doesn't grow
unbounded) — not just the single most recent event:

```json
{
  "zaakGeschiedenis": [
    { "gebeurtenisType": "uitspraak", "publicatiedatum": "/Date(1783030800000)/", "dagId": "20260703000000" },
    { "gebeurtenisType": "curatorwissel", "publicatiedatum": "/Date(1783635600000)/", "dagId": "20260710000000" }
  ]
}
```

This turns loose publications into a real case timeline — curators and law firms can see the whole sequence
("`uitspraak` → `curatorwissel` → now `einde`") instead of tracking `insolventienummer` themselves across daily
runs, or losing intermediate steps if they only archive the latest state. `null` (no `insolventienummer`
extracted, or no previous publication seen for this case yet) is a normal, unbilled result. Only linked records
are charged the extra `case-status-update` event.

#### Filters (`rechtbankFilter`, `bedrijfsnaamFilter`, `vereistKvkNummer`)

Beyond the base publication-type toggles, three filters reduce noise (and unnecessary `insolventie-record`
charges) for a targeted subset: `rechtbankFilter` limits to specific courts, `bedrijfsnaamFilter` matches
keywords against the extracted company/trade name (case-insensitive), and `vereistKvkNummer` only delivers
publications where a KvK number could actually be extracted.

#### Run summary (key-value store, free)

At the end of each run, a `RUN_SUMMARY` object is written to the actor's key-value store — no extra charge. It
includes the total records delivered and a parse-quality metric: how many records had no extractable
`bedrijfsnaam` (`parseFailures`) and the resulting rate, so you can gauge how often you'd need to fall back to
`ruweTekst` for this run's batch.

### Input options

| Field | Description | Default |
|---|---|---|
| `daysBack` | How many recent publication days to fetch (the register keeps a rolling window of ~20-25 working days) | `3` |
| `includeFaillissementen` | Include bankruptcy publications | `true` |
| `includeSurseances` | Include receivership (surseance) publications | `true` |
| `includeSchuldsaneringen` | Include personal debt restructuring (WSNP) publications — **not recommended**, see Legal | `false` |
| `rechtbankFilter` | Only publications from these courts, e.g. `["Rechtbank Amsterdam"]` | `[]` (all courts) |
| `bedrijfsnaamFilter` | Only publications whose extracted company/trade name matches one of these keywords (case-insensitive) | `[]` (no filter) |
| `vereistKvkNummer` | Only deliver (and charge for) publications where a KvK number could be extracted | `false` |
| `incrementalMode` | Only fetch publication days not seen in a previous run — ideal for daily scheduling | `false` |
| `trackZaakGeschiedenis` | Link later events (trustee replacement, closure, ...) for the same insolvency case number to the previously seen status, across runs | `false` |

### Typical use cases

**Daily nationwide bankruptcy monitor:**

```json
{
  "daysBack": 1,
  "incrementalMode": true
}
```

**Monitor a specific court:**

```json
{
  "rechtbankFilter": ["Rechtbank Amsterdam"],
  "includeSurseances": false
}
```

### Data source & legality

This actor uses the **public JSON feed behind insolventies.rechtspraak.nl** (the Dutch judiciary's official Centraal Insolventieregister search tool) — no authentication, not disallowed by `robots.txt`.

- ✅ Official court publications, published by law for public notice to creditors
- ✅ Scope limited to companies (rechtspersonen) and their curators/trustees, acting in a professional capacity
- ⚠️ **Personal debt restructuring (schuldsanering / WSNP) is excluded by default.** These publications concern private individuals and include home address and date/place of birth — data the actor does not collect unless you explicitly opt in via `includeSchuldsaneringen`
- ⚠️ Even with that flag off, sole proprietors occasionally go bankrupt as a **natural person** and their publication can appear inside a "company" category (e.g. "faillissementen"). This actor detects that pattern in the publication text itself (home address / birth date markers) and excludes those records regardless of which category they were published under
- If you enable `includeSchuldsaneringen`, you become responsible for your own GDPR compliance as data controller for that personal data

### FAQ

**How far back does the data go?** The underlying register only exposes a rolling window of the most recent ~20-25 working days — this is not a historical archive.

**Why did I get fewer results than expected?** Publications about natural persons (sole proprietors, personal restructuring) are filtered out by default — see Legal above.

**How do I get only new items?** Enable `incrementalMode` and schedule the actor; it remembers which publication days it already processed.

### Pricing

This Actor uses Apify's Pay-Per-Event (PPE) pricing model.

- **Actor Start:** $0.00005 (Apify default)
- **insolventie-record:** $0.005 per delivered record
- **case-status-update:** $0.015 extra, only with `trackZaakGeschiedenis` enabled and only when a link to a
  previously seen publication for the same case is actually found

### Related Actors

Also by this developer — Dutch official-publication feeds that pair well with this one:

- **[NL Vergunningen & Bekendmakingen Leadfeed](https://apify.com/codeclouds/nl-vergunningen-leadfeed)** — same "official government publication stream → structured feed" approach, for building permits instead of bankruptcies.
- **[NL Bodemrisico Check](https://apify.com/codeclouds/nl-bodemrisico-check)** — a complementary due-diligence check: bankruptcy/receivership risk on the company side, soil-contamination risk on the property side.

***

*Zoekwoorden: faillissement nederland, curatele, surseance van betaling, kvk-faillissement, insolventieregister, incasso faillissement, credit risk nederland, faillissementsmonitor.*

### Keywords

faillissement, bankruptcy netherlands, insolventie, insolvency register, kvk, curator, credit risk, debt collection, rechtspraak

### Changelog

#### 0.3.2

- `zaakGeschiedenis` now returns the full previously seen chain for a case (oldest first, capped at the last
  10 entries), instead of only the single most recent event. Enrichment of the already-charged
  `case-status-update` field, no pricing change.
- Added `rechtbankFilter`/`bedrijfsnaamFilter`/`vereistKvkNummer` input filters to reduce noise and unnecessary
  charges for a targeted subset. Lowers charges for clients who use them.
- Added a free `RUN_SUMMARY` written to the key-value store at the end of each run, including a parse-quality
  metric (`parseFailures`/rate) for records with no extractable `bedrijfsnaam`. No pricing change.

#### 0.3.1 - Bugfix

- Fixed `incrementalMode` and `trackZaakGeschiedenis` never seeing prior-run state: the actor was
  reading/writing to Apify's per-Run *default* key-value store, which is not shared between separate runs. Now
  uses a named, persistent key-value store. A new baseline will be captured on the next run.

#### 0.3.0

- Added `trackZaakGeschiedenis`: links a later event for the same insolvency case number to the previously
  seen status, across runs (via the actor's key-value store). New `zaakGeschiedenis` field and charged event
  `case-status-update` ($0.015), confirmed by the user (2026-07-14, see
  docs/actor-verbeteringen/PRIJSBESLISSINGEN.md).

#### 0.2.0

- Added `gebeurtenisType` (uitspraak/einde/zitting/rectificatie/curatorwissel/overig), derived from
  `publicatiecluster` — distinguishes a fresh ruling from a case closure/settlement without parsing the
  cluster name yourself. No pricing change.

#### 2026-07-13 - Documentation update

- Added a Dutch-language "Zoekwoorden" line for search coverage on NL-specific terms.

#### 0.1.0

- Initial release: daily faillissementen/surseances feed from the Centraal Insolventieregister, with record-level natural-person filtering.

# Actor input Schema

## `daysBack` (type: `integer`):

Hoeveel recente publicatiedagen ophalen (het register heeft een rollend venster van circa 20-25 werkdagen).

## `includeFaillissementen` (type: `boolean`):

Uitspraken, overdrachten, beëindigingen en rectificaties van faillissementen van bedrijven.

## `includeSurseances` (type: `boolean`):

Uitgesproken en beëindigde surseances van betaling.

## `includeSchuldsaneringen` (type: `boolean`):

Schuldsaneringen (WSNP) betreffen bijna altijd natuurlijke personen en de publicaties bevatten woonadres en geboortegegevens. Alleen inschakelen als je zelf verantwoordelijk bent voor AVG-naleving bij verwerking van deze persoonsgegevens.

## `rechtbankFilter` (type: `array`):

Alleen publicaties van deze rechtbank(en), bv. \["Rechtbank Amsterdam"]. Leeg = alle rechtbanken.

## `bedrijfsnaamFilter` (type: `array`):

Alleen publicaties waarvan de bedrijfsnaam of een handelsnaam één van deze trefwoorden bevat (hoofdletterongevoelig), bv. \["bouw", "transport"]. Praktische branche-proxy zonder KVK-verrijking. Leeg = geen filter.

## `vereistKvkNummer` (type: `boolean`):

Sluit publicaties zonder herkend KvK-nummer uit (drempelwaarde tegen afwijkende/onvolledige publicatieformaten). Voorkomt onnodige insolventie-record-charges voor die records.

## `incrementalMode` (type: `boolean`):

Alleen publicatiedagen ophalen die nog niet in een vorige run zijn verwerkt. Ideaal voor dagelijks geplande monitoring.

## `trackZaakGeschiedenis` (type: `boolean`):

Koppelt latere gebeurtenissen (curatorwissel, einde, ...) voor hetzelfde insolventienummer aan de eerder geziene status, over meerdere runs heen via de KV-store. Alleen gecharged (case-status-update) bij een daadwerkelijk gevonden koppeling.

## Actor input object example

```json
{
  "daysBack": 3,
  "includeFaillissementen": true,
  "includeSurseances": true,
  "includeSchuldsaneringen": false,
  "rechtbankFilter": [],
  "bedrijfsnaamFilter": [],
  "vereistKvkNummer": false,
  "incrementalMode": false,
  "trackZaakGeschiedenis": false
}
```

# 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("codeclouds/nl-faillissementen-monitor").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("codeclouds/nl-faillissementen-monitor").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 '{}' |
apify call codeclouds/nl-faillissementen-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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