Free IP Lookup API

Give it an IP address, get back its country, city, network operator and whether it belongs to a datacenter or VPN. No API key. No signup. No cost.

Try it

This is your own IP, fetched live from the API as you loaded this page:

Loading...

Endpoints

GET https://www.unblockmaster.com/api/v1/ip

Looks up the caller's own IP address.

curl https://www.unblockmaster.com/api/v1/ip

GET https://www.unblockmaster.com/api/v1/ip/<ip>

Looks up any IPv4 or IPv6 address.

curl https://www.unblockmaster.com/api/v1/ip/8.8.8.8

Response

{
  "ip": "8.8.8.8",
  "is_vpn": true,
  "provider": "Google LLC",
  "country": "United States",
  "country_code": "US",
  "city": "Mountain View",
  "lat": 37.4056,
  "lon": -122.0775
}
FieldTypeMeaning
ipstringThe address that was looked up.
is_vpnbool | nullTrue when the address belongs to a known datacenter or VPN range. null means the lookup could not be completed — not false.
providerstringNetwork operator, when known.
countrystringCountry name in English.
country_codestringTwo-letter ISO 3166-1 code.
citystringCity name, when known.
lat, lonfloat | nullApproximate coordinates of the city, not the device.

Every field is always present. A value we do not have is an empty string or null, never a missing key — so you can read the response without guarding each field.

From JavaScript

const res = await fetch("https://www.unblockmaster.com/api/v1/ip");
const data = await res.json();

if (data.is_vpn === true) {
  console.log("Visitor is behind a VPN or proxy");
} else if (data.is_vpn === false) {
  console.log("Visitor is on a residential connection");
} else {
  console.log("Could not determine");  // upstream was unavailable
}

From Python

import requests

r = requests.get("https://www.unblockmaster.com/api/v1/ip/1.1.1.1", timeout=5)
print(r.json()["country"])  # Australia

Rate limits and errors

The limit is 60 requests per minute per client. Every successful response carries X-RateLimit-Limit and X-RateLimit-Remaining, so you can back off before you hit it rather than after.

StatuserrorWhen
400invalid_ipThe path segment is not a valid IPv4 or IPv6 address.
405method_not_allowedAnything other than GET, HEAD or OPTIONS.
429rate_limitedOver the limit. Honour the Retry-After header.

Fair use

See the API behind our VPN checker Or embed the tool instead