Documentation de l’API de géolocalisation IP
API JSON gratuite pour la géolocalisation IP, les données ASN et de risque. IPv4 et IPv6, HTTPS, CORS activé.
Démarrage rapide
Aucune inscription n’est nécessaire pour l’essayer. Appelez le point de terminaison ci-dessous sans clé pour obtenir les données de votre propre IP (limité à 100 requêtes par jour).
curl https://iplookinfo.com/jsonAuthentification
Créez une clé API gratuite dans le tableau de bord et envoyez-la dans l’en-tête Authorization. Un paramètre de requête token fonctionne aussi pour des tests rapides, mais évitez-le en production, car les URL finissent dans les journaux.
Authorization: Bearer ipl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxPoints de terminaison
- GET/api/v1/{ip}
- Rechercher n’importe quelle adresse IPv4 ou IPv6.
- GET/api/v1/me
- Rechercher l’IP de l’appelant. Également disponible sur /json.
- POST/api/v1/batch
- Rechercher jusqu’à 10 000 IP en une seule requête (offres payantes). Chaque IP compte comme une requête.
Paramètres de requête
lang — Langue des noms de lieux : en, zh, es, pt, ru, ja. Par défaut : en.
Réponse
L’objet risk n’est inclus que dans les offres Pro et 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" }
}Limites de débit et erreurs
Chaque réponse contient les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. Les quotas sont réinitialisés à 00:00 UTC.
Les erreurs utilisent un format JSON cohérent avec un code de statut 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
Dépassement
Les offres payantes peuvent activer le dépassement dans le tableau de bord. Les requêtes au-delà du quota quotidien sont alors traitées et facturées par tranche de 1 000, dans la limite d’un plafond de dépenses mensuel que vous choisissez. Ces réponses contiennent un en-tête X-Overage-Units.
Exemples de code
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)