Referensi API
Endpoint, format respons, dan kesalahan HTTP untuk pencarian satu IP.
Endpoint
https://api.ipquery.ioTanpa kunci APIIP pemanggil
/Bawaan: text/plainMengembalikan alamat yang membuat permintaan. Fetch peramban mengidentifikasi koneksi peramban; fetch di sisi server mengidentifikasi server.
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/?format=json"Satu IP
/:ipBawaan: application/jsonLetakkan satu alamat IPv4 atau IPv6 dalam jalur. Hasil menjelaskan alamat tersebut, terlepas dari koneksi pemanggil.
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/1.1.1.1"
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/2606:4700:4700::1111"Gunakan HTTPS. Tambahkan ?format=json ketika aplikasi Anda memerlukan hasil IP sendiri yang terstruktur.
Format respons
Tetapkan nilai parameter kueri format untuk memilih representasi respons.
- JSON
?format=jsonapplication/json- XML
?format=xmlapplication/xml- YAML
?format=yamlapplication/x-yaml- Teks
?format=texttext/plain
Teks hanya mengembalikan alamat. JSON, XML, dan YAML mengembalikan hasil pencarian terstruktur.
Kesalahan dan pencarian massal
Periksa status HTTP sebelum membaca hasil pencarian yang berhasil. Isi respons kesalahan mengikuti parameter kueri format yang dikenali; format yang dihilangkan atau tidak didukung mengembalikan teks biasa.
Alamat tidak valid
HTTP 404Periksa sintaks alamat. Jalur menerima satu alamat IPv4 atau IPv6.
curl -i "https://api.ipquery.io/not-an-ip?format=json"HTTP/1.1 404 Not Found
Content-Type: application/json
{"error":"IP address not-an-ip not found"}Format tidak didukung
HTTP 400Gunakan json, xml, yaml, atau text. CSV bukan format respons API.
curl -i "https://api.ipquery.io/1.1.1.1?format=csv"HTTP/1.1 400 Bad Request
Content-Type: text/plain
Invalid formatPencarian massal dinonaktifkan
HTTP 400Gunakan endpoint IP sendiri untuk pengunjung, atau minta satu alamat. Mencoba ulang permintaan massal yang sama tidak akan mengaktifkannya.
curl -i "https://api.ipquery.io/1.1.1.1,8.8.8.8?format=json"HTTP/1.1 400 Bad Request
Content-Type: application/json
{"error":"Bulk lookups are disabled due to abuse. For your own IP, embed fetch(\"https://api.ipquery.io/?format=json\") in your app, or use a single-IP lookup at https://api.ipquery.io/<ip>."}Tangani permintaan yang gagal
Permintaan GET peramban mendukung akses lintas asal. Kegagalan jaringan menolak fetch; kesalahan HTTP tetap menghasilkan respons. Periksa response.ok sebelum mengurai JSON.
const response = await fetch(
"https://api.ipquery.io/1.1.1.1?format=json",
{ signal: AbortSignal.timeout(5000) }
);
if (!response.ok) {
const message = await response.text();
throw new Error("IPQuery " + response.status + ": " + message);
}
const data = await response.json();
console.log(data.ip);Kehabisan waktu tunggu atau respons 5xx bukan rekaman IP. Pertahankan status tidak tersedia secara eksplisit dan gunakan percobaan ulang terbatas. Isi kesalahan dari hulu dapat berupa teks atau HTML, jadi jangan menganggap setiap respons berisi JSON.
String sumber yang hilang dapat kosong. Penanda false adalah ketidakcocokan, bukan penilaian keamanan. Baca definisi kolom
Respons aktual
1.1.1.1{
"ip": "1.1.1.1",
"isp": {
"asn": "AS13335",
"org": "Cloudflare, Inc.",
"isp": "Cloudflare, Inc."
},
"location": {
"country": "Australia",
"country_code": "AU",
"city": "Brisbane",
"state": "Queensland",
"zipcode": "",
"latitude": -27.474848400186662,
"longitude": 153.00996200912815,
"timezone": "Australia/Brisbane",
"localtime": "2026-11-03T14:32:36"
},
"risk": {
"is_mobile": false,
"is_vpn": false,
"is_tor": false,
"is_proxy": false,
"is_datacenter": true,
"risk_score": 20
}
}