APIs / Real estate / ZVG-Portal

1 credit per call5 endpoints13 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.

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 OKJSONX-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_idintegerlandstringcase_numberstringupdated_atstringcourtstringobject_typestringaddressobjectverkehrswertobjectauction_datestringauction_date_textstringcancelledbooleanattachmentsobject[]urlurl
14829hb0011 b K 0031/20252026-11-03T10:52:00+01:00BremenEinfamilienhaus{5 fields}{4 fields}2026-12-16T09:30:00+01:00Mittwoch, 16. Dezember 2026, 09:30 Uhrfalse[1 item]https://www.zvg-portal.de/index.php?button=showZvg&zvg_id=4829&land_abk=hb
24830hb0011 a K 0172/20112026-11-02T15:48:00+01:00BremenEigentumswohnung (1 bis 2 Zimmer), 2-Zimmer Wohnung{5 fields}{4 fields}2026-12-16T10:30:00+01:00Mittwoch, 16. Dezember 2026, 10:30 Uhrfalse[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 itemGET /v1/zvg-portal/search?land=hb&sort=price_asc&per_page=2

13 datapoints

Identity

  • zvg_idinteger
  • object_typestring

Contact

  • urlurl

Location

  • addressobject

Other

  • landstring
  • case_numberstring
  • updated_atstring
  • courtstring
  • verkehrswertobject
  • auction_datestring
  • auction_date_textstring
  • cancelledboolean
  • attachmentsobject[]

Playground

Run this API

cURLshell
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.

EndpointRequired parametersCost
GET/v1/zvg-portal/court
court+3 optional
1 credit
GET/v1/zvg-portal/listing
zvg_idland
1 credit
GET/v1/zvg-portal/locations
none+2 optional
1 credit
GET/v1/zvg-portal/reference
none
1 credit
GET/v1/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 estateJSONRESTMCP

More real estate APIs

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.