Adressvalidierung
Prüfen Sie, ob eine Adresse existiert, und erhalten Sie sie in kanonischer Form zurück
Der Endpunkt /v1/places/validate nimmt Land, Bundesland, Stadt und Postleitzahl entgegen, die ein Nutzer eingegeben hat, und sagt Ihnen — Komponente für Komponente —, ob diese Kombination tatsächlich existiert. Zurück kommen die kanonische Schreibweise und, wenn etwas nicht passt, die naheliegendste Korrektur.
Es ist der letzte Schritt, bevor Sie eine Lieferadresse speichern: Die Autovervollständigung führt den Nutzer, dies bestätigt, wobei er gelandet ist — auch bei von Hand eingegebenen oder anderswo importierten Adressen.
Endpunkt
GET https://api.countrydataapi.com/v1/places/validate
POST https://api.countrydataapi.com/v1/places/validate
Beide akzeptieren dieselben Felder. GET ist eine einfache CORS-Anfrage und funktioniert daher ohne Preflight aus dem Browser; POST nimmt sie in einem JSON-Body entgegen.
Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
apikey |
string | Ja | Ihr API-Authentifizierungsschlüssel |
country |
string | Ja | Interne ID, ISO-2, ISO-3 oder Name |
state |
string | Nein | Name des Bundeslandes oder der Provinz |
city |
string | Nein | Name der Stadt |
zipcode |
string | Nein | Postleitzahl |
lang |
string | Nein | Sprache der zurückgegebenen Namen. Standard: en |
Komponenten, die Sie nicht senden, kommen mit dem Urteil not_provided zurück: Nichts, was Sie weglassen, kann die Adresse ungültig machen.
Anfragebeispiel
curl "https://api.countrydataapi.com/v1/places/validate?apikey=ihr-api-schluessel&country=ES&state=Madrid&city=Madrid&zipcode=28001&lang=de"
POST mit JSON-Body
const response = await fetch(
'https://api.countrydataapi.com/v1/places/validate',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
apikey: 'ihr-api-schluessel',
country: 'ES',
state: 'Madrid',
city: 'Madrid',
zipcode: '28001',
lang: 'de',
}),
}
);
const { result } = await response.json();
TypeScript-SDK
const { result } = await api.places.validate({
country: 'ES',
zipcode: '28001',
lang: 'de',
});
result.normalized.state?.name; // "Autonome Gemeinschaft Madrid"
Antwortformat
{
"success": true,
"result": {
"valid": true,
"has_corrections": false,
"verdict": {
"country": "confirmed",
"state": "confirmed",
"city": "confirmed",
"zipcode": "confirmed"
},
"normalized": {
"country": {
"id": "66c7a6c9e4bda21f4ab10ef2",
"name": "Spanien",
"iso2": "ES",
"iso3": "ESP",
"phone_code": "+34",
"flag": "🇪🇸"
},
"state": { "id": "66c7a6c9e4bda21f4ab10a22", "name": "Autonome Gemeinschaft Madrid" },
"city": { "id": "66c7a6c9e4bda21f4ab1a0f1", "name": "Madrid" },
"zipcode": "28001"
},
"corrections": [],
"postal": {
"format": "#####",
"regex": "^\\d{5}$",
"example": "12345",
"matches_format": true
}
},
"tokens_used": 1,
"remaining_tokens": 4870
}
Urteile
| Urteil | Bedeutung |
|---|---|
confirmed |
Der Wert existiert und entspricht genau dem Gesendeten |
corrected |
Die Komponente wurde aufgelöst, aber nicht aus dem Gesendeten — siehe corrections |
unconfirmed |
Der Wert konnte nicht bestätigt werden |
not_provided |
Sie haben diese Komponente nicht gesendet |
valid ist nur dann true, wenn alle von Ihnen gesendeten Komponenten als confirmed zurückkommen. Nutzen Sie has_corrections, um zu entscheiden, ob Sie dem Nutzer ein "Meinten Sie ...?" statt einer Fehlermeldung zeigen.
Eine Postleitzahl allein löst das Bundesland auf
Der übliche Fall im Checkout: Sie haben nur Postleitzahl und Stadt abgefragt.
curl "https://api.countrydataapi.com/v1/places/validate?apikey=ihr-api-schluessel&country=ES&zipcode=28001&lang=de"
Die Antwort füllt normalized.state aus der Postleitzahl, sodass Sie das Provinzfeld für den Nutzer ausfüllen können, statt danach zu fragen. Umgekehrt funktioniert es genauso: Senden Sie eine Stadt, und das Bundesland kommt aufgelöst zurück.
Wenn die Postleitzahl nicht in unserer Liste steht
Die Abdeckung mit Postleitzahlen ist nicht für jedes Land vollständig. Ist eine Zahl nicht gelistet, entspricht aber dem offiziellen Format des Landes, lautet das Urteil corrected statt unconfirmed, und postal.matches_format ist true. Behandeln Sie das als "plausibel, akzeptieren", sofern Ihr Anwendungsfall keine Gewissheit verlangt.
matches_format ist null, wenn für das Land kein offizielles Muster hinterlegt ist.
Korrekturbeispiel
{
"valid": false,
"has_corrections": true,
"verdict": { "country": "confirmed", "state": "unconfirmed", "city": "confirmed", "zipcode": "not_provided" },
"corrections": [
{ "component": "state", "input": "Cataluna", "suggestion": "Cataluña" }
]
}
Token-Verbrauch
Dieser Endpunkt verbraucht 1 Token pro Anfrage, unabhängig davon, wie viele Komponenten Sie senden.
Verwandte Endpunkte
- GET /v1/places/autocomplete - Suchen, während der Nutzer tippt
- GET /v1/places/details - Vollständiger Datensatz zu einem Vorschlag
- GET /v1/places/postal-format - Das Postleitzahlfeld im Browser validieren