# ZVG-Portal Auction Search API Documentation

<p><strong>ZVG-Portal Auction Search API</strong> searches the public foreclosure auctions (Zwangsversteigerung) of the German courts. Sale auctions only: the portal has no rent, bedroom, bathroom, photo or coordinate data, so the API has none either. Requests with <code>listing_type</code>, <code>bedrooms</code>, <code>bathrooms</code>, <code>min_area</code> or <code>max_area</code> return a 422 with the reason.</p><p>The <code>land</code> parameter is required. Hamburg (<code>hh</code>) and Mecklenburg-Vorpommern (<code>mv</code>) have no auctions on the portal and return an empty list.</p><p>The appraised value (<code>verkehrswert</code>) is free text on the portal. The API returns the text in <code>raw</code>, the first amount in <code>amount</code> and every amount in <code>amounts</code>. The price filter and the price sorts use the first amount. A cancelled auction (<code>cancelled: true</code>, no <code>zvg_id</code>) has no object, address or value, so it never matches a type, price or address filter. Auctions without a value come last in price sorts.</p><p>Paging is exact: the portal returns all auctions of a land at once and the API cuts the page after filtering and sorting. A page past the last page returns an empty list with the true page number and totals. <code>filtered_out</code> counts the auctions removed by the filters. Large lands (Nordrhein-Westfalen, Bayern) can take several seconds.</p><p>Documents are returned as links with name and size. The files are not fetched.</p>

- **Documentation:** [https://scrappa.co/docs/zvg-portal-api/zvg_portal_search](https://scrappa.co/docs/zvg-portal-api/zvg_portal_search)
- **API group:** ZVG-Portal API
- **Endpoint:** `GET https://scrappa.co/api/zvg-portal/v1/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `land` | string | Yes | Land code from the reference route, e.g. be, by, hb, nw. Example: hb. |
| `court` | string | No | court_id of an Amtsgericht in that land, from the locations or reference route. Example: H1101. |
| `object_type` | string | No | One or more object type ids from the reference route (repeat the parameter or comma-separate). Example: 5,6. |
| `procedure_type` | integer | No | Procedure type id from the reference route. Example: 0 (Zwangsvollstreckung). |
| `plz` | string | No | Postal code or its first digits. Example: 28. |
| `city` | string | No | City name. Example: Bremerhaven. |
| `district` | string | No | District name (Ortsteil). Example: Hastedt. |
| `street` | string | No | Street name. Example: Gnesener. |
| `house_number` | string | No | House number. Example: 18. |
| `case_number` | string | No | Case number as 0030 K 0026/2025, K 26/2025 or 26/2025. |
| `date_from` | string | No | First auction day, YYYY-MM-DD. Other formats return a 422. Example: 2026-11-01. |
| `date_to` | string | No | Last auction day, YYYY-MM-DD. Example: 2026-11-30. |
| `min_price` | integer | No | Minimum appraised value in EUR (first amount). |
| `max_price` | integer | No | Maximum appraised value in EUR (first amount). |
| `sort` | string | No | auction_date (default), updated, case_number, price_asc or price_desc. Example: price_asc. |
| `page` | integer | No | One-based page number (default 1). Example: 2. |
| `per_page` | integer | No | Results per page, 1 to 100 (default 25). Example: 10. |

## Example response

```json
{
    "data": {
        "listings": [
            {
                "url": "https://www.zvg-portal.de/index.php?button=showZvg&zvg_id=4812&land_abk=hb",
                "land": "hb",
                "court": "Bremen",
                "zvg_id": 4812,
                "address": {
                    "city": "Bremerhaven",
                    "text": "Gnesener Stra\u00dfe 18, 27576 Bremerhaven",
                    "street": "Gnesener Stra\u00dfe 18",
                    "district": null,
                    "postal_code": "27576"
                },
                "cancelled": false,
                "updated_at": "2026-08-13T11:29:00+02:00",
                "attachments": [
                    {
                        "url": "https://www.zvg-portal.de/index.php?button=showAnhang&land_abk=hb&file_id=8320&zvg_id=4812",
                        "kind": null,
                        "name": "Amtliche Bekanntmachung",
                        "file_id": 8320,
                        "size_kb": 62.42,
                        "size_text": "62.42 kB"
                    }
                ],
                "case_number": "0011 b K 0078/2025",
                "object_type": "Eigentumswohnung (1 bis 2 Zimmer), 2-Zimmer-Wohnung",
                "auction_date": "2026-11-09T09:30:00+01:00",
                "verkehrswert": {
                    "raw": "6.000,00 \u20ac",
                    "amount": 6000,
                    "amounts": [
                        6000
                    ],
                    "currency": "EUR"
                },
                "auction_date_text": "Montag, 09. November 2026, 09:30 Uhr"
            },
            {
                "url": "https://www.zvg-portal.de/index.php?button=showZvg&zvg_id=4816&land_abk=hb",
                "land": "hb",
                "court": "Bremen",
                "zvg_id": 4816,
                "address": {
                    "city": "Bremen",
                    "text": "Gro\u00dfbeerenstra\u00dfe 23, 25, Loignystra\u00dfe, 28211 Bremen, Schwachhausen",
                    "street": "Gro\u00dfbeerenstra\u00dfe 23, 25, Loignystra\u00dfe",
                    "district": "Schwachhausen",
                    "postal_code": "28211"
                },
                "cancelled": false,
                "updated_at": "2026-09-01T09:25:00+02:00",
                "attachments": [
                    {
                        "url": "https://www.zvg-portal.de/index.php?button=showAnhang&land_abk=hb&file_id=8331&zvg_id=4816",
                        "kind": null,
                        "name": "Amtliche Bekanntmachung",
                        "file_id": 8331,
                        "size_kb": 101.85,
                        "size_text": "101.85 kB"
                    }
                ],
                "case_number": "0026 K 0059/2024",
                "object_type": "Sonstiges",
                "auction_date": "2026-11-11T09:30:00+01:00",
                "verkehrswert": {
                    "raw": "223.000,--",
                    "amount": 223000,
                    "amounts": [
                        223000
                    ],
                    "currency": "EUR"
                },
                "auction_date_text": "Mittwoch, 11. November 2026, 09:30 Uhr"
            }
        ],
        "search_metadata": {
            "page": 1,
            "per_page": 2,
            "total_pages": 8,
            "filtered_out": 0,
            "has_next_page": true,
            "total_results": 15,
            "upstream_total": 15,
            "dropped_invalid": 0
        },
        "search_parameters": {
            "plz": null,
            "city": null,
            "land": "hb",
            "page": 1,
            "sort": "auction_date",
            "court": null,
            "street": null,
            "date_to": null,
            "district": null,
            "per_page": 2,
            "date_from": null,
            "max_price": null,
            "min_price": null,
            "case_number": null,
            "object_type": null,
            "house_number": null,
            "procedure_type": null
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "search"
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required parameter or a value is invalid. This response is not billable. |
| 503 | Upstream Unavailable | ZVG-Portal could not be reached. This response is not billable and is retryable. |
| 503 | Unexpected Upstream Data | ZVG-Portal returned data in an unexpected shape. This response is not billable and is retryable. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
