IPLookInfo

Dokumentace API pro geolokaci IP

Bezplatné JSON API pro geolokaci IP, ASN a data o riziku. IPv4 i IPv6, HTTPS, povolené CORS.

Rychlý start

Na vyzkoušení není potřeba registrace. Zavolejte níže uvedený endpoint bez klíče a získáte data pro svou vlastní IP (omezeno na 100 požadavků denně).

curl https://iplookinfo.com/json

Ověření

Vytvořte si na nástěnce bezplatný API klíč a posílejte ho v hlavičce Authorization. Pro rychlé testy funguje i parametr dotazu token, v produkci se mu ale vyhněte, protože URL se ukládají do logů.

Authorization: Bearer ipl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Endpointy

GET/api/v1/{ip}
Vyhledání libovolné IPv4 nebo IPv6 adresy.
GET/api/v1/me
Vyhledání vlastní IP volajícího. Dostupné také na /json.
POST/api/v1/batch
Vyhledání až 10 000 IP v jednom požadavku (placené tarify). Každá IP se počítá jako jeden požadavek.

Parametry dotazu

lang — Jazyk názvů míst: en, zh, es, pt, ru, ja. Výchozí en.

Odpověď

Objekt risk je obsažen pouze v tarifech Pro a 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" }
}

Limity požadavků a chyby

Každá odpověď obsahuje hlavičky X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset. Kvóty se nulují v 00:00 UTC.

Chyby mají jednotný formát JSON se stavovým kódem 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

Překročení

Placené tarify si mohou na nástěnce zapnout překročení. Požadavky nad denní kvótu jsou pak obslouženy a účtovány po 1 000, až do zvoleného měsíčního limitu útraty. Takové odpovědi obsahují hlavičku X-Overage-Units.

Ukázky kódu

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/batch

JavaScript

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)