PLZ Suche

Die PLZ-Suche ermöglicht eine schnelle und präzise Abfrage von Postleitzahlen und zugehörigen Ortsinformationen per AJAX – ideal für Autocomplete-Felder oder Echtzeit-Validierungen. Bitte beachten Sie, dass der Referer der Domain mit dem API-Schlüssel übereinstimmen muss, wie es in den Backend-Einstellungen festgelegt wurde.

Endpunkt

https://api.gdpr-map.eu/plz/search?[PARAMETER]&key=[API_KEY]

Beispiel

https://api.gdpr-map.eu/plz/search?query=812&limit=25&skip=0&key=[API_KEY]

Parameter

Parameter Datentyp Beschreibung
query string PLZ (z. B. „80333“) oder Orts-/PLZ-Name
limit integer Maximale Anzahl der zurückgegebenen Ergebnisse (mindestens 20 möglich)
skip integer Anzahl der Einträge, die übersprungen werden sollen (Pagination/Offset)
  • query Der eigentliche Suchbegriff. Kann entweder eine Postleitzahl (z. B. 80331) oder ein Text sein (z. B. München, Freiburg, 50667 Köln). Die API versucht, den Begriff auf PLZ oder PLZ+Ort zu matchen.

  • limit Legt fest, wie viele Ergebnisse maximal zurückgegeben werden sollen. Empfohlener Bereich: 20–50. Die API erlaubt mindestens 20.

  • skip Überspringt die ersten X Ergebnisse. Wird zusammen mit limit für Pagination verwendet. Beispiel: skip=20&limit=20 → Seite 2 mit je 20 Einträgen.

API Call Beispiele

HTML/JS

<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <title>PLZ-Suche</title>
  <style>
    body { font-family: Arial; padding: 40px; }
    input { width: 100%; padding: 12px; font-size: 18px; }
    ul { background: white; border: 1px solid #ccc; margin: 0; padding: 0; }
    li { padding: 10px; cursor: pointer; }
    li:hover { background: #e0f0ff; }
  </style>
</head>
<body>

<h2>PLZ suchen</h2>
<input type="text" id="plz" placeholder="z. B. 812, 10, Berlin" autocomplete="off">
<ul id="ergebnis"></ul>

<script>
document.getElementById('plz').addEventListener('input', function() {
  let q = this.value.trim();
  let liste = document.getElementById('ergebnis');

  if (q.length < 1) { liste.innerHTML = ''; return; }

  fetch(`https://api.gdpr-map.eu/plz/search?query=${q}&limit=10&key=DEIN_API_KEY`)
    .then(r => r.json())
    .then(data => {
      liste.innerHTML = '';
      data.results.forEach(plz => {
        let li = document.createElement('li');
        li.textContent = `${plz.postcode} ${plz.municipality}${plz.district ? ' – ' + plz.district : ''}`;
        li.onclick = () => {
          document.getElementById('plz').value = plz.postcode;
          liste.innerHTML = '';
        };
        liste.appendChild(li);
      });
    });
});
</script>

</body>
</html>

Antwort

{
    "results": [
        {
            "id": 907,
            "municipality": "Berlin",
            "postcode": "10115",
            "district": "Mitte",
            "borough": null,
            "longitude": 13.387831811466326,
            "latitude": 52.531750536359766
        }
    ],
    "pagination": {
        "total": 54,
        "count": 25,
        "limit": 25,
        "skip": 0,
        "has_more": true
    },
    "performance": {
        "search_time_ms": 0,
        "records_matched": 54
    },
    "query_info": {
        "original_query": "10",
        "processed_query": "10"
    }
}