Limits und Zugang

Die Übersichten, das LoD2-GeoJSON und die Tilesets bleiben ohne Registrierung benutzbar. Der erste Call soll funktionieren, bevor du irgendwo eine Adresse einträgst. Ab einer bestimmten Menge wollen wir aber wissen, wer da ruft — nicht um zu bremsen, sondern um dich erreichen zu können, wenn ein Snapshot wechselt oder ein Endpoint sich ändert.

KontingentZählungDurchsetzung
ohne Key1.000 / Tagpro IP-Adressehart — 429 ab dem 1.001. Call, Reset 00:00 UTC
Trial-Key (7 Tage, lodapi.de/key)5.000 / Tagpro Keyweich — gezählt und in den Quota-Headern sichtbar
Pro / Businesslaut Vertragpro Keyweich — bei Überschreitung melden wir uns

Der Trial-Key kostet nichts, braucht kein Konto und ist in einer Minute da. Er ist der Weg zu mehr als 1.000 Calls am Tag, schaltet für 7 Tage alle Pro-Endpoints frei und ist gleichzeitig der einzige Weg, dass wir dich bei Änderungen informieren können.

Welche Endpoints einen Key brauchen

Seit Oktober 2026 sind die eigentlichen Daten-Endpoints nach Tarif freigeschaltet (Tarife: lodapi.de/pricing). Übersichten und Listen bleiben frei.

Endpointohne KeyMindest-Tarif
/v1/datasets, /v1/attribution, */datasets (Terrain, Terrain-Mesh, OSM-Cover, Vegetation)ja—
/v1/buildings (bbox), /v1/buildings/{gmlid}ja—
/v1/tilesets, /v1/tilesets/{id}, …/tileset.jsonja—
/v1/keys/trialja—
/v1/terrain/elevation, /v1/terrain/profileneinHobby
/v1/buildings/3d.glbneinHobby
/v1/buildings/{gmlid}/roofneinPro
/v1/vegetation/canopyneinPro

Reihenfolge der Tarife: Free < Hobby < Pro < Business < Enterprise. Trial-Keys haben Pro-Umfang, kommen also 7 Tage lang an alle Endpoints der Tabelle.

Ohne Key auf einem gesperrten Endpoint kommt 401, mit einem Key unter dem Mindest-Tarif 403, beides als application/problem+json:

{
  "type": "https://lodapi.de/errors/api-key-required",
  "title": "Für diesen Endpoint brauchst du einen API-Key",
  "status": 401,
  "detail": "Dieser Endpoint ist ab Tarif Hobby freigeschaltet und braucht einen API-Key im Header X-API-Key. Einen Testkey bekommst du in einer Minute unter https://lodapi.de/key (7 Tage Pro-Umfang, ohne Registrierung).",
  "instance": "/v1/terrain/elevation",
  "required_tier": "hobby",
  "key_url": "https://lodapi.de/key"
}
{
  "type": "https://lodapi.de/errors/tier-insufficient",
  "title": "Dein Tarif reicht für diesen Endpoint nicht",
  "status": 403,
  "detail": "Dieser Endpoint braucht mindestens Tarif Pro; dein Key hat Tarif Hobby. Tarife und Upgrade: https://lodapi.de/pricing",
  "instance": "/v1/buildings/DESHPDHK0001gXAH/roof",
  "required_tier": "pro",
  "key_tier": "hobby",
  "pricing_url": "https://lodapi.de/pricing"
}

Im Python-SDK wird 401 zu AuthError, 403 zu ApiError mit status == 403; in beiden steht der detail-Text in exc.detail. Gesperrte Requests ohne Key zählen weiter gegen das Keyless-Tageslimit.

3D-Tiles sind nicht gesperrt. Die Kachel-Dateien (LoD2-3D-Tiles, Terrain-Mesh, Bodenbedeckung, Terrain-COGs) liefert tiles.lodapi.de statisch aus, ohne Key-Prüfung. Die Sperre betrifft nur die API-Endpoints oben.

Ohne Key: 1.000 pro Tag und IP

Jede Antwort auf einen keyless Request trägt das Rest-Budget im Header:

curl -si "https://api.lodapi.de/v1/buildings?bbox=8.68,50.11,8.69,50.12" | grep -i x-keyless
# X-Keyless-Remaining: 987

Batch-Skripte sollten den Header lesen und rechtzeitig auf einen Key umschalten, statt in die 429 zu laufen.

Was zählt: alle /v1/-Endpoints — Buildings, Tilesets, Terrain, Terrain-Mesh, OSM-Cover, Vegetation. Auch Fehlerantworten (404, 422) zählen, weil das Limit vor dem Handler greift.

Was nicht zählt:

Die 429

Ist das Budget aufgebraucht, antwortet die API mit 429 Too Many Requests als application/problem+json (RFC 7807):

{
  "type": "https://lodapi.de/errors/keyless-daily-limit",
  "title": "Too Many Requests",
  "status": 429,
  "detail": "Ohne API-Key sind 1.000 Requests pro Tag und IP frei. Einen Testkey mit 5.000/Tag gibt es in einer Minute unter https://lodapi.de/key.",
  "instance": "/v1/terrain/elevation",
  "limit": 1000,
  "retry_after": 42317,
  "key_url": "https://lodapi.de/key",
  "docs_url": "https://lodapi.de/docs/guides/rate-limits"
}

Dazu die Header Retry-After (Sekunden bis zum Reset um Mitternacht UTC) und X-Keyless-Remaining: 0.

Am type erkennst du das Keyless-Limit eindeutig — der 429 vom Trial-Mint (zu viele Keys von einer IP) hat einen anderen type.

import httpx

r = httpx.get("https://api.lodapi.de/v1/buildings", params={"bbox": "8.68,50.11,8.69,50.12"})
if r.status_code == 429:
    problem = r.json()
    if problem["type"].endswith("/keyless-daily-limit"):
        raise SystemExit(f"Key holen: {problem['key_url']}")
    # sonst: Retry-After abwarten

Mit Key

Ein Key reist im Header X-API-Key mit:

curl -H "X-API-Key: lod_…" \
  "https://api.lodapi.de/v1/buildings?bbox=8.68,50.11,8.69,50.12"

Keyed-Traffic ist vom Keyless-Tageslimit nicht betroffen — kein X-Keyless-Remaining, kein 429 daraus. Stattdessen antworten wir mit dem Verbrauch gegen dein Kontingent:

Diese Quota ist heute weich: sie wird gezählt und angezeigt, aber nicht durchgesetzt. Wer regelmäßig darüber liegt, hört von uns — per Mail, nicht per 429.

Was tun bei mehr Bedarf

Trial reicht nicht? Schreib an hello@lodapi.de mit einem Satz zum Use-Case. Und falls du gerade ein ganzes Bundesland Gebäude für Gebäude über die Feature-API ziehst: sag Bescheid, dafür finden wir einen besseren Weg als 500.000 Einzelrequests.

Verwandte Seiten

Bereit?

Der erste Call geht sofort.

LoD2-Gebäude für alle 16 Bundesländer, kostenlos und ohne Konto. Pro auf Anfrage 30 Tage testen.