---
name: insolvencyapi
description: Company insolvency data for 18 countries in Europe and North America from insolvencyapi.com. Use when checking whether a company is in liquidation, administration or bankruptcy, following an insolvency case, finding creditors' claims deadlines or UK winding-up petitions, or counting insolvencies by country, sector or region.
---

# InsolvencyAPI

Company insolvency cases from 18 countries across Europe and North America, in one shape and one vocabulary, with every published notice for the UK and France. A REST API that answers JSON, operated by DeveloperData.net.

## When to use it, and when not

Use it to answer: is this company insolvent; what happened in this case; which companies went into insolvency in a country, sector or region; what claims deadlines are coming; which UK petitions are pending; how many insolvencies a month, and how they compare.

Do not use it for people: it holds companies only. No personal bankruptcies, no sole traders as people, no director names. It holds no credit scores, ratings or predictions, and nothing in it is legal or financial advice.

## Getting access

- A free key comes from signing in with Google at https://insolvencyapi.com/login. The person signs in; never invent a key.
- Send it as `X-API-Key: <key>` or `Authorization: Bearer <key>`. A key in the address (`?key=`) is refused with 400.
- Base URL: `https://api.insolvencyapi.com/v1`. Times are UTC. Dates are `YYYY-MM-DD`. Countries are two lower-case letters (`gb`, `fr`, `cz`, `se`, `us` and the rest from `GET /v1/coverage`).

## The calls that answer the common questions

Is this company in insolvency? By its register number (UK company number, French SIREN and so on):

```
curl -H "X-API-Key: $KEY" "https://api.insolvencyapi.com/v1/companies/gb/09412377"
{"data": {"country": "gb", "register_number": "09412377", "name": "Halden Freight Services Ltd",
  "in_insolvency": true, "open_case_count": 1, "cases": [{"id": "cs_7hq2lwx4", "procedure": "compulsory_liquidation", "status": "open", "opened_on": "2026-10-13", ...}]}, "meta": {}}
```

Only a name? Search, then look up the number it gives:

```
curl -H "X-API-Key: $KEY" "https://api.insolvencyapi.com/v1/companies/search?q=halden&country=gb"
{"data": [{"country": "gb", "register_number": "09412377", "name": "Halden Freight Services Ltd", "in_insolvency": true, "case_count": 1, "last_activity_on": "2026-10-13"}], "meta": {...}}
```

A list of up to 100 companies in one call (each counts as one call):

```
curl -X POST -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"companies": [{"country": "gb", "register_number": "09412377"}, {"name": "Nordvik Bygg AB"}]}' \
  "https://api.insolvencyapi.com/v1/companies/check"
{"data": [{"index": 0, "matched": true, "match": "register_number", "in_insolvency": true, ...}, {"index": 1, "matched": false, "match": "none", "countries_checked": 17, ...}]}
```

New cases in a country, newest activity first (filters: `procedure`, `status`, `opened_from`, `opened_to`, `updated_since`, `sector`, `claims_open`, `postcode`, `register_number`, `q`):

```
curl -H "X-API-Key: $KEY" "https://api.insolvencyapi.com/v1/cases?country=gb&opened_from=2026-10-01&limit=2"
{"data": [{"id": "cs_7hq2lwx4", "country": "gb", "company": {"register_number": "09412377", "name": "Halden Freight Services Ltd", ...},
  "procedure": "compulsory_liquidation", "status": "open", "opened_on": "2026-10-13", "claims_deadline": "2026-11-23", ...}],
  "meta": {"count": 2, "page": 1, "limit": 2, "total": ..., "total_exact": true, "next_cursor": "...", ...}}
```

One case with every notice in it (UK and France publish notices): `GET /v1/cases/{case_id}`.
Notices as published: `GET /v1/notices?country=fr&published_from=2026-10-14`.
Claims deadlines coming up: `GET /v1/claims-deadlines?country=gb` (Professional).
Pending UK winding-up petitions: `GET /v1/petitions` (Professional).
Every notice of one day, 1,000 a page: `GET /v1/feed/daily?date=2026-10-13` (Intel).
Monthly counts with unemployment beside them: `GET /v1/stats/monthly?country=fr&with=unemployment` (Professional).
Sectors, regions, who started the cases, durations, outcomes, rising trends and country comparisons: `GET /v1/stats/sectors|regions|drivers|durations|outcomes|trends|compare` (Intel).
Every code and label (procedures, steps, statuses, sectors, drivers): `GET /v1/vocabulary`. Fetch it once and keep it.
Your plan and calls left: `GET /v1/usage`, never counted.
Official counts as each country publishes them (monthly, quarterly or yearly) and the official quarterly index: `GET /v1/stats/official?country=fi` (Professional).
What is held and missing for every country, free and with no key: `GET /v1/gaps`, or one country in full: `GET /v1/gaps/{country}`. Check it before saying a country or month is not covered.

## MCP server

`https://insolvencyapi.com/mcp`, with the same key. Tools: `find_cases`, `get_case`, `latest_notices`, `claims_deadlines`, `pending_petitions`, `lookup_company`, `search_companies`, `check_companies`, `monthly_counts`, `sector_stats`, `case_drivers`, `rising_trends`, `compare_countries`, `coverage`, `my_usage`.

## Limits

- Developer, free: 30 calls a minute, 100 a day, the last 90 days, 25 a page. Paid fields (court, court case number, claims deadline, hearing, company town, postcode and sector) come back as `null`, and `meta.note` names the plan that fills them.
- Professional: 120 a minute, 50,000 a month, full history, 100 a page, claims deadlines, petitions and monthly counts.
- Intel: 300 a minute, 100,000 a month, everything, plus the Intel statistics and the daily feed.
- Lists take `page` and `limit`, or `cursor` (follow `meta.next_cursor` until it is `null`). Totals are counted up to 100,000; past that `total_exact` is `false`.
- A check body takes up to 100 companies.

## Errors

Every error is `{"error": {"code": "...", "message": "...", "docs": "https://insolvencyapi.com/documentation/errors"}}`, with `plan` added when your plan is the reason.

- 400 `bad_request`: a value is wrong; the message says which.
- 401 `unauthorized`: no key, or not a valid one.
- 403 `upgrade_required`: the plan does not include this; `plan` names the one that does.
- 404 `not_found`: no such case or company. An empty list is a 200 with `meta.count` 0, never a 404.
- 422 `unknown_parameter`: the message lists the parameters the endpoint takes.
- 429 `rate_limited` (wait for `Retry-After` seconds) or `quota_exceeded` (the message says when it resets).
- 500 `server_error`: try again in a minute; https://insolvencyapi.com/status shows each country.

## A typical workflow

1. Call `GET /v1/usage` to learn the plan, and `GET /v1/vocabulary` once for the codes.
2. With a register number, call `GET /v1/companies/{country}/{register_number}`; with a name, `GET /v1/companies/search?q=...` first; with many companies, `POST /v1/companies/check`.
3. For any case found, `GET /v1/cases/{case_id}` gives its notices; quote `procedure_label`, `status_label` and the dates, not the codes.
4. For "what is happening", use `GET /v1/cases` with `country` and `opened_from`, then the statistics endpoints the plan allows.
5. On 403, tell the person which plan the answer needs rather than retrying. On 429, wait and retry once.

Full reference in one file: https://insolvencyapi.com/documentation/manual.md
