# German Insolvency Announcements Scraper (`studio-amba/insolvenzbekanntmachungen-scraper`) Actor

Search and extract German insolvency announcements from the official portal. Filter by company name, state, court, date range, or proceeding type. Returns debtor name, court, case number, proceeding type, and full announcement text. No cookies, no login.

- **URL**: https://apify.com/studio-amba/insolvenzbekanntmachungen-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 result scrapeds

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

## German Insolvency Announcements — Bankruptcy Data Scraper

Search and extract German insolvency announcements from the official court portal (insolvenzbekanntmachungen.de). Filter by company name, federal state, court, city, proceeding type, or date range. Returns debtor name, address, court, case number, proceeding type, full announcement text, and insolvency administrator. No cookies, no login required.

### How to scrape German insolvency data

This actor searches the official German insolvency announcements portal, operated by the NRW Ministry of Justice on behalf of all 16 federal states. Every German insolvency proceeding — from initial filing through final distribution — is published here. The portal is the canonical source for German bankruptcy data.

#### Search by Company or Person Name

Enter a debtor's name (company or individual) to find all insolvency announcements. Minimum 2 characters. The portal matches whole names, so when no name equals your word (for example "GmbH" or "Bäckerei"), the actor searches names that contain it and says so in the run's status message. You can also write the wildcard yourself ("Bau\*"). When a search matches more than the portal's limit of 1000 announcements, the actor searches each state separately.

#### Filter by State, Court, or City

Narrow to a specific federal state, insolvency court, or city. Useful for regional credit risk monitoring or local market analysis.

#### Filter by Proceeding Type

Focus on specific stages: opening of proceedings (Eröffnung), rejection for lack of assets (Abweisung mangels Masse), discharge of residual debt (Restschuldbefreiung), or insolvency plans.

### What data does German Insolvency Announcements Scraper extract?

| Field | Type | Description |
|-------|------|-------------|
| **debtorName** | String | Debtor company or person name |
| **debtorAddress** | String | Debtor's registered address |
| **city** | String | City |
| **postalCode** | String | German postal code (PLZ) |
| **state** | String | Federal state (Bundesland) |
| **court** | String | Insolvency court (Amtsgericht) |
| **caseNumber** | String | Court case number (Aktenzeichen) |
| **proceedingType** | String | Type of proceeding (opening, rejection, discharge, etc.) |
| **releaseDate** | String | Date of announcement |
| **announcementText** | String | Full announcement text (up to 5,000 characters) |
| **administratorName** | String | Insolvency administrator name |
| **url** | String | The portal's search page. The portal has no link per announcement (the text opens through a form postback inside a session), so this is the same on every row. Use `court` + `caseNumber` + `releaseDate` to identify an announcement, and `announcementText` for its content. |
| **scrapedAt** | String | ISO timestamp |

### Example output

```json
{
    "debtorName": "Muster GmbH",
    "debtorAddress": "Hauptstrasse 1, 10115 Berlin",
    "city": "Berlin",
    "postalCode": "10115",
    "state": "Berlin",
    "court": "Amtsgericht Charlottenburg",
    "caseNumber": "36n IN 1234/26",
    "proceedingType": "Eröffnung des Insolvenzverfahrens",
    "releaseDate": "19.05.2026",
    "announcementText": "In dem Insolvenzverfahren über das Vermögen der Muster GmbH...",
    "administratorName": "Dr. Hans Schmidt",
    "url": "https://neu.insolvenzbekanntmachungen.de/ap/suche.jsf",
    "scrapedAt": "2026-05-20T14:30:00.000Z"
}
```

### Tips for best results

- **Credit risk monitoring**: Run daily with a state or city filter to catch new insolvencies in your market. Early detection of supplier or customer bankruptcy can save significant losses.
- **Due diligence**: Search by company name before entering a business relationship. Check if potential partners have any insolvency history.
- **Administrator lookup**: Use the administratorName field to track which insolvency practitioners handle cases in your region.
- **Time sensitivity**: Consumer insolvency cases are only searchable for 2 weeks. Company cases have no time restriction. Standard cases are deleted after 1 month.

### How much does it cost?

| Search size | Estimated time | Estimated cost |
|-------------|---------------|----------------|
| 20 announcements | ~2 minutes | ~$0.05 |
| 100 announcements | ~10 minutes | ~$0.20 |
| 500 announcements | ~45 minutes | ~$0.80 |

Uses Playwright (headless browser) due to the JSF-based portal — costs are higher than pure API actors.

### Can I use it as an API?

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("studio-amba/insolvenzbekanntmachungen-scraper").call(run_input={
    "searchQuery": "GmbH",
    "state": "Berlin",
    "proceedingType": "opening",
    "maxResults": 50,
})

for notice in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{notice['debtorName']} | {notice['court']} {notice['caseNumber']} | {notice['proceedingType']}")
```

### Limitations

- The portal caps results at 1,000 per search — use specific filters to stay under this limit
- Consumer insolvency data is only available for 2 weeks after publication
- Standard cases are deleted after 1 month, closure records after 6 months
- Uses headless browser (Playwright) which is slower than API-based scrapers
- Session timeout after 60 minutes — long runs may need to reinitialize

### Other European insolvency and company scrapers

- **[BODACC Scraper](https://apify.com/studio-amba/bodacc-scraper)** — French insolvency and commercial announcements
- **[German Company Register](https://apify.com/studio-amba/handelsregister-scraper)** — German Handelsregister data
- **[Belgian Company Enrichment](https://apify.com/studio-amba/kbo-enrichment)** — Belgian KBO/BCE company data

### Your feedback

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

# Actor input Schema

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

Search by debtor name (company or person). Minimum 2 characters. The portal matches whole names; a word with no exact match (GmbH, Bäckerei) is searched as part of names instead. Wildcard: Bau\*.

## `state` (type: `string`):

Filter by German federal state.

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

Filter by debtor's city.

## `proceedingType` (type: `string`):

Filter by type of insolvency proceeding.

## `dateFrom` (type: `string`):

Only announcements published on or after this date. Format: DD.MM.YYYY.

## `dateTo` (type: `string`):

Only announcements published on or before this date. Format: DD.MM.YYYY.

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

Maximum number of announcements to return. The portal caps at 1,000 per search.

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

Apify proxy configuration.

## Actor input object example

```json
{
  "searchQuery": "Müller",
  "state": "all",
  "proceedingType": "all",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/insolvenzbekanntmachungen-scraper"
        }
    }
}
```

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/qjqYjwyLdbIb3nx4v/builds/G3icrtRobd1JGVxck/openapi.json
