Skip to content

Free IP Geolocation API

IP lookup, reverse DNS and VPN or proxy detection over a plain JSON API. No key, no signup.

Auth
No API key
Limit
100 req / hour / IP
Format
JSON over HTTPS
CORS
All origins

Getting started

Send a GET request. No key, no signup. CORS is open, so you can call the API straight from the browser.

curl https://api.ippriv.com/api/geo/8.8.8.8

Rate limits

100 requests per hour per IP address, over a sliding window. Every response carries the current state:

  • X-RateLimit-Limit requests allowed per window
  • X-RateLimit-Remaining requests left
  • X-RateLimit-Reset Unix time when the window frees up

Above the limit, the API answers 429 with a Retry-After header in seconds.

Endpoints

GET/api/ip

Returns the caller's public IP address.

{
  "ipv4": "5.50.177.22",
  "timestamp": "2026-10-06T13:27:40.560Z"
}

GET/api/geo/:ip

Geolocation and ISP for an IPv4 or IPv6 address. Try 8.8.8.8 in the lookup tool

{
  "ip": "8.8.8.8",
  "country": "United States",
  "countryCode": "US",
  "region": "Virginia",
  "city": "Ashburn",
  "lat": 39.03,
  "lon": -77.5,
  "timezone": "America/New_York",
  "isp": "Google LLC"
}

GET/api/dns/:ip

Reverse DNS: hostname and PTR records. Try 1.1.1.1 in the lookup tool

{
  "ip": "1.1.1.1",
  "hostname": "one.one.one.one",
  "ptrRecords": [
    "one.one.one.one"
  ]
}

GET/api/security/:ip

VPN, proxy, Tor and hosting detection, with ASN and organization. Try 8.8.8.8 in the lookup tool

{
  "ip": "8.8.8.8",
  "isVPN": false,
  "isProxy": true,
  "isTor": false,
  "isHosting": true,
  "asn": "AS15169 Google LLC",
  "org": "Google Public DNS"
}

GET/api/headers

HTTP headers of your request, as the API received them.

{
  "user-agent": "Mozilla/5.0...",
  "accept-language": "en-US,en;q=0.9",
  "cf-connecting-ip": "5.50.177.22"
}

Code examples

# Your IP
curl https://api.ippriv.com/api/ip

# Geolocation
curl https://api.ippriv.com/api/geo/8.8.8.8

# Reverse DNS
curl https://api.ippriv.com/api/dns/1.1.1.1

# VPN, proxy and Tor detection
curl https://api.ippriv.com/api/security/8.8.8.8

Errors

Errors use standard HTTP status codes and a JSON body:

{
  "error": "IP address is required"
}
200
Success
400
Missing or invalid IP address
429
Rate limit exceeded (see Retry-After)
500
Upstream or server error