Dokumentacja referencyjna API
Endpointy, formaty odpowiedzi i błędy HTTP dla zapytań o pojedynczy IP.
Endpointy
https://api.ipquery.ioBez klucza APIIP wywołującego
/Domyślnie: text/plainZwraca adres, z którego wysłano żądanie. Fetch w przeglądarce identyfikuje jej połączenie, a fetch po stronie serwera identyfikuje połączenie serwera.
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/?format=json"Pojedynczy IP
/:ipDomyślnie: application/jsonUmieść jeden adres IPv4 lub IPv6 w ścieżce. Wynik opisuje ten adres niezależnie od połączenia wywołującego.
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/1.1.1.1"
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/2606:4700:4700::1111"Używaj HTTPS. Dodaj ?format=json gdy aplikacja potrzebuje ustrukturyzowanego wyniku dla własnego IP.
Formaty odpowiedzi
Ustaw wartość parametru format zapytania, aby wybrać format odpowiedzi.
- JSON
?format=jsonapplication/json- XML
?format=xmlapplication/xml- YAML
?format=yamlapplication/x-yaml- Tekst
?format=texttext/plain
Tekst zwraca wyłącznie adres. JSON, XML i YAML zwracają ustrukturyzowany wynik zapytania.
Błędy i zapytania zbiorcze
Sprawdź status HTTP przed odczytem prawidłowego wyniku. Treść błędu ma format zgodny z obsługiwaną wartością parametru format zapytania; brak formatu lub nieobsługiwany format powoduje zwrócenie zwykłego tekstu.
Nieprawidłowy adres
HTTP 404Sprawdź składnię adresu. Ścieżka przyjmuje jeden adres IPv4 lub IPv6.
curl -i "https://api.ipquery.io/not-an-ip?format=json"HTTP/1.1 404 Not Found
Content-Type: application/json
{"error":"IP address not-an-ip not found"}Nieobsługiwany format
HTTP 400Użyj json, xml, yaml lub text. CSV nie jest formatem odpowiedzi API.
curl -i "https://api.ipquery.io/1.1.1.1?format=csv"HTTP/1.1 400 Bad Request
Content-Type: text/plain
Invalid formatZapytania zbiorcze są wyłączone
HTTP 400Dla odwiedzającego użyj endpointu własnego IP lub sprawdź pojedynczy adres. Ponawianie tego samego zapytania zbiorczego nie włączy jego obsługi.
curl -i "https://api.ipquery.io/1.1.1.1,8.8.8.8?format=json"HTTP/1.1 400 Bad Request
Content-Type: application/json
{"error":"Bulk lookups are disabled due to abuse. For your own IP, embed fetch(\"https://api.ipquery.io/?format=json\") in your app, or use a single-IP lookup at https://api.ipquery.io/<ip>."}Obsłuż nieudane żądanie
Żądania GET z przeglądarki obsługują dostęp między różnymi źródłami. Błąd sieci odrzuca obietnicę zwracaną przez fetch; błąd HTTP nadal zwraca odpowiedź. Sprawdź response.ok przed parsowaniem JSON.
const response = await fetch(
"https://api.ipquery.io/1.1.1.1?format=json",
{ signal: AbortSignal.timeout(5000) }
);
if (!response.ok) {
const message = await response.text();
throw new Error("IPQuery " + response.status + ": " + message);
}
const data = await response.json();
console.log(data.ip);Przekroczenie limitu czasu lub odpowiedź 5xx nie jest rekordem IP. Zachowaj jawny stan niedostępności i ogranicz liczbę ponowień. Treść błędu usługi nadrzędnej może zawierać tekst lub HTML, dlatego nie zakładaj, że każda odpowiedź zawiera JSON.
Brakujące dane źródłowe mogą być pustymi ciągami znaków. Wartość false oznacza brak dopasowania, a nie potwierdzenie bezpieczeństwa. Przeczytaj definicje pól
Rzeczywista odpowiedź
1.1.1.1{
"ip": "1.1.1.1",
"isp": {
"asn": "AS13335",
"org": "Cloudflare, Inc.",
"isp": "Cloudflare, Inc."
},
"location": {
"country": "Australia",
"country_code": "AU",
"city": "Brisbane",
"state": "Queensland",
"zipcode": "",
"latitude": -27.474848400186662,
"longitude": 153.00996200912815,
"timezone": "Australia/Brisbane",
"localtime": "2026-11-02T23:07:35"
},
"risk": {
"is_mobile": false,
"is_vpn": false,
"is_tor": false,
"is_proxy": false,
"is_datacenter": true,
"risk_score": 20
}
}