Geo-API
IP-Geolokation als eigene API: Land, Region, Stadt, PLZ, Koordinaten, Zeitzone, ASN, Netzbereich (CIDR), RIR und Provider — plus Kontinent/EU-Kennzeichen, Land-Metadaten (Vorwahl, Währung, Amts- und Verkehrssprachen), ein volles Zeitzonen-Objekt, Netzwerk-Signale (Hosting/Cloud inkl. Azure, VPN, Tor, Satellit, Anycast, iCloud Relay, Bogon), einen geschätzten Abuse-Score samt Risiko-Einstufung sowie geschätzter Genauigkeits-Radius und Konfidenz je Feld. Einzeln oder als Batch (bis 1.000 IPs/Anfrage). Aus einer EU-gehosteten, vendor-freien Datenbasis, mit lokalisierten Namen (DE/EN) und einem herunterladbaren .mmdb (IPv4) für die lokale Nutzung in GeoIP2-kompatiblen Tools.
# Schnellstart
API-Key mit dem Scope „geo“ unter Einstellungen → API-Keys erstellen. Authentifizierung per Query-Parameter ?key= (header-unabhängig, ideal für jede Umgebung).
$ curl "https://api.xictraq.com/api/geo?ip=46.5.1.1&key=xtraq_IHR_KEY"
{
"ip": "46.5.1.1",
"network": "46.5.1.0/24",
"country_code": "DE",
"country_name": "Deutschland",
"is_eu": true,
"calling_code": 49,
"currency": { "code": "EUR", "symbol": "€" },
"languages": ["de"],
"continent": "Europa", "continent_code": "EU",
"rir": "RIPE",
"region": "Nordrhein-Westfalen", "region_code": "DE-NW",
"city": "Köln", "postal_code": "50667",
"latitude": 50.9379, "longitude": 6.835,
"timezone": "Europe/Berlin",
"time_zone": { "id": "Europe/Berlin", "utc_offset": "+02:00",
"utc_offset_seconds": 7200, "is_dst": true,
"current_time": "2026-06-05T14:23:11+02:00" },
"accuracy_radius_km": 25,
"confidence": { "country": 99, "region": 70, "city": 80 },
"asn": 3209, "isp": "Vodafone", "isp_domain": "vodafone.de",
"org_id": "ORG-VG1-RIPE", "org_type": "LIR", "registry_country": "DE",
"allocation_date": "1999-08-20", "abuse_contact": "abuse@vodafone.de",
"connection_type": "isp",
"is_hosting": false, "is_datacenter": false, "cloud_provider": null,
"is_anycast": false,
"is_relay": false, "is_vpn": false, "is_tor": false,
"is_satellite": false, "is_bogon": false,
"abuse_score": 4, "risk": "niedrig",
"quota": { "tier": "geo_api_pro", "used": 1241, "monthly_limit": 500000 }
}# Endpoints
$ curl -X POST "https://api.xictraq.com/api/geo/batch?key=xtraq_IHR_KEY" \
-H "Content-Type: application/json" \
-d '{"ips":["8.8.8.8","203.0.113.7"]}'
{
"results": [
{ "ip": "8.8.8.8", "network": "8.8.8.0/24", "country_code": "US",
"rir": "ARIN", "is_anycast": true, "cloud_provider": "Google Cloud",
"abuse_score": 12, "risk": "niedrig", "...": "…" },
{ "ip": "203.0.113.7", "error": "invalid_ip" }
],
"count": 2,
"quota": { "tier": "geo_api_pro", "used": 1243, "monthly_limit": 500000 }
}# Was eine Antwort liefert
Jeder Lookup gibt ein flaches JSON-Objekt zurück — vier Feldgruppen plus quota. Land-/Standort-Felder, Land-Metadaten, Netz-/Register-Felder und Netzwerk-/Risiko-Signale.
Standort & Zeitzone
country_code/country_name, is_eu, continent/continent_code, region/region_code, city, postal_code, latitude, longitude. timezone als IANA-Zone plus ein time_zone-Objekt mit id, utc_offset (z. B. +02:00), utc_offset_seconds, is_dst (Sommerzeit-Flag) und current_time (aktuelle Ortszeit als ISO-8601). Liefert die City-Ebene keine Zone, aber das Land hat nur eine, ergänzt timezone die primäre Landeszone; Mehrzeitzonen-Länder (US, Russland, …) bleiben bewusst null statt eine pauschale Zone zu erfinden.
Land-Metadaten
Je erkanntem Land calling_code (Telefon-Vorwahl als Ganzzahl, z. B. 49), currency als Objekt aus code und symbol (z. B. EUR / €) und languages als Array der Amts- und Verkehrssprachen im ISO-639-1-Format. Diese Felder leiten sich aus dem Ländercode ab und ersparen eine zweite Nachschlagetabelle.
Netz & RIR-Register
network ist der gematchte Netzbereich als IPv4-CIDR (z. B. 8.8.8.0/24), rir die zuständige Regional Internet Registry (RIPE, ARIN, APNIC, LACNIC, AFRINIC). asn, isp und isp_domain benennen den Netzbetreiber. Aus dem RIR-Register stammen zusätzlich org_id (Org-Handle zum Gruppieren aller Netze einer Firma), org_type (z. B. LIR oder Endkunde), registry_country (Land des Betreibers laut Register), allocation_date (Erstregistrierung der ASN — ein sehr junges Netz kann ein Risiko-Signal sein) und abuse_contact (Abuse-E-Mail des Betreibers für Missbrauchsmeldungen).
Netzwerk- & Risiko-Signale
Pro IP Flags für Hosting (is_hosting), Rechenzentrum (is_datacenter), VPN (is_vpn), Tor (is_tor), Satellit (is_satellite), Anycast/Resolver (is_anycast), iCloud Private Relay (is_relay) und Bogon (is_bogon), dazu cloud_provider (erkennt bekannte Cloud-ASNs wie AWS, Google Cloud, Azure; sonst null) und ein abgeleiteter connection_type (hosting, satellite, relay oder isp). Daraus wird ein abuse_score von 0 bis 100 errechnet — Tor (+40), VPN (+30), Hosting (+20) und Anycast ohne bekannten Public-Resolver (+10) summieren sich; ein Treffer in der Spamhaus-DROP-Liste hebt den Score auf mindestens 90. risk gruppiert den Score grob: niedrig (unter 20), erhöht (unter 50), hoch (ab 50). Das risk-Label wird unabhängig von lang immer deutsch zurückgegeben. Konnten die Reputationslagen nicht gelesen werden, liefert die API abuse_score und risk als null statt einer Bestnote. Alle Flags und der Score sind Schätzwerte auf Basis bekannter IP-Bereiche — keine garantierte Aussage.
Genauigkeit & Konfidenz (transparent)
Statt eine Punkt-Genauigkeit vorzutäuschen, liefert jede Antwort accuracy_radius_km (geschätzter Radius in km um die Koordinaten) und confidence je Feld (country, region, city als 0–100). Der Radius richtet sich nach der erreichten Granularität: stadtgenau aus einer Operator-/Geofeed-Quelle rund 25 km (iCloud-Relay-Standorte gröber, rund 80 km), aus der City-DB rund 50 km, nur regionsgenau 150 km, nur landesgenau 600 km. Beides sind offene Schätzwerte — keine zugesicherte Präzision. Kennt die offene Ortsdatenbank für einen Adressbereich nur einen Ersatzort (etwa den Sitz des Netzbetreibers, bei dem sich Zugänge aus dem ganzen Land sammeln), bleiben Stadt und Region leer und der Radius beträgt 600 km — lieber keine Angabe als eine falsche. Meldet der Netzbetreiber den Ort selbst per Geofeed, gilt seine Angabe.
# Kontingente & Preise
Buchbar als Add-on unter Einstellungen → Abo & Rechnung. Pro-Minute-Limit pro Key zusätzlich konfigurierbar.
Geo-API Starter
5 €/Monat
50.000 Lookups / Monat
monatlich kündbar
Geo-API Pro
12 €/Monat
500.000 Lookups / Monat
monatlich kündbar
Geo-API Business
29 €/Monat
3 Mio. Lookups / Monat
monatlich kündbar
# Lokale Datenbank (.mmdb)
Wer Geodaten lokal auflösen will, lädt über /geo/db eine .mmdb im offenen GeoIP2-Format. Jedes Tool oder Framework, das dieses Format liest, kann sie direkt einbinden — kein externer Account, EU-Datenbasis, IPv4, wöchentlich aktualisierbar. Für IPv6 nutzen Sie zusätzlich den /geo-Endpoint.