---
title: "ZVG-Portal API: JSON data, 5 endpoints, 1 credit per call"
description: "ZVG-Portal API for German court foreclosure auctions by state and court, with market values, auction dates and documents as JSON. 1 credit per successful call."
url: https://perceptlayer.com/apis/zvg-portal
---

[APIs](https://perceptlayer.com/apis) / [Real estate](https://perceptlayer.com/verticals/real-estate) / ZVG-Portal

1 credit per call 5 endpoints 13 datapoints

# ZVG-Portal API

ZVG-Portal API for German court foreclosure auctions by state and court, with market values, auction dates and documents as JSON. 1 credit per successful call.

[Get a free API key](https://perceptlayer.com/signup) Run it below

ZVG-Portal

GET /v1/zvg-portal/search?land=hb&sort=price\_asc&per\_page=2 

```
{
  "success": true,
  "data": {
    "search_parameters": {
      "land": "hb",
      "sort": "price_asc",
      "page": 1,
      "per_page": 2
    },
    "search_metadata": {
      "total_results": 17,
      "page": 1,
      "per_page": 2,
      "total_pages": 9,
      "has_next_page": true,
      "upstream_total": 17,
      "filtered_out": 0,
      "dropped_invalid": 0
    },
    "listings": [
      {
        "zvg_id": 4829,
        "land": "hb",
        "case_number": "0011 b K 0031/2025",
        "updated_at": "2026-11-03T10:52:00+01:00",
        "court": "Bremen",
        "object_type": "Einfamilienhaus",
        "address": {
          "text": "Batteriestraße 79, 27568 Bremerhaven, Lehe",
          "street": "Batteriestraße 79",
          "postal_code": "27568",
          "city": "Bremerhaven",
          "district": "Lehe"
        },
        "verkehrswert": {
          "raw": "Verkehrswert gemäß §§ 74 a Abs. 5, 85 a Abs. 2 ZVG: 15.000,00 € (11b K 31,32/25). Wert des jeweiligen ½ Miteigentumsanteils: 7.500,00 € (11b K 31/25 bzw. 11 b K 32/25).",
          "amount": 15000,
          "currency": "EUR",
          "amounts": [
            15000,
            31.32,
            7500
          ]
        },
        "auction_date": "2026-12-16T09:30:00+01:00",
        "auction_date_text": "Mittwoch, 16. Dezember 2026, 09:30 Uhr",
        "cancelled": false,
        "attachments": [
          {
            "file_id": 8365,
            "name": "Amtliche Bekanntmachung",
            "size_kb": 62.75,
            "size_text": "62.75 kB",
            "url": "https://www.zvg-portal.de/index.php?button=showAnhang&land_abk=hb&file_id=8365&zvg_id=4829"
          }
        ],
        "url": "https://www.zvg-portal.de/index.php?button=showZvg&zvg_id=4829&land_abk=hb"
      },
      {
        "zvg_id": 4830,
        "land": "hb",
        "case_number": "0011 a K 0172/2011",
        "updated_at": "2026-11-02T15:48:00+01:00",
        "court": "Bremen",
        "object_type": "Eigentumswohnung (1 bis 2 Zimmer), 2-Zimmer Wohnung",
        "address": {
          "text": "Georgstraße 108, 27570 Bremerhaven, Geestemünde",
          "street": "Georgstraße 108",
          "postal_code": "27570",
          "city": "Bremerhaven",
          "district": "Geestemünde"
        },
        "verkehrswert": {
          "raw": "53.000,00 €.",
          "amount": 53000,
          "currency": "EUR",
          "amounts": [
            53000
          ]
        },
        "auction_date": "2026-12-16T10:30:00+01:00",
        "auction_date_text": "Mittwoch, 16. Dezember 2026, 10:30 Uhr",
        "cancelled": false,
        "attachments": [
          {
            "file_id": 8367,
            "name": "Amtliche Bekanntmachung",
            "size_kb": 62.13,
            "size_text": "62.13 kB",
            "url": "https://www.zvg-portal.de/index.php?button=showAnhang&land_abk=hb&file_id=8367&zvg_id=4830"
          }
        ],
        "url": "https://www.zvg-portal.de/index.php?button=showZvg&zvg_id=4830&land_abk=hb"
      }
    ]
  },
  "meta": {
    "endpoint_family": "search",
    "request_id": "req_b8dc1423eba74ba8a19b1237a36f4ab0",
    "credits_charged": 1,
    "credits_remaining": 1801
  }
}
```

200 OK JSON X-Credits-Used: 1

Recorded from our API and shortened.

Sample data

## What one call returns

A recorded run of `search`: the fields and shapes you will get, shortened to 2 items.

| # | zvg\_id integer | land string | case\_number string | updated\_at string | court string | object\_type string | address object | verkehrswert object | auction\_date string | auction\_date\_text string | cancelled boolean | attachments object\[\] | url url |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 4829 | hb | 0011 b K 0031/2025 | 2026-11-03T10:52:00+01:00 | Bremen | Einfamilienhaus | {5 fields} | {4 fields} | 2026-12-16T09:30:00+01:00 | Mittwoch, 16. Dezember 2026, 09:30 Uhr | false | \[1 item\] | https://www.zvg-portal.de/index.php?button=showZvg&zvg\_id=4829&land\_abk=hb |
| 2 | 4830 | hb | 0011 a K 0172/2011 | 2026-11-02T15:48:00+01:00 | Bremen | Eigentumswohnung (1 bis 2 Zimmer), 2-Zimmer Wohnung | {5 fields} | {4 fields} | 2026-12-16T10:30:00+01:00 | Mittwoch, 16. Dezember 2026, 10:30 Uhr | false | \[1 item\] | https://www.zvg-portal.de/index.php?button=showZvg&zvg\_id=4830&land\_abk=hb |

Recorded from our API · 2 items shown · 13 datapoints per item GET /v1/zvg-portal/search?land=hb&sort=price\_asc&per\_page=2

13 datapoints

### Identity

-   zvg\_id integer
-   object\_type string

### Contact

-   url url

### Location

-   address object

### Other

-   land string
-   case\_number string
-   updated\_at string
-   court string
-   verkehrswert object
-   auction\_date string
-   auction\_date\_text string
-   cancelled boolean
-   attachments object\[\]

Playground

## Run this API

cURL shell 

```
curl "https://api.perceptlayer.com/v1/zvg-portal/search?land=hb&sort=price_asc&per_page=2" \
  -H "X-API-Key: $API_KEY"
```

ZVG-Portal · 5 endpoints

## Endpoints

Every endpoint takes the same key. Open one for its parameters and an example request.

| Endpoint | Required parameters | Cost |
| --- | --- | --- |
| [GET `/v1/zvg-portal/court`](https://perceptlayer.com/apis/zvg-portal/court) | `court` +3 optional | 1 credit |
| [GET `/v1/zvg-portal/listing`](https://perceptlayer.com/apis/zvg-portal/listing) | `zvg_id` `land` | 1 credit |
| [GET `/v1/zvg-portal/locations`](https://perceptlayer.com/apis/zvg-portal/locations) | none +2 optional | 1 credit |
| [GET `/v1/zvg-portal/reference`](https://perceptlayer.com/apis/zvg-portal/reference) | none | 1 credit |
| [GET `/v1/zvg-portal/search`](https://perceptlayer.com/apis/zvg-portal/search) | `land` +16 optional | 1 credit |

Overview

## About the ZVG-Portal API

## What you can get

The ZVG-Portal API returns ZVG-Portal court auction data as JSON through 5 endpoints.

-   **Search:** `search` takes a `land` (bw, by, be, br, hb, hh, he, mv, ni, nw, rp, sl, sn, st, sh or th), with `court`, `object_type[]` (repeatable), `procedure_type` (a numeric code), `plz`, `city`, `district`, `street`, `house_number`, `case_number`, `date_from`, `date_to`, `min_price`, `max_price`, `sort` (updated, auction\_date, case\_number, price\_asc or price\_desc), `page` and `per_page`.
-   **Courts:** `court` takes a `court`, with the same `sort` values, `page` and `per_page`.
-   **Listings:** `listing` takes a `zvg_id` and a `land`.
-   **Lookups:** `locations` takes a `q`, with `land`; `reference` takes no parameters.

The recorded `search` for Bremen ( `land=hb`), sorted by `price_asc`, returns `search_metadata` with `total_results` (17), `total_pages` and `has_next_page`, and `listings`, each with `zvg_id`, `land`, `case_number`, `updated_at`, `court`, `object_type`, `address`, `verkehrswert` ( `amount`, `currency`), `auction_date`, `auction_date_text`, `cancelled`, `attachments` and `url`.

## How a call works

Search a state: `GET /v1/zvg-portal/search?land=hb&sort=price_asc&per_page=2` with your key in the `X-API-Key` header. Each listing's `zvg_id` and `land` are what `listing` takes. Check `has_next_page` before asking for the next `page`. Every successful call costs 1 credit; failed calls cost nothing.

Real estate JSON REST MCP

### More real estate APIs

[28Hse](https://perceptlayer.com/apis/28hse) [4zida](https://perceptlayer.com/apis/4zida) [591](https://perceptlayer.com/apis/591-house) [99.co](https://perceptlayer.com/apis/99co) [99acres](https://perceptlayer.com/apis/99acres) [Adondevivir](https://perceptlayer.com/apis/adondevivir) [Apartment List](https://perceptlayer.com/apis/apartment-list) [Apartments.com](https://perceptlayer.com/apis/apartments-com) [Aqar](https://perceptlayer.com/apis/aqar) [Aqarmap](https://perceptlayer.com/apis/aqarmap) [Argenprop](https://perceptlayer.com/apis/argenprop) [athome](https://perceptlayer.com/apis/athome)

Use cases

### Track upcoming foreclosure auctions in a German state or court district

`Use the ZVG-Portal API to track upcoming foreclosure auctions in a German state or court district` 

### Sort by \`auction\_date\` to build an auction calendar

`` Use the ZVG-Portal API to sort by `auction_date` to build an auction calendar `` 

### Compare \`verkehrswert\` across object types and cities

`` Use the ZVG-Portal API to compare `verkehrswert` across object types and cities `` 

### Pull the attached documents for a case from \`attachments\`

`` Use the ZVG-Portal API to pull the attached documents for a case from `attachments` `` 

FAQ

## Questions

**Do I need a ZVG-Portal account?**

No. You call this ZVG-Portal API with your Perceptlayer key in the \`X-API-Key\` header, with no ZVG-Portal login.

**How much does the ZVG-Portal API cost?**

Each successful call costs one credit. New accounts get free credits to start, and credit packs bring the price down as you scale.

**What format are responses in?**

Every endpoint returns JSON, with no HTML parsing on your side.

**What is \`verkehrswert\`?**

The market value (Verkehrswert) set for the property in the auction proceedings, returned with \`amount\` and \`currency\`.

**Should I build a ZVG-Portal scraper instead?**

You can, but a ZVG-Portal scraper is code you maintain: page changes break it, requests get blocked, and ZVG-Portal's terms govern how you collect data. The ZVG-Portal API gives you 5 endpoints of named JSON fields for 1 credit per successful call, and failed calls cost nothing. A scraper makes sense only for data these endpoints don't return, so check the response in the playground on this page first.

## Try the ZVG-Portal API with 100 free credits

No credit card. Failed calls are never billed.

[Get a free API key](https://perceptlayer.com/signup) [Read the docs](https://docs.perceptlayer.com)
