IP API

IP geolocation and enrichment

Geolocate any IPv4 or IPv6 address with country, city, ASN, and ISP data. Includes threat intelligence signals for proxy, VPN, and Tor detection.

Full IPv4 & IPv6 Support

Look up any public IPv4 or IPv6 address. Get country, city, region, postal code, coordinates, and timezone in a single request.

ISP & ASN Data

Identify the ISP, organization, autonomous system number, and connection type behind any IP address.

Threat Intelligence

Detect anonymous proxies, VPNs, Tor exit nodes, hosting providers, and residential proxies with dedicated security flags.

Bulk Lookups

Resolve up to 100 IP addresses in a single request with the bulk endpoint. All results are returned in one response.

Use Cases

Built for real-world scenarios

Quick Start

Start using this API in seconds

# 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}`));
Endpoints

Available endpoints

GET /api/v1/ip/me Look up caller's IP
POST /api/v1/ip IP geolocation lookup
POST /api/v1/ip/bulk Bulk IP geolocation lookup
FAQ

Frequently asked questions

What databases power the lookups?

The API uses different sources for city-level geolocation, ISP/ASN data, anonymous IP detection, and connection type classification.

How accurate is the geolocation?

Accuracy varies by region. The response includes an accuracy_radius field (in km) so you can assess confidence for each result.

What does the security section detect?

The security object flags whether an IP is associated with an anonymous proxy, VPN, hosting provider, public proxy, residential proxy, or Tor exit node.

How many IPs can I look up at once?

The /api/v1/ip/bulk endpoint accepts up to 100 IP addresses per request. Each IP counts as one quota unit.

Ready to start building?

Create a free account and start making requests in under a minute.

Sign Up Free → View Documentation