API-Referenz
Einfache, konsistente Endpunkte. CORS aktiviert. Keine Authentifizierung. Vollständig mehrsprachig — jedes Feld, jeder Schlüssel und Wert wird in über 10 Sprachen übersetzt.
Basis-URL
Schnellstart
Terminal-Shortcut: curl ipto.to oder curl ipto.to/8.8.8.8 (kein https:// oder /v1/ip/ nötig) funktioniert ebenfalls, wenn die Anfrage von curl, Wget oder HTTPie kommt — erkannt über den User-Agent. Dabei wird ein kürzerer, an ipinfo.io angelehnter Feldsatz zurückgegeben (ip, country, city, asn, org, ...), nicht das vollständige Schema unten — verwenden Sie die /v1/ip-Pfade direkt für die vollständige, auf dieser Seite dokumentierte Antwort.
Nur die IP: curl ipto.to/ip (oder im Browser öffnen) gibt nichts als die eigene IP-Adresse als reinen Text zurück — 73.9.114.155, kein JSON, kein Seiten-Chrome. Direktes Äquivalent zu ipinfo.io/ip. Siehe GET /ip unten.
Standardmäßig mehrsprachig: Setzen Sie ?lang= auf einen unterstützten Code, und jeder JSON-Schlüssel und -Wert in der Antwort kommt übersetzt zurück — nicht nur Land/Kontinent. Siehe Lokalisierung unten für die vollständige Sprachliste und die &localize=0-Option zum Abschalten.
Lookup Lab
Baue eine beliebige ipto-Anfrage, kopiere sie als sofort lauffähigen Code in deiner Sprache oder sende sie direkt hier ab und lies die Live-Antwort. Für den kostenlosen Tarif ist kein Schlüssel nötig.
MCP-Server
ipto ist auch als MCP-Tool-Server (Model Context Protocol) erreichbar — richten Sie Claude Desktop, Cursor oder einen beliebigen MCP-fähigen Client auf den unten stehenden Endpunkt, und es werden 14 aufrufbare Tools bereitgestellt: ip_lookup, bulk_ip_lookup (Pro/Enterprise), asn_lookup, country_lookup, reverse_dns_lookup, user_agent_parse, phone_lookup, email_lookup, fraud_score, language_detect, currency_convert, weather_lookup, trademark_lookup und patent_lookup. JSON-RPC 2.0 über Streamable HTTP — nur POST, keine Session/SSE erforderlich. Gleiche Authentifizierung wie bei der REST-API: weglassen für den kostenlosen Tarif (1.000 Anfragen/Tag pro IP), oder ?api_key= an die Endpunkt-URL anhängen.
Für reine Stdio-Clients per Bridge verbinden: npx mcp-remote https://ipto.to/mcp
Endpunkte
Gibt nichts als die eigene öffentliche IP-Adresse des anfragenden Clients als reinen Text zurück (Content-Type: text/plain) — z. B. 73.9.114.155. Direktes Äquivalent zu ipinfo.io/ip: funktioniert identisch über curl, Wget, HTTPie oder einen einfachen Browser-Aufruf (keine User-Agent-Erkennung, anders als beim curl ipto.to-Shortcut oben), und zeigt im Browser geöffnet nur die reine IP ohne Seiten-Chrome an.
Keine Parameter, kein Query-String. Für das vollständige Geolokalisierungs-/Threat-Intelligence-Objekt verwenden Sie stattdessen GET /v1/ip unten. Diese Route liest die verbindende IP direkt aus (kein D1-/KV-Lookup) und wird nicht auf das tägliche Anfragebudget angerechnet — siehe Ratenlimits.
Liefert Geolokalisierung und Threat Intelligence für die anfragende IP, einschließlich Daten auf Stadtebene über das CF-Edge-Objekt.
Keine erforderlichen Parameter. Akzeptiert ?lang=, ?fields=, ?format= — siehe Lokalisierung und Ausgabeformate unten.
Beliebige IPv4-Adresse nachschlagen. Felder auf Stadtebene (city, state, postal_code, latitude, longitude, timezone) werden befüllt, wenn die IP in einem von zwei zusammengeführten Geo-Datensätzen liegt, IP2Location oder MaxMind — prüfen Sie geo_precision in der Antwort, um zu sehen, ob Sie Daten auf Stadt- oder Länderebene erhalten haben. Das Format von timezone hängt davon ab, welche Quelle den Treffer geliefert hat (ein UTC-Offset-String von IP2Location, ein IANA-Name von MaxMind). IPv6-Abfragen liefern derzeit nur Daten auf Länderebene.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
lang | query | Optional. Lokalisiert country_name und continent: en (Standard), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN. |
fields | query | Optional. Kommagetrennte Liste der einzuschließenden Felder. Z. B. ?fields=ip,country_code,is_vpn |
format | query | Optional. Antwortformat: json (Standard), csv, text, xml, yaml. |
Der einheitliche Such-Endpunkt hinter der Suchleiste auf der Startseite. Erkennt, ob :query eine IP, eine ASN (AS15169 oder 15169), ein zweistelliger Ländercode, eine E-Mail-Adresse oder eine Telefonnummer ist, und fasst dann alle relevanten Prüfungen in einer Antwort zusammen. Bei einer IP-Abfrage wird dies serverseitig parallel auf die primäre IP-Abfrage plus RPKI, IP-zu-Unternehmen, Mobilfunkanbieter, Hosted-Domains und Orte aufgefächert, sodass eine einzelne Suche nur eine Anfrage gegen Ihr tägliches Ratenlimit-Budget zählt statt eine pro Funktion.
| Parameter | In | Description |
|---|---|---|
query | path | Erforderlich. Eine IP, ASN, ein Ländercode, eine E-Mail-Adresse oder eine Telefonnummer. |
| Field | Type | Description |
|---|---|---|
query | string | Die dekodierte Eingabe, wie empfangen. |
detected_type | string | "ip", "asn", "country", "email" oder "phone". |
ip | object|null | Vorhanden, wenn detected_type "ip" ist — gleiche Struktur wie GET /v1/ip/:ip. |
rpki | object|null | Vorhanden bei IP-Abfragen — gleiche Struktur wie GET /v1/ip/:ip/rpki. |
company | object|null | Vorhanden bei IP-Abfragen — gleiche Struktur wie GET /v1/ip/:ip/company. |
whois | object|null | Vorhanden bei IP-Abfragen — gleiche Struktur wie GET /v1/ip/:ip/whois. |
carrier | object|null | Vorhanden bei IP-Abfragen — gleiche Struktur wie GET /v1/ip/:ip/carrier. |
asn / country / email / phone | object|null | Anstelle der sechs oben genannten Felder vorhanden, wenn detected_type entsprechend übereinstimmt — gleiche Struktur wie der eigene, dedizierte Endpunkt dieses Typs. |
Jedes Teilfeld degradiert unabhängig — ein langsamer oder fehlgeschlagener Upstream (RIPEstat, ein RDAP-Server, crt.sh) äußert sich darin, dass genau dieses Feld null ist, niemals darin, dass die gesamte Suche fehlschlägt. Nur eine ungültige primäre Abfrage (z. B. eine fehlerhafte IP) liefert einen Fehlerstatus für die gesamte Anfrage.
Reverse-DNS — eine einzelne Live-PTR-Abfrage über DNS-over-HTTPS, keine Domain-Enumerationsdatenbank. Gibt null zurück, wenn die IP keinen PTR-Eintrag hat.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
RPKI-Route-Origin-Validierung für die aktuell angekündigte Route einer IP, live über RIPEstat aufgelöst (keine ROA-Datenbank wird lokal eingelesen oder synchron gehalten). status ist ausschließlich "valid", "invalid" oder "unknown" — niemals aus einem anderen Signal abgeleitet; jeder RIPEstat-Fehler oder Timeout liefert "unknown" mit einem Grund-String, keinen Fehler.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
| Field | Type | Description |
|---|---|---|
asn | integer|null | Die aktuell ankündigende ASN, live aufgelöst — nicht aus dem eigenen ASN-Datensatz dieser Seite abgeleitet. |
prefix | string|null | Das aktuell angekündigte CIDR-Präfix. |
status | string | "valid", "invalid" oder "unknown". |
validating_roas | array | Die konkreten ROA(s), die RIPEstat zugeordnet hat, jeweils mit origin/prefix/max_length/validity. |
validator | string|null | Welchen RPKI-Validator RIPEstat verwendet hat (z. B. "routinator"). |
reason | string|null | Erklärt ein "unknown"-Ergebnis — z. B. es existiert keine abdeckende ROA, oder RIPEstat war nicht erreichbar. |
Explizite (ASN, Präfix) RPKI-Validierung — für den Fall, dass Sie bereits die genaue zu prüfende Route kennen, statt der oben beschriebenen, aus der IP abgeleiteten Komfortvariante.
| Parameter | In | Description |
|---|---|---|
asn | query | Erforderlich. ASN-Nummer, mit oder ohne AS-Präfix. Z. B. 15169 oder AS15169. |
prefix | query | Erforderlich. CIDR-Präfix, z. B. 8.8.8.0/24. |
Identifiziert die Organisation, auf die eine IP registriert ist, indem RDAP-Registrant-Daten (strukturiertes WHOIS) mit dem eigenen Organisationsnamen der ASN zu einer kategorialen Confidence kombiniert werden — nie ein numerischer Score.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
| Field | Type | Description |
|---|---|---|
company_name | string|null | Der ermittelte Firmenname — null, wenn confidence "low" ist (die beiden Quellen widersprechen sich, sodass keine als maßgeblich dargestellt wird) oder "none". |
rdap_org_name | string|null | Der RDAP-Registrant-Name, unabhängig von company_name. |
asn_org_name | string|null | Der eigene Organisationsname der ASN, unabhängig von company_name. |
confidence | string | "high" (Quellen stimmen überein), "medium" (nur eine Quelle verfügbar), "low" (Quellen widersprechen sich — beide werden angezeigt) oder "none". |
reason | string | Erklärung der Confidence-Stufe in einfachen, verständlichen Worten. |
Der zugrunde liegende RDAP-Registrierungsdatensatz selbst — Netzblock, Registrierungs-/letztes-Änderungsdatum und jeder bei RDAP hinterlegte Kontakt. Zu unterscheiden von /company oben, das dieselben Registrant-Daten mit dem Organisationsnamen der ASN zu einer Confidence-bewerteten Antwort abgleicht; dieser Endpunkt liefert den Rohdatensatz unverändert, näher an klassischer WHOIS-Ausgabe. IPv6-Adressen werden ebenfalls unterstützt.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
| Field | Type | Description |
|---|---|---|
available | boolean | false, wenn kein RDAP-Datensatz aufgelöst werden konnte — siehe reason. |
reason | string|null | Erklärt ein available: false-Ergebnis. |
startAddress / endAddress / cidr | string|null | Der registrierte Netzblock. |
netName / netHandle / parentHandle | string|null | Von der RIR vergebene Kennungen für das Netzwerkobjekt. |
country | string|null | Land des Registranten laut RDAP. |
allocationType | string|null | z. B. "direct allocation", "reassigned". |
registeredDate / lastChangedDate | string|null | ISO-Zeitstempel aus dem RDAP-Datensatz. |
rir | string|null | Welches Regional Internet Registry (ARIN, RIPE, APNIC, LACNIC, AFRINIC) den Datensatz geliefert hat. |
contacts | array | Jeder bei RDAP hinterlegte Kontakt, jeweils mit roles, name, email und handle — nicht nur der erste Treffer. |
Bestmögliche Identifikation des Mobilfunkanbieters für als Mobilfunknetze klassifizierte IPs, abgeglichen mit einem MCC/MNC-Betreiberverzeichnis. Es gibt bewusst kein einzelnes carrier-Feld — siehe matched_carrier_entries und note unten —, da ein einzelner Anbietername als Live-Aussage pro Teilnehmer gelesen würde, was diese Daten ehrlicherweise nicht belegen können.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
| Field | Type | Description |
|---|---|---|
is_mobile_network | boolean | false endet hier mit einem leeren Verzeichnis — keine Schätzung für eine nicht-mobile ASN. |
asn_organization | string|null | Der eigene Organisationsname der ASN. |
matched_carrier_entries | array | MCC/MNC-Verzeichniseinträge, deren carrier-Name unscharf mit asn_organization übereinstimmt, beschränkt auf das eigene Land der IP. |
note | string | Erklärt, was dieses Feld aussagen kann und was nicht. |
Findet Domains, die mit einer IP über ihren Reverse-DNS-(PTR)-Hostnamen und Certificate-Transparency-Logs (crt.sh) verknüpft sind — keine allgemeine Reverse-IP-Abfrage. Das eigene limitations-Feld der Antwort erläutert genau, was hiermit gefunden werden kann und was nicht.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4- oder IPv6-Adresse. |
| Field | Type | Description |
|---|---|---|
ptr_hostname | string|null | Der Reverse-DNS-Hostname der IP, oder null, wenn sie keinen PTR-Eintrag hat. |
root_domain | string|null | Die aus ptr_hostname abgeleitete registrierbare Domain. |
subdomains_seen | array|null | Über Certificate Transparency gefundene Subdomains. null bedeutet, dass die crt.sh-Suche selbst nicht abgeschlossen werden konnte — im Unterschied zu einem leeren Array, das bedeutet, dass die Suche lief, aber nichts gefunden hat. |
limitations | string | Erklärt, was dieses Feature strukturell nicht erkennen kann (kein PTR, Shared Hosting, nicht zertifizierte Domains). |
Batch-Abfrage — bis zu 100 IPs pro Anfrage, nur Pro/Enterprise. Liefert ein Objekt mit jeder IP als Schlüssel. Schneller als sequenzielle Aufrufe dank paralleler Cache- und Datenbankzugriffe. Jede IP im Batch zählt gegen Ihr tägliches Anfragebudget, genau wie eine einzelne Abfrage. Anfragen im kostenlosen Tarif erhalten einen 403 — siehe Preise.
| Parameter | In | Description |
|---|---|---|
body | body (JSON) | JSON-Array von IP-Strings. Z. B. ["1.1.1.1","8.8.8.8"] |
Ein autonomes System anhand seiner Nummer nachschlagen. Liefert den Organisationsnamen, Land, Kontinent, Anzahl der IP-Bereiche, Klassifizierungstyp, Wechselkurs und Locale-Referenzdaten (Sprachen, TLD, Hauptstadt, Nachbarländer).
| Parameter | In | Description |
|---|---|---|
asn | path | ASN-Nummer ohne AS-Präfix. Z. B. 15169 für Google. |
lang | query | Optional. Lokalisiert country_name und continent: en (Standard), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN. |
format | query | Optional. Antwortformat: json (Standard), csv, text, xml, yaml. |
Führt ein Reverse-Geocoding des vorhandenen Standorts einer IP auf Stadtebene durch und liefert dann nahegelegene Points of Interest (Restaurants, Parks, Schulen, Verkehrsmittel, bekannte Sehenswürdigkeiten), lokale Kriminalitätsdaten, sofern eine Quelle existiert (nur Großbritannien und USA), sowie eine optionale, auf Anfrage berechnete Pendel-Schätzung mit dem Auto.
| Parameter | In | Description |
|---|---|---|
ip | path | Erforderlich. Eine beliebige gültige IPv4-Adresse. IPv6 wird noch nicht unterstützt. |
dest_lat | query | Optional. Ziel-Breitengrad für eine Pendel-Schätzung — zusammen mit dest_lon verwenden. |
dest_lon | query | Optional. Ziel-Längengrad für eine Pendel-Schätzung — zusammen mit dest_lat verwenden. |
dest_address | query | Optional. Freitext-Zieladresse für eine Pendel-Schätzung, wird automatisch per Forward-Geocoding aufgelöst. Wird ignoriert, wenn zusätzlich dest_lat/dest_lon angegeben sind. |
| Field | Type | Description |
|---|---|---|
geocode | object|null | country, countryCode, region, city, neighbourhood, displayName — null, wenn die IP über keinen Standort auf Stadtebene verfügt, von dem aus geokodiert werden könnte. |
locality.restaurants / .parks / .schools / .transit | array | Bis zu 4 nächstgelegene Einträge pro Kategorie, jeweils mit name und distanceMeters. |
locality.notable | array | Bekannte nahegelegene Sehenswürdigkeiten mit Kurzbeschreibung, über Wikidata. |
locality.usCrime | object|null | Gewalt-/Eigentumskriminalitäts-Summen der zuständigen Behörde — nur USA, erfordert einen FBI_CRIME_API_KEY im Deployment. Überall sonst null. |
locality.ukCrime | object|null | Vorfallsübersicht auf Straßenebene innerhalb von 1 Meile — nur Großbritannien. |
locality.caCrime | null | Immer null — es ist keine kanadaweite Kriminalitätsquelle angebunden (siehe docs/places.md). |
commute | object|null | durationMinutes und distanceKm, nur wenn ein Ziel angegeben wurde und OpenRouteService eine Route geliefert hat. Andernfalls null — wird nie spekulativ berechnet. |
Aggregierte Statistiken auf Länderebene plus Locale-Referenzdaten (Währung, Wechselkurs, Sprachen, TLD, Hauptstadt, Nachbarländer).
| Parameter | In | Description |
|---|---|---|
code | path | ISO-3166-1-Alpha-2-Ländercode. Z. B. US, DE, JP. |
lang | query | Optional. Lokalisiert country_name und continent: en (Standard), pt, fr, de, zh-TW, ko, zh-CN, ja-JP, es-ES, ar-SA, hi-IN. |
format | query | Optional. Antwortformat: json (Standard), csv, text, xml, yaml. |
Analysiert einen User-Agent-String. Liefert Browser, Betriebssystem, Gerätetyp und Bot-Erkennung. Liest standardmäßig den User-Agent-Header des Aufrufers, oder übergeben Sie einen beliebigen String über ?ua=.
| Parameter | In | Description |
|---|---|---|
ua | query | Optional. URL-kodierter, zu analysierender User-Agent-String. Standardmäßig der User-Agent-Header der Anfrage. |
Validiert und formatiert eine Telefonnummer stets kostenlos: Region, Anschlussart sowie E.164-/nationale/internationale Formatierung über einen selbst gehosteten Parser, kein Anbieteraufruf. Wenn ein monatliches Premium-Budget pro IP/Schlüssel verfügbar ist (100/Monat im Free-Tarif, mehr in bezahlten Tarifen — siehe Preise), liefert dieselbe Anfrage zusätzlich einen aktuellen Anbieternamen, den Portierungsstatus und eine anbieterklassifizierte Telefonart von einem Echtzeit-Anbieterabfrage-Dienst — siehe source und die Felder unten. Ein lokalisierter country_name sowie lang/lang_source sind unabhängig von der Stufe immer enthalten — siehe Lokalisierung. Ist das Premium-Budget aufgebraucht oder liegt ein Problem beim Dienst vor, fällt die Anfrage nahtlos auf die kostenlosen Felder oben zurück; sie schlägt dadurch nie fehl. Für eine länderweite Netzbetreiber-Referenz statt einer Abfrage pro Nummer siehe stattdessen GET /v1/carriers.
| Parameter | In | Description |
|---|---|---|
number | path | Erforderlich. Eine beliebige Telefonnummer, idealerweise im E.164-Format (z. B. +14155552671). Das führende + muss URL-kodiert werden. |
country | query | Optional. Zweistelliger Ländercode als Hinweis zum Parsen mehrdeutiger Nummern im nationalen Format, z. B. ?country=US. |
mode | query | Optional. ?mode=current fordert den aktuellen (statt den bei der SIM ausgestellten) Anbieter der Nummer an, sofern die Premium-Stufe verfügbar ist. Wird ignoriert, wenn die Anfrage auf den kostenlosen Tarif zurückfällt. |
| Field | Type | Description |
|---|---|---|
valid | boolean | true, wenn die Nummer einem gültigen Nummerierungsplan-Muster für ihre Region entspricht. |
country_code | string|null | ISO-3166-1-Alpha-2-Region, zu der die Nummer gehört. |
national_format | string|null | Formatiert gemäß der nationalen Konvention der jeweiligen Region. |
international_format | string|null | Formatiert mit Ländercode und Leerzeichen, z. B. "+1 415 555 2671". |
e164 | string|null | Kanonische E.164-Form, z. B. "+14155552671". |
line_type | string|null | FIXED_LINE, MOBILE, FIXED_LINE_OR_MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE oder Ähnliches. Viele Nummerierungspläne (einschließlich des nordamerikanischen) können Festnetz und Mobilfunk anhand der Nummer allein nicht unterscheiden. |
source | string | "premium", wenn für diese Anfrage ein Live-Anbieterabfrage-Budget verfügbar war, "local", wenn auf den kostenlosen Parser oben zurückgefallen wurde. carrier, phone_type, original_carrier, is_ported, phone_region und country_prefix unten sind nur befüllt, wenn source "premium" ist — country_name sowie lang/lang_source weiter unten sind unabhängig von der Stufe immer befüllt. |
phone_type | string|null | Eine der eigenen Kategorien des Echtzeit-Anbieterabfrage-Dienstes: mobile, fixed_line, voip, toll_free, premium_rate, shared_cost, personal_number, pager, uan, voicemail oder unknown — nicht nur die ersten vier, die lediglich die häufigsten Beispiele sind. null, wenn source "local" ist — unterscheidet sich von line_type oben, das vom lokalen Parser stammt und andere Kategorien verwendet. |
carrier | string|null | Der Name des aktuellen Netzbetreibers der Nummer. null, wenn source "local" ist. |
original_carrier | string|null | Der Netzbetreiber, bei dem die Nummer ursprünglich ausgestellt wurde, falls sie seither portiert wurde. null, wenn source "local" ist oder die Nummer nicht portiert wurde. |
is_ported | boolean|null | true, wenn die Nummer von ihrem ursprünglichen Anbieter wegportiert wurde. null, wenn source "local" ist. |
phone_region | string|null | Orts-/bundeslandbezogenes Detail zur Nummer (z. B. "California"), feiner aufgelöst als country_code oben. null, wenn source "local" ist. |
country_prefix | string|null | Die Landesvorwahl der Nummer ohne führendes "+" (z. B. "49" für Deutschland). null, wenn source "local" ist. |
country_name | string|null | Vollständiger Länderanzeigename (z. B. "Germany") — country_code oben ist nur die ISO-3166-1-Alpha-2-Form ("DE"), kein Anzeigename. Anders als die reinen Premium-Felder oben ist dieses Feld immer befüllt (sobald country_code es ist) und wird genau wie das country_name-Feld jedes anderen Endpunkts über ?lang=/Accept-Language lokalisiert — siehe lang/lang_source unten. |
lang | string | Die tatsächlich auf country_name oben angewendete Sprache — der aufgelöste ?lang=-Wert oder "en", wenn keiner angefragt wurde oder der angefragte nicht unterstützt wird. |
lang_source | string | "param", wenn ?lang= in der Anfrage vorhanden war, "header", wenn stattdessen Accept-Language verwendet wurde, oder "default", wenn keines von beiden vorlag und Englisch verwendet wurde. Dieselbe Bedeutung wie das gleichnamige Feld bei GET /v1/asn/:asn und GET /v1/country/:code. |
Batch-Validierung. Jeder Tarif erhält Bulk-Zugriff (anders als /v1/ip/bulk) — die Obergrenze pro Tarif hält den kostenlosen Tarif in Grenzen, nicht ein 403. Free: 10/Anfrage, 100/Tag. Pro: 100/Anfrage, 1.000/Tag. Enterprise: 1.000/Anfrage, 10.000/Tag. Dieses Budget ist getrennt von Ihrem allgemeinen täglichen Anfragelimit — siehe Ratenlimits.
| Parameter | In | Description |
|---|---|---|
body | body (JSON) | JSON-Array von Telefonnummern-Strings. |
Referenzabfrage: welche Mobilfunknetzbetreiber (MCC/MNC) für ein bestimmtes Land bekannt sind — nicht an eine konkrete Telefonnummer gebunden. Stammt aus einer community-gepflegten MCC/MNC-Zusammenstellung (MIT-lizenziert, zuletzt 2026 synchronisiert — Details siehe docs-Repo); eine statische Referenztabelle, kein Live-Feed, da sich Nummerierungsplan-Zuweisungen nicht oft genug ändern, um einen solchen zu rechtfertigen.
| Parameter | In | Description |
|---|---|---|
country | query | Erforderlich. Zweistelliger Ländercode, z. B. ?country=US. |
Validierung der E-Mail-Syntax, eine Live-Prüfung des MX-Eintrags über DNS-over-HTTPS sowie die Erkennung von Wegwerf-/temporären Domains anhand einer community-gepflegten Blockliste (CC0-lizenziert, täglich synchronisiert). Prüft nicht, ob das Postfach selbst existiert — das würde einen SMTP-Handshake erfordern, den diese API nicht durchführt (siehe die Feldreferenz unten für genau das, was has_mx beweist und was nicht).
| Parameter | In | Description |
|---|---|---|
email | path | Erforderlich. Eine beliebige E-Mail-Adresse, URL-kodiert (das @ muss als %40 kodiert werden). |
| Field | Type | Description |
|---|---|---|
valid_syntax | boolean | true, wenn die Adresse einem üblichen E-Mail-Syntaxmuster entspricht. Prüft nicht, ob das Postfach existiert. |
domain | string|null | Der Domain-Anteil, in Kleinbuchstaben. null, wenn valid_syntax false ist. |
has_mx | boolean|null | true, wenn die Domain aktuell mindestens einen MX-Eintrag hat. null, wenn die Syntax ungültig war oder die DNS-Abfrage selbst fehlgeschlagen ist oder ein Timeout hatte — null als unbekannt behandeln, nicht als false. |
disposable | boolean|null | true, wenn die Domain einem bekannten Wegwerf-/temporären E-Mail-Anbieter entspricht. null unter denselben Bedingungen wie has_mx. |
source | "premium"|"local" | "premium", wenn für diese Anfrage eine Live-Prüfung durchgeführt wurde, sonst "local" (Limit erreicht oder Funktion nicht aktiviert) — die obigen Felder (valid_syntax bis disposable) sind in beiden Fällen immer vorhanden. |
is_reachable | string|null | Das Gesamturteil einer optionalen Live-Prüfung: "safe" (zustellbar), "invalid" (abgelehnt), "risky" (unsicher) oder "unknown" (nicht eindeutig — erneut versuchen). null, wenn für diese Anfrage keine Live-Prüfung durchgeführt wurde (siehe source unten). |
is_catch_all | boolean|null | true, wenn die Domain E-Mails für jede beliebige Adresse akzeptiert, wodurch die Existenz dieses konkreten Postfachs nicht bestätigt werden kann. null, wenn keine Live-Prüfung durchgeführt wurde. |
mailbox_full | boolean|null | true, wenn die Live-Prüfung ein volles Postfach festgestellt hat. null, wenn keine Live-Prüfung durchgeführt wurde. |
is_role_account | boolean|null | true, wenn die Adresse wie eine Sammel-/Funktionsadresse aussieht (z. B. support@, admin@) statt dem Postfach einer Einzelperson. null, wenn keine Live-Prüfung durchgeführt wurde. |
is_disabled | boolean|null | true, wenn die Live-Prüfung ein ausdrücklich deaktiviertes Postfach festgestellt hat. null, wenn keine Live-Prüfung durchgeführt wurde. |
Kombiniert je nachdem, welche von IP, E-Mail, Telefon und User-Agent Sie angeben, zu einem einzigen Score von 0–100 — das eine, was weder ip-api.com, ipapi.co, ipgeolocation.io, ipify.org, ipregistry.co, ip2location.io, AbstractAPI, IPLocate.io noch BigDataCloud als ein einziges fusioniertes Signal anbieten (direkt geprüft). Alle vier Eingaben sind optional und unabhängig — übergeben Sie eine beliebige Teilmenge. ip verwendet standardmäßig Ihre eigene IP und ua Ihren eigenen User-Agent-Header, falls weggelassen, dieselbe Konvention wie bei GET /v1/ip und GET /v1/ua. Ein Signal, das Sie nicht übergeben, fehlt schlicht in der Antwort und wird nicht als unauffällig bewertet — sein Gewicht wird auf die von Ihnen tatsächlich angegebenen Signale umverteilt.
| Parameter | In | Description |
|---|---|---|
ip | query | Optional. Standardmäßig Ihre eigene IP. IPv6 wird noch nicht bewertet (gleiche Einschränkung wie bei der übrigen Threat-Data-API). |
email | query | Optional. Eine beliebige E-Mail-Adresse. |
phone | query | Optional. Eine beliebige Telefonnummer. |
ua | query | Optional. Standardmäßig Ihr eigener User-Agent-Header. |
| Field | Type | Description |
|---|---|---|
score | integer | Gewichteter Gesamtwert von 0-100 über die jeweils angegebenen Signale. |
risk_tier | string | "low" (<20), "medium" (20-44), "high" (45-69) oder "critical" (70+). |
signals | object | Aufschlüsselung pro Eingabe — es sind nur Schlüssel für tatsächlich übergebene Eingaben vorhanden: ip, email, phone, user_agent. Jeder enthält seinen eigenen Komponenten-Score sowie dieselben Felder, die GET /v1/ip/:ip, /v1/email/:email, /v1/phone/:number und /v1/ua für diese Eingabe bereits liefern. |
Rendert eine URL in einer echten Headless-Chrome-Instanz (Cloudflare Browser Rendering, kein Screenshot-Anbieter eines Drittanbieters) und liefert ein PNG zurück. Interne/private Ziele (localhost, RFC-1918-Bereiche, Link-Local-/Cloud-Metadata-Adressen) werden abgelehnt, bevor der Browser überhaupt gestartet wird. Unterliegt den eigenen Plattform-Limits von Browser Rendering, die deutlich enger sind als beim Rest dieser API — rechnen Sie damit, dass hier auf niedrigeren Cloudflare-Plänen bereits weit vor Ihrem regulären täglichen Anfragebudget gedrosselt wird.
| Parameter | In | Description |
|---|---|---|
url | query | Erforderlich. Muss http oder https sein. |
Identifiziert die Sprache eines Textausschnitts über eine lokale Trigramm-Häufigkeitsanalyse — kein externer Anbieteraufruf, keine KI-Modell-Inferenz, kein Logging. Eingaben unter 10 Zeichen liefern language als null zurück; unter ca. 30 Zeichen kann noch eine beste Schätzung geliefert werden, aber reliable ist dann false.
| Parameter | In | Description |
|---|---|---|
text | query | Erforderlich. Bis zu 5.000 Zeichen — längere Eingaben werden gekürzt, nicht abgelehnt. |
| Field | Type | Description |
|---|---|---|
language | object|null | code (ISO 639-1), iso639_3, name und local_name für den besten Treffer. null, wenn der Text zu kurz oder nicht erkennbar ist ("und"). |
reliable | boolean | false bei kurzen Eingaben — das Ergebnis ist als Schätzung zu behandeln, nicht als sicherer Treffer. |
candidates | array | Bis zu 5 weitere in Frage kommende Sprachen mit relativen Scores, für eng verwandte Sprachpaare. |
Rechnet einen Betrag zwischen zwei Währungen um (154 unterstützt), unter Verwendung desselben täglichen Referenzkurs-Feeds, der bereits currency_code/exchange_rate_usd bei jeder IP-, ASN- und Länderabfrage speist — hier als eigenständiger Umrechnungs-Endpunkt bereitgestellt, statt in eine Geolokalisierungsantwort eingebettet.
| Parameter | In | Description |
|---|---|---|
from | query | Erforderlich. Dreistelliger ISO-4217-Währungscode. |
to | query | Erforderlich. Dreistelliger ISO-4217-Währungscode. |
amount | query | Optional. Standardmäßig 1. |
| Field | Type | Description |
|---|---|---|
result | number | Umgerechneter Betrag. |
rate | number | Einheiten von to pro 1 from. |
updated | string | ISO-Zeitstempel der Referenzkurs-Synchronisierung, die dieser Umrechnung zugrunde liegt. |
Vollständige Wechselkurstabelle (154 Währungen), neu berechnet auf Basis einer beliebigen unterstützten Währung, nicht nur USD.
| Parameter | In | Description |
|---|---|---|
base | query | Optional. Standardmäßig USD. |
| Field | Type | Description |
|---|---|---|
rates | object | Zuordnung von Währungscode → Kurs gegenüber base. |
Tägliche Referenzkurs-Historie für ein Währungspaar, bis zu 90 Tage zurück — die Daten hinter dem Kursverlaufsdiagramm im Währungsrechner-Tool. Einmalig rückwirkend befüllt, danach täglich durch denselben Cronjob ergänzt, der auch GET /v1/currency/convert aktualisiert. Dies ist ein einzelner täglicher Referenzkurs über die Zeit, kein Geld-/Brief-Handelsspread.
| Parameter | In | Description |
|---|---|---|
target | query | Erforderlich. Dreistelliger ISO-4217-Währungscode für das Diagramm. |
base | query | Optional. Standardmäßig USD. |
days | query | Optional. Einer von 30, 60, 90. Standardmäßig 30. |
| Field | Type | Description |
|---|---|---|
series | array | Aufsteigend nach Datum sortiertes Array von { date, rate }-Punkten. |
stats | object | min, avg, max und current über die zurückgegebene Serie. |
Aktuelle Bedingungen — und mit detail=1 zusätzlich eine stündliche Vorschau und eine mehrtägige Vorhersage — für einen Ortsnamen, eine Postleitzahl oder ein "lat,lon"-Paar oder für lat + lon bzw. eine ip. Orte in den USA beantwortet der National Weather Service, alle anderen MET Norway. Fügen Sie include= hinzu, um das vollständige Dokument mit Einheiten, bis zu 9 Tagen, Sonne und Mond, amtlichen Warnungen und mehr zu erhalten — siehe die include-Karte weiter unten. Das Weather-Lookup-Tool erkennt zudem den eigenen Standort des Aufrufers clientseitig, bevor es diesen Endpunkt explizit aufruft.
| Parameter | In | Description |
|---|---|---|
q | query | Stadtname, Postleitzahl oder "lat,lon" (maximal 100 Zeichen). Alternativ lat und lon oder ip übergeben. Eines der drei ist erforderlich. |
detail | query | Optional. "1" ergänzt weather um pressure_mb/visibility_km/dewpoint_c/sunrise/sunset/usw., plus ein forecast-Objekt (hourly + daily). Standardmäßig weggelassen. |
| Field | Type | Description |
|---|---|---|
condition | string|null | Kurze Textbeschreibung. |
temp_c / temp_f | number|null | Aktuelle Temperatur. |
feels_like_c | number|null | Gefühlte Temperatur in Celsius. |
humidity_pct | number|null | Relative Luftfeuchtigkeit. |
wind_kmph / wind_dir | number|null / string|null | Windgeschwindigkeit und Windrichtung nach 16-Punkte-Kompass. |
uv_index | number|null | UV-Index. |
location | object|null | Aufgelöster Name, Region, Land sowie lat/lon für den abgefragten Ort — nicht nur die Rohangabe. |
forecast.hourly[] | array | Nur bei detail=1. Nächste 24 Stunden in 3-Stunden-Schritten: hour_label, temp_c/temp_f, weather_code, chance_of_rain_pct. |
forecast.daily[] | array | Nur bei detail=1. 3-Tages-Vorschau: date, day_label, weather_code, condition, chance_of_rain_pct, max/min temp_c/temp_f. |
Live-Proxy zum Trademark Status & Document Retrieval (TSDR)-System des USPTO für den Fallstatus anhand einer 8-stelligen Seriennummer — ein direkter Aufruf pro Anfrage, keine zwischengespeicherte oder weiterverkaufte Kopie. Fallstatus-Daten sind ein Werk der US-Regierung und laut den eigenen Nutzungsbedingungen des USPTO gemeinfrei, daher trägt jede Antwort ein source-/attribution-Feld, statt sie stillschweigend zu cachen oder weiterzuverkaufen. Marken-Logo-/Bilddaten sind bewusst nicht enthalten — die Nutzungsbedingungen des USPTO grenzen die Bildlizenzierung getrennt von den Fallstatus-Textdaten ab, die dieser Endpunkt liefert. Die Suche per Registrierungsnummer wird noch nicht unterstützt; derzeit dokumentiert das USPTO nur den Weg über die Seriennummer. Probieren Sie es im Trademark-Lookup-Tool aus.
| Parameter | In | Description |
|---|---|---|
serial | path | Erforderlich. Genau 8 Ziffern, z. B. 98267877. |
| Field | Type | Description |
|---|---|---|
source | string | Immer "USPTO TSDR". |
attribution | string | Erforderliche Attribution-Zeile gemäß den Nutzungsbedingungen des USPTO. |
data | object | Rohes Fallstatus-Payload, wie vom USPTO zurückgegeben, durchgereicht statt umgeformt — live bestätigt am 2026-08-12. Unter data.trademarks[0]: status (Anmelde-/Registrierungsdaten, markElement, descOfMark, tm5StatusDesc), parties.ownerGroups (Name/Adresse des Inhabers nach Rolle), gsList[] (Beschreibung und Klassen der Waren/Dienstleistungen) und prosecutionHistory[] (vollständiger zeitlicher Verlauf des Falls). Welche Felder vorhanden sind, hängt vom Anmeldestatus ab — z. B. hat eine anhängige Anmeldung noch kein usRegistrationNumber. |
Live-Proxy zur Patent File Wrapper API (Open Data Portal) des USPTO für den Erteilungsstatus anhand einer 7- bis 8-stelligen Gebrauchspatentnummer — ein direkter Aufruf pro Anfrage, keine zwischengespeicherte oder weiterverkaufte Kopie. Die ursprünglich vorgesehene Quelle (die Search API von PatentsView) wurde nachweislich am 2026-03-20 abgeschaltet; dieser Endpunkt ist stattdessen ein Proxy zu deren aktivem Nachfolger. Patent-File-Wrapper-Daten sind ein Werk der US-Regierung und laut den eigenen Nutzungsbedingungen des USPTO gemeinfrei, daher trägt jede Antwort ein source-/attribution-Feld. Der Umfang ist anmelde-/verfahrenszentriert — kein Zitationsgraph, keine Patentfamilie, kein Rechtsstatus-Feld und keine Bilder, wie sie Lens.org, Espacenet oder Google Patents zeigen. Die Abdeckung beginnt bei Anmeldungen aus dem Jahr 2001. Geschmacksmuster-, Pflanzen- und Reissue-Patente werden noch nicht unterstützt; nur Gebrauchspatente anhand der erteilten Patentnummer. Probieren Sie es im Patent-Lookup-Tool aus.
| Parameter | In | Description |
|---|---|---|
number | path | Erforderlich. 7-8 Ziffern, z. B. 12393227. Nur erteilte Gebrauchspatentnummer, keine Anmeldenummer. |
| Field | Type | Description |
|---|---|---|
source | string | Immer "USPTO Patent File Wrapper". |
attribution | string | Erforderliche Attribution-Zeile gemäß den Nutzungsbedingungen des USPTO. |
data | object | Rohes Verfahrensdatensatz-Payload, wie vom USPTO zurückgegeben, durchgereicht statt umgeformt — live bestätigt am 2026-08-12 anhand echter Patente (12393227, 9935534). Wichtige Felder: applicationMetaData (inventionTitle, filingDate, applicationStatusDescriptionText, applicationStatusDate, patentNumber, inventorBag[]), recordAttorney.attorneyBag[], applicationNumberText sowie eventDataBag[] (vollständiger zeitlicher Verfahrensverlauf). Liefert 404, wenn die Nummer nicht existiert, es sich um ein Geschmacksmuster-/Pflanzen-/Reissue-Patent handelt oder sie vor Beginn der Abdeckung 2001 liegt. |
Paginierter VPN-, Tor- und Threat-Intelligence-Feed. 200 Einträge pro Seite. Jeder Eintrag enthält IP/CIDR, Anbieterzuordnung, ISP, Land und Klassifizierungstyp.
| Parameter | In | Description |
|---|---|---|
page | query | Nullbasierte Seitenzahl. Standard: 0. |
type | query | Nach Typ filtern: VPN, Tor Exit Node, Tor Node, High-Risk Threat Intel. |
q | query | Nach IP- oder CIDR-Teilstring filtern. |
Nur Metadaten — Gesamtzahl der Einträge, Anzahl je Quelle und letzter Synchronisierungszeitpunkt. Liefert keine IP-Daten.
Paginierte missbräuchliche Netzwerkbereiche. Bewertet von 1-10 anhand feedübergreifender Bestätigung. Risikostufen: critical (8-10), high (5-7), medium (3-4).
| Parameter | In | Description |
|---|---|---|
page | query | Nullbasierte Seitenzahl. Standard: 0. |
tier | query | Nach Risikostufe filtern: critical, high, medium. |
q | query | Nach Teilstring des Netzwerkbereichs filtern. |
source | query | Optional. Filtert nach dem Namen des Quell-Feeds, genau wie in source_feed zurückgegeben, z. B. 'Spamhaus DROP' oder 'IPsum Threat Intel'. |
Nur Metadaten — Gesamtzahl der Netzwerke, Anzahl je Quelle, Aufschlüsselung nach Risikostufe und letzter Synchronisierungszeitpunkt.
Herunterladbarer CSV-Export der offenen Datensätze, auf denen die API bereits aufbaut — dieselben Daten, keine neue Lizenz. asn und ranges sind immer verfügbar; geo-city liefert 503, bis der Datensatz dieser Quelle auf einem gegebenen Deployment aktiv ist. geo-city exportiert jeweils die Rohdaten einer Geo-Quelle, keine zusammengeführte Ansicht — geben Sie ?source=primary (Standard) oder ?source=secondary an.
| Parameter | In | Description |
|---|---|---|
kind | path | Einer von: asn, ranges, geo-city. |
source | query | Nur bei geo-city. primary (Standard) oder secondary. |
Stellt sofort einen API-Schlüssel aus — keine E-Mail, keine Anmeldung. Jeder Schlüssel startet im kostenlosen Tarif (1.000 Anfragen/Tag; Massensuche nicht enthalten). Pro- und Enterprise-Schlüssel schalten höhere Tageslimits und Massensuche frei (bis zu 100 IPs/Anfrage) — siehe Preise. Speichern Sie den Schlüssel — er kann später nicht wieder abgerufen werden.
Prüfen Sie, wie viele Anfragen ein Schlüssel gemacht hat. Übergeben Sie den Schlüssel bei jeder /v1/*-Anfrage über den X-API-Key-Header oder ?api_key=, damit sie gezählt wird.
| Parameter | In | Description |
|---|---|---|
key | query | Erforderlich. Ein von POST /v1/keys zurückgegebener Schlüssel. |
Abuse-Meldekontakt des Netzes, dem eine IP gehört, aus RDAP: das RIR, das Netzwerk-Handle, das umfassende CIDR und die Abuse-Mailbox(en). Zeigt, wohin eine Meldung geschickt werden soll.
| Parameter | In | Description |
|---|---|---|
ip | path | IPv4- oder IPv6-Adresse. |
available ist false (mit einem Grund in failure), wenn die Registry nicht erreichbar war.
Die tatsächlich von einem ASN angekündigten IP-Bereiche, seitenweise, jeweils mit Land und den Flags Hosting / Mobil / Privatkunden / Bot / Sperrliste.
| Parameter | In | Description |
|---|---|---|
asn | path | ASN-Nummer ohne AS-Präfix, z. B. 15169. |
limit | query | Bereiche pro Seite. Standard 50, maximal 200. |
offset | query | Zu überspringende Bereiche. Standard 0. |
Registry-Eintrag (RDAP) eines ASN: Handle, Name, Land, Zuteilungsart, Registrierungsdaten, das RIR und seine Kontakte.
| Parameter | In | Description |
|---|---|---|
asn | path | ASN-Nummer ohne AS-Präfix, z. B. 15169. |
available ist false mit einem reason, wenn die Registry nicht erreichbar ist.
Wo ein ASN tatsächlich sitzt: Punkte auf Stadtebene, geolokalisiert aus einer Stichprobe seiner größten Bereiche, plus die häufigsten Städte. Speist die Verteilungskarte auf der ASN-Seite.
| Parameter | In | Description |
|---|---|---|
asn | path | ASN-Nummer ohne AS-Präfix, z. B. 15169. |
Eine Stichprobe, nicht die vollständige Bereichsliste. Für alle Bereiche /v1/asn/:asn/ranges verwenden.
In einem ASN gehostete Domains, per Reverse-DNS (PTR) auf einer Stichprobe seiner Adressen ermittelt. Jeder Eintrag enthält die Root-Domain, den PTR-Hostnamen und die abgefragte IP.
| Parameter | In | Description |
|---|---|---|
asn | path | ASN-Nummer ohne AS-Präfix, z. B. 15169. |
Stichprobenbasiert, also ein Hinweis darauf, was der ASN hostet, keine vollständige Liste. Für eine einzelne IP /v1/ip/:ip/hosted-domains verwenden.
BGP-Beziehungen eines ASN: Peers, Upstream-Provider und Downstream-Kunden, mit Anzahlen.
| Parameter | In | Description |
|---|---|---|
asn | path | ASN-Nummer ohne AS-Präfix, z. B. 15169. |
available ist false, wenn die BGP-Datenquelle nicht erreichbar war. Leere Arrays mit available: true bedeuten, dass für diesen ASN nichts gemeldet wurde.
Verzeichnis des IPv4-Raums: ein Eintrag pro /8-Block mit der Zahl der Bereiche, Länder und ASNs sowie dem häufigsten Land. Hier beginnen und dann mit /v1/ip-ranges/:a und /v1/ip-ranges/:a/:b weiter hineinzoomen.
Die /16-Blöcke innerhalb eines /8 (z. B. 8.0.0.0/8) mit denselben Zahlen zu Bereichen, Ländern und ASNs pro Block.
| Parameter | In | Description |
|---|---|---|
a | path | Erstes Oktett, 0-255. |
Die vergebenen Bereiche innerhalb eines /16 (z. B. 8.8.0.0/16), jeweils mit dem zugehörigen ASN, plus die Zahlen pro Block.
| Parameter | In | Description |
|---|---|---|
a | path | Erstes Oktett, 0-255. |
b | path | Zweites Oktett, 0-255. |
Ein Teil der Nearby-Nutzdaten für eine Koordinate, damit ein Client jeden Teil rendern kann, sobald er eintrifft: Reverse-Geocoding, Points of Interest oder lokale Kriminalitätsstatistik.
| Parameter | In | Description |
|---|---|---|
lat | query | Breitengrad, erforderlich. |
lon | query | Längengrad, erforderlich. |
part | query | Welcher Teil: geocode, poi oder crime. Ein unbekannter Wert liefert 400. |
country | query | Nur part=crime: ISO-Ländercode. Kriminalitätsdaten gibt es für US und GB. |
region | query | Nur part=crime: Name des Bundesstaats oder der Region, z. B. Utah. |
city | query | Nur part=crime: Stadtname, z. B. Orem. |
lang | query | Optional. Lokalisiert Ortsbezeichnungen (dieselben Codes wie in der Lokalisierungstabelle oben). |
Fahrzeit und Entfernung zwischen zwei Punkten. Ein Schnellpfad: er überspringt das Reverse-Geocoding und die POI-Abfragen, die /v1/places/:ip durchführt.
| Parameter | In | Description |
|---|---|---|
from_lat | query | Breitengrad des Startpunkts, erforderlich. |
from_lon | query | Längengrad des Startpunkts, erforderlich. |
dest_lat | query | Breitengrad des Ziels. Zusammen mit dest_lon verwenden oder stattdessen dest_address übergeben. |
dest_lon | query | Längengrad des Ziels. |
dest_address | query | Ziel als Freitext, für Sie geocodiert. Wird verwendet, wenn dest_lat/dest_lon fehlen. |
Lässt sich kein Ziel auflösen, enthält die Antwort to: null, commute: null und einen reason-String.
Die Nutzdaten von /v1/places/:ip, verankert an einer eingegebenen Adresse statt an einer IP: Geocode, Ortsangaben und eine optionale Pendelzeit-Schätzung.
| Parameter | In | Description |
|---|---|---|
q | query | Adresse als Freitext, erforderlich. |
dest_lat | query | Optionaler Breitengrad des Ziels, um eine Pendelzeit-Schätzung einzuschließen (mit dest_lon). |
dest_lon | query | Optionaler Längengrad des Ziels. |
dest_address | query | Optionales Ziel als Freitext, statt dest_lat/dest_lon. |
part | query | part=geo liefert nur Bezeichnung und Koordinaten, für eine schnellere erste Darstellung. |
lang | query | Optional. Lokalisiert Ortsbezeichnungen (dieselben Codes wie in der Lokalisierungstabelle oben). |
found ist false, wenn die Adresse nicht geocodiert werden konnte.
Adress-Autovervollständigung: einige passende Orte zu einer Teiladresse, optional zu einem Punkt hin gewichtet.
| Parameter | In | Description |
|---|---|---|
q | query | Teiltext der Adresse, erforderlich. |
near_lat | query | Optionaler Breitengrad, zu dem die Ergebnisse gewichtet werden. |
near_lon | query | Optionaler Längengrad, zu dem die Ergebnisse gewichtet werden. |
Das vollständige Wetterdokument für einen Ortsnamen, eine Postleitzahl, Koordinaten oder eine IP. Wählen Sie die benötigten Blöcke mit include: current, hourly, daily, astro (Sonne und Mond), solar, indicators, alerts, marine, air_quality, nowcast oder all. Orte in den USA stammen vom National Weather Service, alle anderen von MET Norway; meta.source nennt die Quelle. Ohne include erhalten Sie das oben beschriebene einfache Format { query, weather }.
| Parameter | In | Description |
|---|---|---|
q / lat+lon / ip | query | Wo: q (Stadt, Postleitzahl oder "lat,lon"), oder lat und lon, oder ip. Eines der drei ist erforderlich. |
country | query | Optional. ISO-Code oder Ländername, um ein mehrdeutiges q aufzulösen, z. B. country=FR für die Postleitzahl 75001. |
include | query | Für dieses Format erforderlich. Kommagetrennt: current, hourly, daily, astro, solar, indicators, alerts, marine, air_quality, nowcast oder all. |
units | query | metric (Standard) oder imperial. Die Feldnamen folgen der Einheit: temp_c wird zu temp_f, wind_kmph zu wind_mph, precip_mm zu precip_in. |
wind_unit | query | kmh, ms, mph oder kn. Ändert nur die Windeinheit. |
hours | query | Anzahl der stündlichen Einträge, 1-240. Standard 48. Die ersten sind stündlich, spätere im 6-Stunden-Takt; step_hours gibt es an. |
days | query | Anzahl der Tageseinträge, 1-9. Standard 7. US-Daten decken 7 Tage ab. |
meta.coverage zeigt, welche Felder für den Ort existieren: Regenwahrscheinlichkeit, Böen und Gewitterwahrscheinlichkeit gibt es nur in den USA und im Norden Europas und sind anderswo null (nie 0). alerts sind amtliche Warnungen für die USA und Norwegen; marine, air_quality und nowcast decken nur Norwegen und angrenzende Gewässer ab und melden anderswo available: false. Alles in meta.derived ist eine Schätzung von ipto.to, und indicators sind abgeleitete Hinweise, keine amtlichen Warnungen. Behalten Sie meta.attribution bei, wenn Sie die Daten anzeigen (MET-Norway-Daten stehen unter CC BY 4.0).
Die eigene Tagesaufzeichnung von ipto.to für bereits abgefragte Orte: der höchste Höchstwert, der niedrigste Tiefstwert und der größte Niederschlag aus den Vorhersage-Schnappschüssen des Tages. Nur bereits angefragte Orte haben Daten, die sich mit der Zeit ansammeln.
| Parameter | In | Description |
|---|---|---|
q / lat+lon / ip | query | Wo: q (Stadt, Postleitzahl oder "lat,lon"), oder lat und lon, oder ip. Eines der drei ist erforderlich. |
days | query | Anzahl der letzten Tage, 1-400. Standard 30. |
Es sind Vorhersage-Schnappschüsse, keine Stationsbeobachtungen oder Reanalysen – verwenden Sie sie nicht als beobachtete Historie. 404 bedeutet, dass für diesen Ort noch keine Schnappschüsse aufgezeichnet wurden.
Die verfügbaren Radar-Animationsbilder, älteste zuerst, jeweils mit Unix-Zeitstempel und der Bild-ID für die Radar-Kachel-URL.
Eine Radar-Kartenkachel (PNG) für ein Bild an einer üblichen z/x/y-Position einer Webkarte. Über dieselbe Origin ausgeliefert, damit eine Karte sie ohne Drittanbieter-Anfrage laden kann.
| Parameter | In | Description |
|---|---|---|
frame | path | Bild-ID aus /v1/weather/radar/frames (Hex in Kleinbuchstaben). |
z | path | Zoomstufe. |
x | path | Kachelspalte. |
y | path | Kachelzeile. |
Eine Satellitenbild-Kartenkachel für eine übliche z/x/y-Position einer Webkarte, über dieselbe Origin ausgeliefert.
| Parameter | In | Description |
|---|---|---|
z | path | Zoomstufe. |
x | path | Kachelspalte. |
y | path | Kachelzeile. |
Maschinenlesbarer OpenAPI-3.1-Vertrag für /v1/email/:email, geschrieben, damit LLM- und MCP-Agenten den E-Mail-Endpunkt aufrufen können, ohne diese Dokumentation zu lesen.
Feldreferenz für IP-Abfragen
| Field | Type | Description |
|---|---|---|
ip | string | Die abgefragte IP-Adresse. |
version | string | "v4" oder "v6". |
bogon | boolean | true, wenn es sich um eine private, reservierte oder nicht routbare Adresse handelt. |
bogon_type | string|null | Grund-Code, falls bogon: "loopback", "private", "link-local", "multicast", "reserved", "documentation", "unspecified". |
asn | integer|null | Autonome-System-Nummer, die diese IP ankündigt. |
asn_name | string|null | Kurzname der ASN (z. B. "GOOGLE"). |
asn_org | string|null | Auf die ASN registrierte Organisation (z. B. "Google LLC"). |
asn_type | string|null | ASN-Kategorie: "hosting", "isp", "business", "education", "government", "mobile", "residential". |
continent | string|null | Vollständiger Kontinentname (z. B. "North America"). |
continent_code | string|null | Zweistelliger Kontinentcode: AF AS EU NA SA OC AN. |
country_code | string|null | ISO-3166-1-Alpha-2-Ländercode (z. B. "US") des Landes, in dem sich die IP befindet, aus denselben Geolokalisierungsdaten wie Stadt und Koordinaten. Ohne Geolokalisierungstreffer wird das Registrierungsland des ASN (asn_country_code) verwendet. Ländername, Flagge, Währung usw. werden daraus abgeleitet. |
country_name | string|null | Vollständiger englischer Ländername (z. B. "United States"). |
country_flag | string|null | Emoji-Flagge des Landes (z. B. "🇺🇸"). |
is_eu | boolean | true, wenn das Land ein EU-Mitgliedstaat ist (27 Mitglieder). |
city | string|null | Stadtname. Wird bei der Selbstabfrage befüllt sowie bei expliziten Abfragen, bei denen eine der zusammengeführten Geo-Quellen (IP2Location oder MaxMind) einen Treffer hat — geo_precision prüfen. |
state | string|null | Verwaltungsregion/Untergliederung. Gleiche Verfügbarkeit wie city. |
postal_code | string|null | Postleitzahl. Wird bei der Selbstabfrage befüllt sowie bei expliziten Abfragen, bei denen IP2Location (bevorzugt) oder MaxMind einen Treffer hat — gleiche Verfügbarkeit wie city. |
latitude | number|null | Dezimaler Breitengrad. Gleiche Verfügbarkeit wie city. |
longitude | number|null | Dezimaler Längengrad. Gleiche Verfügbarkeit wie city. |
timezone | string|null | Zeitzone — gleiche Verfügbarkeit wie city. Bei der Selbstabfrage ein IANA-Bezeichner (z. B. "America/New_York"). Bei expliziten Abfragen hängt das Format davon ab, welche Quelle den Treffer geliefert hat: ein UTC-Offset-String wie "-08:00" von IP2Location, oder ein IANA-Name von MaxMind. |
geo_precision | string | Wie präzise die Standortdaten sind: "city", "country" (Abfrage auf Stadtebene hatte keinen Treffer) oder "none". |
geo_country_code | string|null | Land, in dem sich die IP befindet, laut Geolokalisierungsdaten (ISO 3166-1 alpha-2). Entspricht country_code, sobald gesetzt. null, wenn kein Geolokalisierungstreffer vorliegt. |
asn_country_code | string|null | Registrierungsland des ASN-Inhabers (ISO 3166-1 alpha-2). Kann von country_code abweichen, etwa bei CDN-, VPN-, Hosting- oder Anycast-Netzen, die aus einem anderen Land announciert werden als dem, in dem der Inhaber registriert ist. null, wenn die IP keinen ASN-Eintrag hat. |
currency_code | string|null | ISO-4217-Währungscode für das Land (z. B. "USD"). |
exchange_rate_usd | number|null | Einheiten der Landeswährung pro 1 USD, aus einem täglich synchronisierten Referenzkurs-Feed, der 154 Währungen abdeckt. null für Währungen außerhalb dieser Menge. |
calling_code | string|null | Landesvorwahl inklusive +-Präfix (z. B. "+1"). |
languages | string[] | Offizielle/anerkannte Sprachen des Landes, auf Englisch. |
tld | string[] | Länder-Top-Level-Domain(s), z. B. [".us"]. |
capital | string|null | Name der Hauptstadt. |
borders | string[] | ISO-Alpha-2-Codes der angrenzenden Länder. |
is_datacenter | boolean | true, wenn die IP zu einem Hosting- oder Cloud-Anbieter gehört. |
is_mobile | boolean | true, wenn die IP auf einen Mobilfunkanbieter registriert ist. |
is_residential | boolean | true, wenn die IP als privater Breitbandanschluss klassifiziert ist. |
connection_type | string | "mobile", "datacenter" oder "unknown" — abgeleitet aus derselben Klassifizierung wie is_mobile/is_datacenter. Es wird bewusst nicht versucht, zwischen privat und geschäftlich zu unterscheiden: Das lässt sich aus dem ASN-Organisationsnamen allein nicht zuverlässig ableiten, sodass eine ASN, die nicht sicher als mobile oder datacenter klassifiziert werden kann, "unknown" bleibt, statt geraten zu werden. |
is_bot | boolean | true, wenn die IP mit bekannter Bot-Infrastruktur assoziiert ist. |
is_proxy | boolean | true, wenn die IP ein bekannter Proxy-Exit-Punkt ist. |
is_vpn | boolean | true, wenn die IP in einen bekannten VPN-Serverbereich aus dem Threat-Feed fällt. |
is_tor | boolean | true, wenn die IP ein bestätigter Tor-Exit-Node ist. |
is_abuser | boolean | true, wenn die IP in einen Netzwerkbereich fällt, der von mehreren Abuse-Intel-Feeds markiert wurde. |
abuse_score | integer|null | Schweregrad-Score von 1-10, wenn is_abuser true ist, aus feedübergreifender Bestätigung. Andernfalls null. |
risk_tier | string|null | "critical" (8-10), "high" (5-7) oder "medium" (3-4) — abgeleitet aus abuse_score. null, wenn nicht markiert. |
threat_type | string|null | Die einzelne, am besten handhabbare übereinstimmende Kategorie, wenn sich is_tor/is_vpn/is_abuser überschneiden: "tor_exit" > "abuser" > "vpn". null, wenn keine übereinstimmt. |
flags | object | Abwärtskompatibles Objekt, das die is_*-Felder spiegelt. Schlüssel: hosting, mobile, residential, bot, blacklisted, vpn, tor, abuser. |
meta.data_version | string | Datum des für die Abfrage verwendeten Datensatzes (YYYY-MM-DD). "cf-edge" bei Selbstabfrage. "bogon" bei privaten Bereichen. |
meta.cached | boolean | true, wenn die Antwort aus der Cache-Schicht bedient wurde. |
meta.lang | string | Die für diese Antwort tatsächlich verwendete Sprache — entspricht ?lang=, falls angegeben, oder dem aus Accept-Language ermittelten Wert, oder "en". |
meta.lang_source | "param"|"header"|"default" | Wie lang bestimmt wurde: "param" (?lang= wurde übergeben), "header" (aus Accept-Language ermittelt), oder "default" (keines von beiden war vorhanden). |
Ausgabeformate
IP-, ASN- und Länderabfragen unterstützen alle ?format=.
| Format | Content-Type | Usage |
|---|---|---|
json | application/json | Standard. Vollständig strukturierte Antwort. |
csv | text/csv | Flache key,value-Paare. Verschachtelte Objekte werden weggelassen. |
text | text/plain | key: value-Zeilen. Ein Feld pro Zeile. |
xml | application/xml | Vollständig verschachtelte Struktur, Arrays wiederholen das Tag. |
yaml | application/x-yaml | Vollständig verschachtelte Struktur. |
Lokalisierung
Übergeben Sie ?lang= bei /v1/ip, /v1/asn/:asn oder /v1/country/:code, um country_name und continent zu lokalisieren. Alles andere (ASN-Organisationsnamen, Stadtnamen, Währungscodes) bleibt in seiner ursprünglichen Form — das sind Bezeichner und Eigennamen, kein UI-Text. Nicht unterstützte Codes fallen auf Englisch zurück, statt einen Fehler zu liefern.
| Code | Language |
|---|---|
en | English (default) |
pt | Português |
fr | Français |
de | Deutsch |
zh-TW | 繁體中文 |
ko | 한국어 |
zh-CN | 简体中文 |
ja-JP | 日本語 |
es-ES | Español |
ar-SA | العربية |
hi-IN | हिन्दी |
Kein ?lang=? Senden Sie stattdessen einen Accept-Language-Header — dieselben Endpunkte lesen ihn ebenfalls, sodass ein einfaches curl -H "Accept-Language: es" https://ipto.to/v1/ip/8.8.8.8 die Antwort ohne Query-String lokalisiert. Ein explizites ?lang= hat immer Vorrang, wenn beide vorhanden sind. Hinweis: Die Shell-Umgebungsvariable LANG/LC_ALL (z. B. LANG=es_ES.UTF-8 curl ...) legt nur das eigene Locale von curl fest — curl liest sie nie und wandelt sie nie in einen Header um, sie hat also keinen Einfluss auf die Antwortsprache. Nur Accept-Language oder ?lang= funktionieren tatsächlich.
Jede Antwort von /v1/ip, /v1/asn/:asn und /v1/country/:code enthält lang und lang_source (verschachtelt unter meta bei /v1/ip; auf oberster Ebene bei den anderen beiden), sodass Sie immer genau sehen können, welche Sprache angewendet wurde und wie sie ausgewählt wurde — "param", "header" oder "default" — ohne anhand Ihrer Anfrage raten zu müssen.
Die vollständige Lokalisierung von Schlüsseln und Werten ist das Standardverhalten, sobald Sie einen nicht-englischen lang setzen — jedes Feld, einschließlich der verschachtelten Schlüssel flags und meta, kommt in die Zielsprache umbenannt zurück, und auch die festen Enum-Werte (risk_tier, threat_type, connection_type, geo_precision, bogon_type, asn_type) werden übersetzt. Brauchen Sie stattdessen die alte Form mit englischen Schlüsseln? Fügen Sie &localize=0 zu /v1/ip hinzu, um es abzuschalten.
Codebeispiele
JavaScript
Python
PHP
Go
Ratenlimits
Limits werden pro Tag (UTC) durchgesetzt, gezählt nach IP-Adresse im kostenlosen Tarif oder nach Schlüssel bei Pro/Enterprise. Bei Überschreitung Ihres Limits erhalten Sie HTTP 429 mit einem Retry-After-Header. Für Produktions-Workloads siehe Preise.
Gilt für jeden /v1/*-Endpunkt, den /mcp-Server sowie die Shortcuts curl ipto.to / curl ipto.to/:ip. GET /ip ist die einzige Ausnahme — ein reines Header-Echo ohne Abfragekosten, das somit gar kein Budget beansprucht.
| Tier | Requests / day | Auth |
|---|---|---|
| Free | 1,000 | Keine |
| Pro | 100,000 | API-Schlüssel (Header) |
| Enterprise | Unlimited | API-Schlüssel + dedizierte Endpunkte |
Fehlercodes
| Status | Meaning |
|---|---|
200 | OK. Die Antwort enthält die Daten. |
202 | Feed-Daten werden synchronisiert. In 45 Sekunden erneut versuchen. |
400 | Ungültige Anfrage. Ungültige IP, ASN oder Ländercode. |
404 | ASN oder Land nicht im Datensatz gefunden. |
503 | Datensatz noch nicht verfügbar. Der initiale Import läuft möglicherweise noch. |