مستندات API موقعیتیابی IP
API رایگان JSON برای موقعیتیابی 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
- جستجوی حداکثر ۱۰٬۰۰۰ 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
مازاد
طرحهای پولی میتوانند در داشبورد مازاد را فعال کنند. در این صورت درخواستهای بیش از سهمیه روزانه پاسخ داده میشوند و به ازای هر ۱٬۰۰۰ درخواست محاسبه میشوند، تا سقف هزینه ماهانهای که خودتان تعیین میکنید. این پاسخها هدر 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)