Geolocate any IPv4 or IPv6 address with country, city, ASN, and ISP data. Includes threat intelligence signals for proxy, VPN, and Tor detection.
Look up any public IPv4 or IPv6 address. Get country, city, region, postal code, coordinates, and timezone in a single request.
Identify the ISP, organization, autonomous system number, and connection type behind any IP address.
Detect anonymous proxies, VPNs, Tor exit nodes, hosting providers, and residential proxies with dedicated security flags.
Resolve up to 100 IP addresses in a single request with the bulk endpoint. All results are returned in one response.
# Look up your own IP
$ curl https://api.apicrate.io/api/v1/ip/me \
-H "X-API-Key: YOUR_API_KEY"
# Response
{
"status": "ok",
"data": {
"ip": "203.0.113.42",
"ip_version": 4,
"country": {
"name": "United States",
"iso_code": "US",
"is_in_european_union": false
},
"continent": {"name": "North America", "code": "NA"},
"location": {
"city": "San Francisco",
"region": "California",
"region_code": "CA",
"postal_code": "94105",
"latitude": 37.7749,
"longitude": -122.4194,
"accuracy_radius": 20,
"timezone": "America/Los_Angeles"
},
"network": {
"isp": "Example ISP",
"organization": "Example Org",
"asn": 13335,
"asn_organization": "Cloudflare, Inc.",
"connection_type": "Corporate"
},
"security": {
"is_anonymous": false,
"is_anonymous_vpn": false,
"is_hosting_provider": false,
"is_public_proxy": false,
"is_residential_proxy": false,
"is_tor_exit_node": false
}
}
}
import requests
# Look up a specific IP
response = requests.post(
"https://api.apicrate.io/api/v1/ip",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"ip": "8.8.8.8"},
)
data = response.json()["data"]
print(f"{data['ip']} → {data['country']['name']}, {data['location']['city']}")
// Bulk lookup
const res = await fetch("https://api.apicrate.io/api/v1/ip/bulk", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ ips: ["8.8.8.8", "1.1.1.1", "2606:4700::1"] }),
});
const { data } = await res.json();
data.forEach((r) => console.log(`${r.ip} → ${r.country?.name}`));
/api/v1/ip/me
Look up caller's IP
/api/v1/ip
IP geolocation lookup
/api/v1/ip/bulk
Bulk IP geolocation lookup
The API uses different sources for city-level geolocation, ISP/ASN data, anonymous IP detection, and connection type classification.
Accuracy varies by region. The response includes an accuracy_radius field
(in km) so you can assess confidence for each result.
The security object flags whether an IP is associated with an anonymous proxy, VPN, hosting provider, public proxy, residential proxy, or Tor exit node.
The /api/v1/ip/bulk endpoint accepts up to 100 IP addresses per request.
Each IP counts as one quota unit.
Create a free account and start making requests in under a minute.