Документація API геолокації IP
Безкоштовний JSON API для геолокації IP, даних ASN і ризиків. IPv4 та IPv6, HTTPS, CORS увімкнено.
Швидкий старт
Реєстрація не потрібна. Викличте ендпоінт нижче без ключа, щоб отримати дані про свій IP (не більше 100 запитів на день).
curl https://iplookinfo.com/jsonАвтентифікація
Створіть безкоштовний ключ API в кабінеті та передавайте його в заголовку Authorization. Параметр запиту token також працює для швидких тестів, але не використовуйте його в продакшені: URL потрапляють у логи.
Authorization: Bearer ipl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxЕндпоінти
- GET/api/v1/{ip}
- Перевірка будь-якої IPv4 або IPv6 адреси.
- GET/api/v1/me
- Перевірка власного IP того, хто викликає. Також доступно за /json.
- POST/api/v1/batch
- Перевірка до 10 000 IP одним запитом (платні тарифи). Кожен IP рахується як один запит.
Параметри запиту
lang — Мова назв місць: en, zh, es, pt, ru, ja. За замовчуванням en.
Відповідь
Об’єкт risk додається лише на тарифах Pro і Business.
{
"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" }
}Обмеження та помилки
Кожна відповідь містить заголовки X-RateLimit-Limit, X-RateLimit-Remaining і X-RateLimit-Reset. Квоти скидаються о 00:00 UTC.
Помилки повертаються в єдиному форматі JSON з HTTP-кодом стану:
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
Перевищення
На платних тарифах перевищення можна ввімкнути в кабінеті. Тоді запити понад денну квоту обслуговуються й оплачуються за кожну 1000, у межах обраного вами місячного ліміту витрат. Такі відповіді містять заголовок X-Overage-Units.
Приклади коду
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)