Dokumentation der IP-Geolocation-API
Kostenlose JSON-API für IP-Geolokalisierung, ASN- und Risikodaten. IPv4 und IPv6, HTTPS, CORS aktiviert.
Schnellstart
Zum Ausprobieren ist keine Registrierung nötig. Rufen Sie den folgenden Endpunkt ohne Key auf, um Daten zu Ihrer eigenen IP zu erhalten (begrenzt auf 100 Anfragen pro Tag).
curl https://iplookinfo.com/jsonAuthentifizierung
Erstellen Sie im Dashboard einen kostenlosen API-Key und senden Sie ihn im Authorization-Header. Ein token-Query-Parameter funktioniert für schnelle Tests ebenfalls, sollte aber in der Produktion vermieden werden, da URLs in Logs landen.
Authorization: Bearer ipl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxEndpunkte
- GET/api/v1/{ip}
- Beliebige IPv4- oder IPv6-Adresse abfragen.
- GET/api/v1/me
- Die eigene IP des Aufrufers abfragen. Auch unter /json verfügbar.
- POST/api/v1/batch
- Bis zu 10.000 IPs in einer Anfrage abfragen (kostenpflichtige Tarife). Jede IP zählt als eine Anfrage.
Query-Parameter
lang — Sprache für Ortsnamen: en, zh, es, pt, ru, ja. Standard: en.
Antwort
Das risk-Objekt ist nur in den Tarifen Pro und Business enthalten.
{
"ip": "8.8.8.8",
"version": "IPv4",
"type": "unicast",
"bogon": false,
"network": "8.8.8.0/24",
"continent": { "code": "NA", "name": "North America" },
"country": { "code": "US", "name": "United States", "is_eu": false },
"region": null,
"city": null,
"postal": null,
"location": { "latitude": 37.751, "longitude": -97.822, "accuracy_radius_km": 1000, "time_zone": "America/Chicago" },
"asn": { "asn": 15169, "name": "Google LLC", "domain": "google.com", "route": "8.8.8.0/24" },
"isp": { "name": "Google", "organization": "Google", "is_mobile": false, "mobile_country_code": null, "mobile_network_code": null },
"risk": { "score": 60, "is_tor": false, "is_vpn": false, "is_datacenter": true, "provider": "Google Cloud" }
}Rate-Limits und Fehler
Jede Antwort enthält die Header X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset. Kontingente werden um 00:00 UTC zurückgesetzt.
Fehler verwenden ein einheitliches JSON-Format mit einem HTTP-Statuscode:
HTTP/1.1 429 Too Many Requests
{ "error": { "code": "quota_exceeded", "message": "..." } }- 400 invalid_ip / bad_request
- 401 invalid_key
- 403 plan_required
- 413 too_many
- 429 rate_limited / quota_exceeded
Mehrnutzung
In kostenpflichtigen Tarifen kann Mehrnutzung im Dashboard aktiviert werden. Anfragen über das Tageskontingent hinaus werden dann bedient und pro 1.000 abgerechnet, bis zu einer von Ihnen gewählten monatlichen Ausgabenobergrenze. Solche Antworten enthalten einen X-Overage-Units-Header.
Codebeispiele
cURL
curl -H "Authorization: Bearer $IPLOOKINFO_KEY" https://iplookinfo.com/api/v1/8.8.8.8
# Batch (paid plans)
curl -X POST -H "Authorization: Bearer $IPLOOKINFO_KEY" \
-H "Content-Type: application/json" \
-d '{"ips":["8.8.8.8","1.1.1.1"]}' https://iplookinfo.com/api/v1/batchJavaScript
const res = await fetch("https://iplookinfo.com/api/v1/8.8.8.8", {
headers: { Authorization: `Bearer ${process.env.IPLOOKINFO_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();
console.log(data.country?.code, data.city);Python
import os, requests
r = requests.get(
"https://iplookinfo.com/api/v1/8.8.8.8",
headers={"Authorization": f"Bearer {os.environ['IPLOOKINFO_KEY']}"},
timeout=5,
)
r.raise_for_status()
data = r.json()
print(data["country"]["code"], data["asn"]["name"])PHP
$ctx = stream_context_create(["http" => [
"header" => "Authorization: Bearer " . getenv("IPLOOKINFO_KEY"),
]]);
$data = json_decode(file_get_contents("https://iplookinfo.com/api/v1/8.8.8.8", false, $ctx), true);
echo $data["country"]["code"];Go
req, _ := http.NewRequest("GET", "https://iplookinfo.com/api/v1/8.8.8.8", nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("IPLOOKINFO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()
var data map[string]any
json.NewDecoder(resp.Body).Decode(&data)