IPLookInfo

Dokumentation för IP-geolokaliserings-API

Gratis JSON-API för IP-geolokalisering, ASN och riskdata. IPv4 och IPv6, HTTPS, CORS aktiverat.

Snabbstart

Ingen registrering behövs för att testa. Anropa endpointen nedan utan nyckel för att få data om din egen IP (begränsat till 100 förfrågningar per dag).

curl https://iplookinfo.com/json

Autentisering

Skapa en gratis API-nyckel i kontrollpanelen och skicka den i Authorization-headern. En token-parameter i frågesträngen fungerar också för snabba tester, men undvik den i produktion eftersom URL:er hamnar i loggar.

Authorization: Bearer ipl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Endpoints

GET/api/v1/{ip}
Slå upp valfri IPv4- eller IPv6-adress.
GET/api/v1/me
Slå upp anroparens egen IP. Finns även på /json.
POST/api/v1/batch
Slå upp upp till 10 000 IP-adresser i en förfrågan (betalda planer). Varje IP räknas som en förfrågan.

Frågeparametrar

lang — Språk för ortnamn: en, zh, es, pt, ru, ja. Standard är en.

Svar

Objektet risk ingår bara i planerna Pro och 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" }
}

Begränsningar och fel

Varje svar innehåller headers X-RateLimit-Limit, X-RateLimit-Remaining och X-RateLimit-Reset. Kvoterna nollställs kl. 00:00 UTC.

Fel har en enhetlig JSON-struktur med en HTTP-statuskod:

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

Överförbrukning

Betalda planer kan aktivera överförbrukning i kontrollpanelen. Förfrågningar utöver den dagliga kvoten hanteras då och debiteras per 1 000, upp till ett månatligt utgiftstak som du väljer. Sådana svar innehåller headern X-Overage-Units.

Kodexempel

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)