Free IP Geolocation API

No API key. No signup. No credit card. CORS is open, so you can call it straight from a browser. Returns geolocation, ISP, ASN, and proxy/VPN/Tor detection for any IPv4 or IPv6 address.

Quick Start

Your own address, as JSON:

curl https://whatsmyip.now/api/v1/my-ip

{"ip": "203.0.113.42"}

Full detail for any address:

curl https://whatsmyip.now/api/v1/lookup/8.8.8.8

Endpoints

EndpointMethodReturnsRate limit
/api/v1/my-ipGETThe caller's public IP address60 / min
/api/v1/lookup/<ip>GETGeolocation, ISP, ASN, proxy detection30 / min
/api/v1/lookupPOSTSame, with the address in a JSON body30 / min
/api/v1/healthGETService statusunlimited

Response Fields

FieldTypeNotes
ipstringThe address queried
city, region, countrystringApproximate — see accuracy below
latitude, longitudenumberCentroid of the inferred area, not a precise position
ispstringNetwork operator
asnstringAutonomous System announcing the prefix
timezonestringIANA timezone identifier
is_vpn, is_proxy, is_tor, is_hostingbooleanBest-effort detection, not a guarantee

Examples

JavaScript

const r = await fetch('https://whatsmyip.now/api/v1/lookup/1.1.1.1');
const data = await r.json();
console.log(data.country, data.isp);

Python

import requests
r = requests.get('https://whatsmyip.now/api/v1/lookup/1.1.1.1', timeout=10)
print(r.json()['country'])

Batch, via POST

curl -X POST https://whatsmyip.now/api/v1/lookup \
  -H 'Content-Type: application/json' \
  -d '{"ip": "8.8.8.8"}'

Accuracy and Limits

  • Country is correct over 99% of the time; city is right roughly 50-80% of the time. Why city-level geolocation is unreliable
  • Rate limits are per IP address. If you need more, get in touch rather than rotating addresses.
  • No authentication means no usage tracking — we do not log the addresses you look up.
  • Proxy and VPN flags are heuristics based on address ownership, not proof.
  • Use is subject to the Terms of Service. Attribution is appreciated but not required.

Errors

StatusMeaning
400Missing or malformed address
429Rate limit exceeded — back off and retry
200 with an error fieldThe address was valid but could not be resolved