Geokodierung, IP- und Zeitzonen-Abfragen über eine einfache HTTP-API

Wandeln Sie Adressen in Koordinaten um und zurück, finden Sie heraus, wo sich eine IPv4- oder IPv6-Adresse befindet, ermitteln Sie Zeitzone oder Höhe eines beliebigen Punkts und lösen Sie Postleitzahlen auf. Senden Sie eine GET-Anfrage, lesen Sie das JSON. Keine Installation nötig.

2.500 kostenlose Anfragen pro Tag von jeder Adresse, ohne Schlüssel und ohne Konto. Sie brauchen mehr? Registrieren Sie sich mit Name und E-Mail-Adresse, laden Sie Prepaid-Guthaben zu 0,0001 € pro Anfrage auf oder nehmen Sie einen Unlimited-Schlüssel für 50 € im Monat. Karten und Kryptowährungen werden akzeptiert.

$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/reverse?lat=48.8584&lon=2.2945"
{
  "status": "ok",
  "result": {
    "formatted": "5 Avenue Anatole France, 75007 Paris, France",
    "lat": 48.85837,
    "lon": 2.29448,
    "distance_m": 12,
    "precision": "house",
    "components": {
      "house_number": "5",
      "road": "Avenue Anatole France",
      "city": "Paris",
      "postcode": "75007",
      "country": "France",
      "country_code": "fr"
    }
  }
}
2.500kostenlose Anfragen pro Tag, für jeden Schlüssel
0,0001 €pro Anfrage aus Prepaid-Guthaben
50 €im Monat für einen Unlimited-Schlüssel
17Drop-in-Hosts für die APIs anderer Anbieter
Endpunkte

Acht Abfragen, eine Basis-URL

Jeder Endpunkt liegt unter https://api.mygeocode.com/v1/, nimmt Query-Parameter entgegen und liefert JSON in derselben Hülle. Wer einen kennt, kennt alle.

Geokodierungs-API (Adresse zu Koordinaten)

GET /v1/forward

Senden Sie eine Adresse, einen Ortsnamen oder eine grobe Beschreibung und erhalten Sie Koordinaten, eine bereinigte Adresse und jeden ihrer Bestandteile.

Details und Beispiele

Reverse-Geokodierungs-API

GET /v1/reverse

Senden Sie Breiten- und Längengrad und erhalten Sie die nächstgelegene Adresse, aufgeschlüsselt nach Stadt, Region, Postleitzahl und Land.

Details und Beispiele

API für Adress-Autovervollständigung

GET /v1/autocomplete

Schlagen Sie Adressen vor, während jemand tippt. Jeder Vorschlag enthält Koordinaten, sodass Sie selten einen zweiten Aufruf brauchen.

Details und Beispiele

IPv4-Abfrage-API

GET /v1/ipv4

Land, Region, Stadt, Koordinaten, Zeitzone und Netzwerkinhaber für jede IPv4-Adresse oder für den Aufrufer, wenn Sie sie weglassen.

Details und Beispiele

IPv6-Abfrage-API

GET /v1/ipv6

Dieselben Angaben für IPv6-Adressen, dazu das angekündigte Präfix, zu dem die Adresse gehört.

Details und Beispiele

Zeitzonen-Abfrage-API

GET /v1/timezone

IANA-Zeitzonenname, UTC-Versatz, Sommerzeitstatus und Ortszeit für jede Koordinate, jetzt oder zu einem Zeitstempel Ihrer Wahl.

Details und Beispiele

Höhenabfrage-API

GET /v1/elevation

Höhe über dem Meeresspiegel in Metern für einen Punkt oder bis zu 100 Punkte in einem einzigen Aufruf.

Details und Beispiele

Postleitzahlen-Abfrage-API

GET /v1/postcode

Wandeln Sie eine Postleitzahl in Ortsnamen, Region und Koordinaten um. Funktioniert für ZIP-Codes, Postcodes und ihre Entsprechungen in den meisten Ländern.

Details und Beispiele
Genauigkeit

Jedes Ergebnis gibt an, wie genau es ist

Ein Geocoder, der ein Stadtzentrum zurückgibt, wenn Sie nach einer Hausnummer gefragt haben, ist schlechter als einer, der sagt, dass er das Haus nicht finden konnte. Jedes Ergebnis, das wir liefern, enthält ein Feld precision mit einem von vier Werten, damit Ihr Code entscheiden kann, was er mit einem groben Treffer macht, statt zu raten.

Die Abdeckung ist nicht überall gleich, und wir zeigen sie Ihnen lieber, als eine pauschale Behauptung aufzustellen. Die Seite zur Abdeckung listet die beste Genauigkeitsstufe auf, die wir in jedem von 249 Ländern und Gebieten erreichen.

Die Stufe für jedes Land ansehen

StufeWas der Punkt darstellt
houseDas Gebäude oder Grundstück selbst. Der Punkt liegt auf dem Grundstück.
streetEine Position entlang der Straße, interpoliert aus dem Hausnummernbereich dieses Abschnitts.
postcodeDer Mittelpunkt des Postleitzahlgebiets.
adminDer Mittelpunkt der Stadt, des Bezirks, der Region oder des Landes, je nachdem, welcher Treffer am genauesten war.
Migration

Sie nutzen bereits die API eines anderen Anbieters? Ändern Sie den Hostnamen.

Wir betreiben Drop-in-Hosts, die dieselben Pfade und Parameter wie Google Maps, Bing Maps, HERE, Mapbox, Geocode.Farm, Nominatim und elf weitere akzeptieren und im jeweiligen Antwortformat mit unseren Daten antworten. Ihr Parsing-Code bleibt unverändert. Setzen Sie Ihren My Geocode-Schlüssel dort ein, wo der alte Schlüssel stand.

Vorher
$ curl "https://maps.googleapis.com/maps/api/geocode/json?address=10+Downing+St+London&key=GOOGLE_KEY"
Nachher
$ curl "https://gapi.mygeocode.com/maps/api/geocode/json?address=10+Downing+St+London&key=MYGEOCODE_KEY"

Dasselbe Prinzip funktioniert für JavaScript-Bibliotheken. Laden Sie die Google Maps JavaScript API von gapi.mygeocode.com, und google.maps.Map, Geocoder sowie Places Autocomplete funktionieren weiter, wobei Kartenaufrufe nichts kosten. Es gibt Loader für das Bing Maps V8 Control, HERE Maps for JavaScript und MapQuest.js sowie Einstellungen für Geocoder-Plugins von MapLibre, Mapbox GL und Leaflet.

  • Google Maps
  • Bing Maps
  • HERE
  • Mapbox
  • Geocode.Farm
  • Nominatim
  • OpenCage
  • LocationIQ
  • Geoapify
  • TomTom
  • MapQuest
  • Geocodio
  • PositionStack
  • ip-api
  • ipinfo
  • ipstack
  • Open-Elevation

REST-Drop-ins JavaScript-Drop-ins

Jede Sprache

Was eine HTTP-Anfrage senden kann, kann diese API nutzen

Es ist kein SDK nötig. Diese Beispiele geokodieren eine Adresse und geben ihre Koordinaten aus. Offizielle Bibliotheken für jede Sprache sind in Arbeit und bleiben schlanke Wrapper um genau diese Aufrufe.

$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/forward?q=221B+Baker+Street,+London"

$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/forward?q=221B+Baker+Street,+London"
const url = new URL("https://api.mygeocode.com/v1/forward");
url.searchParams.set("q", "221B Baker Street, London");

const res = await fetch(url, { headers: { "X-API-Key": process.env.MYGEOCODE_KEY } });
const data = await res.json();

const [first] = data.results;
console.log(first.lat, first.lon, first.precision);
import os
import requests

r = requests.get(
    "https://api.mygeocode.com/v1/forward",
    params={"q": "221B Baker Street, London"},
    headers={"X-API-Key": os.environ["MYGEOCODE_KEY"]},
    timeout=10,
)
r.raise_for_status()
first = r.json()["results"][0]
print(first["lat"], first["lon"], first["precision"])
<?php
$url = "https://api.mygeocode.com/v1/forward?" . http_build_query([
    "q" => "221B Baker Street, London",
]);

$context = stream_context_create(["http" => ["header" => "X-API-Key: " . getenv("MYGEOCODE_KEY")]]);
$data = json_decode(file_get_contents($url, false, $context), true);

$first = $data["results"][0];
echo $first["lat"], ", ", $first["lon"], " (", $first["precision"], ")\n";
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"net/url"
	"os"
)

func main() {
	q := url.Values{"q": {"221B Baker Street, London"}}
	req, _ := http.NewRequest("GET", "https://api.mygeocode.com/v1/forward?"+q.Encode(), nil)
	req.Header.Set("X-API-Key", os.Getenv("MYGEOCODE_KEY"))

	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()

	var data struct {
		Results []struct {
			Lat       float64 `json:"lat"`
			Lon       float64 `json:"lon"`
			Precision string  `json:"precision"`
		} `json:"results"`
	}
	json.NewDecoder(resp.Body).Decode(&data)
	fmt.Println(data.Results[0].Lat, data.Results[0].Lon, data.Results[0].Precision)
}
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;

public class Geocode {
    public static void main(String[] args) throws Exception {
        String q = URLEncoder.encode("221B Baker Street, London", StandardCharsets.UTF_8);
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.mygeocode.com/v1/forward?q=" + q))
            .header("X-API-Key", System.getenv("MYGEOCODE_KEY"))
            .build();

        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
using System.Net.Http;
using System.Text.Json;

var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-Key", Environment.GetEnvironmentVariable("MYGEOCODE_KEY"));

var q = Uri.EscapeDataString("221B Baker Street, London");
var json = await client.GetStringAsync($"https://api.mygeocode.com/v1/forward?q={q}");

using var doc = JsonDocument.Parse(json);
var first = doc.RootElement.GetProperty("results")[0];
Console.WriteLine($"{first.GetProperty("lat")}, {first.GetProperty("lon")} ({first.GetProperty("precision")})");
require "net/http"
require "json"

uri = URI("https://api.mygeocode.com/v1/forward")
uri.query = URI.encode_www_form(q: "221B Baker Street, London")

req = Net::HTTP::Get.new(uri)
req["X-API-Key"] = ENV["MYGEOCODE_KEY"]
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }

first = JSON.parse(res.body)["results"][0]
puts "#{first["lat"]}, #{first["lon"]} (#{first["precision"]})"

SDK-Pläne und vollständige Beispiele für jede Sprache ansehen

Schlüssel sind optional

Für die Registrierung genügt eine E-Mail-Adresse

Jede Adresse erhält 2.500 kostenlose Anfragen pro Tag ganz ohne Schlüssel, über alle Endpunkte und Drop-in-Hosts hinweg, gezählt ab 00:00 UTC. Ein Schlüssel dauert eine Minute, wenn Sie einen möchten: Registrieren Sie sich mit Ihrem Namen, einer E-Mail-Adresse und einem Passwort, und Ihr erster Schlüssel erscheint auf dem Bildschirm. Keine Firma, keine Karte. Jeder Schlüssel hat eigene 2.500 kostenlose Anfragen pro Tag, und Anfragen ohne Schlüssel aus demselben Netzwerk teilen sich dieses Kontingent, sodass ein Konto Guthaben, Pakete und einen Nutzungsverlauf hinzufügt, aber keine zweiten kostenlosen 2.500.

Schlüssel sind an die Maschinen gebunden, die sie nutzen. Ein nutzungsbasierter Schlüssel bedient zwei IP-Adressen in beliebigen rollierenden 24 Stunden, ein Unlimited-Schlüssel drei. Jede Adresse belegt ihren Platz für 24 Stunden ab ihrer ersten Anfrage und gibt ihn dann frei. Eine Anfrage von einer weiteren Adresse wird abgelehnt und nicht gezählt, und genau das verhindert, dass ein geleakter Schlüssel für andere nützlich ist. Sie brauchen mehr Adressen? Erstellen Sie weitere Schlüssel oder buchen Sie Pakete hinzu.

  1. Registrieren, Schlüssel erhalten

    E-Mail-Adresse und Passwort. Der Schlüssel wird nur einmal angezeigt; kopieren Sie ihn. 2.500 Anfragen pro Tag, kostenlos, von bis zu zwei IP-Adressen.

  2. Guthaben aufladen, wenn Sie mehr brauchen

    Laden Sie ab 5 € per Karte oder Kryptowährung auf. Anfragen über das kostenlose Kontingent eines Schlüssels hinaus kosten jeweils 0,0001 € vom Guthaben. Guthaben verfällt nie, und nichts wird automatisch abgebucht.

  3. Oder nehmen Sie einen Unlimited-Schlüssel

    Für 50 € im Monat erhalten Sie einen Schlüssel ohne Kosten pro Anfrage, nutzbar von drei IP-Adressen pro rollierenden 24 Stunden. Bestellen Sie so viele Pakete, wie Sie Anwendungen haben.

Preise

Kostenlos starten, einfach bezahlen

Jeder Endpunkt kostet gleich viel. Jeder Drop-in-Host zählt gleich. Keine Stufen, keine Kosten pro Nutzerplatz, kein Vertrag. Preise in Euro, Zahlung per Karte oder Kryptowährung.

Kostenloser Schlüssel

2.500 Anfragen pro Tag für jeden Schlüssel. Registrieren Sie sich mit Name und E-Mail-Adresse; keine Karte. Dieselben Daten und dieselben Endpunkte wie bei kostenpflichtiger Nutzung.

Guthaben

0,0001 € pro Anfrage über die kostenlosen 2.500 pro Tag eines Schlüssels hinaus, abgebucht von einem Guthaben, das Sie jederzeit aufladen. Keine Monatsgebühr, kein Verfall. 10.000 Anfragen an einem Tag verbrauchen 0,75 € Guthaben.

Unlimited-Schlüssel

50 € im Monat. Ein Schlüssel ohne Kosten pro Anfrage für jeden Endpunkt und jeden Drop-in-Host, von bis zu drei IP-Adressen pro rollierenden 24 Stunden.

Alle Preise und Rechenbeispiele

SDKs

Offizielle Bibliotheken, eine pro Sprache, alle schlank

Wir schreiben kleine Client-Bibliotheken für JavaScript und TypeScript, Python, PHP, Go, Java, C#, Ruby und Rust. Jede bietet typisierte Antworten, sinnvolle Timeouts, Wiederholungen bei 429 und 503 und sonst nichts. Sobald eine fertig ist, erscheint sie mit ihrem Installationsbefehl auf der SDK-Seite.

SDK-Fortschritt verfolgen

Brauche ich einen Schlüssel, um es auszuprobieren?

Nein. Jede Adresse erhält 2.500 Anfragen pro Tag ohne Schlüssel und ohne Konto. Die Demo-Seite sendet Anfragen direkt aus dem Browser, ohne Schlüssel. Ein kostenloser Schlüssel dauert eine Minute, wenn Sie Guthaben, ein Unlimited-Paket oder einen Nutzungsverlauf möchten.

Was passiert bei Anfrage 2.501?

Wenn Ihr Konto Guthaben hat, wird die Anfrage ausgeführt und verbraucht 0,0001 € davon. Wenn nicht, erhalten Sie HTTP 402 bis 00:00 UTC oder bis Sie aufladen. Bei einem Unlimited-Schlüssel ändert sich nichts.

Warum ist ein Schlüssel auf zwei oder drei IP-Adressen beschränkt?

Schlüssel sind für Server gedacht, und das Limit sorgt dafür, dass ein Schlüssel, der in ein öffentliches Repository gelangt, nicht von hundert Maschinen aus genutzt werden kann. Jede Adresse belegt ihren Platz für 24 Stunden ab ihrer ersten Anfrage, danach wird der Platz frei. Ein nutzungsbasierter Schlüssel hat zwei Plätze, ein Unlimited-Schlüssel drei. Für mehr Maschinen erstellen Sie weitere Schlüssel oder buchen Pakete hinzu.

Darf ich die Ergebnisse speichern?

Ja. Speichern Sie sie im Cache, legen Sie sie in Ihrer Datenbank ab, zeigen Sie sie auf der Karte eines anderen Anbieters an. Die Bedingungen verlangen nur, dass Sie die Rohdaten nicht als eigenen Geokodierungsdienst weiterverkaufen.

Senden Sie jetzt Ihre erste Anfrage

Die Demo sendet Live-Anfragen aus Ihrem Browser mit Ihrem Schlüssel und öffnet die JSON-Antwort. Für einen kostenlosen Schlüssel brauchen Sie Ihren Namen, eine E-Mail-Adresse und eine Minute; wenn 2.500 pro Tag nicht mehr reichen, laden Sie Guthaben auf oder nehmen Sie einen Unlimited-Schlüssel hinzu.