REST API — No Authentication Required

IP Geolocation API
Simple. Accurate. Reliable.

Drop in an IP address, get back accurate location data — country, city, coordinates, ISP, timezone, and more. No SDKs, no complex auth, no unnecessary overhead.

// Try it now
curl https://edznet.io/api/geo/v1/lookup \
  -H "X-API-Key: geo-free-your-key"

{
  "ip": "8.8.8.8",
  "country_code": "US",
  "country": "United States",
  "region": "California",
  "city": "Mountain View",
  "latitude": "37.405000",
  "longitude": "-122.078000",
  "isp": "Google LLC",
  "timezone": "America/Los_Angeles"
}

99.9%

Uptime SLA on all API endpoints

5–20ms

Average response time (cached)

IPv4 + IPv6

Full dual-stack address support

Simple, Transparent Pricing

Every plan includes the same accurate IP location data. Pick the tier that matches your volume. Pricing shown in GBP(£). Switch to ZAR(R).

Free

For evaluation, personal projects, and low-volume use

£0 /mo

No payment method required

  • 100 lookups per month
  • Full location data (country, city, coordinates)
  • ISP, timezone & country metadata
  • SSL-encrypted endpoint
  • No credit card needed
Get Started Free

API Guide

Get started in under a minute. No SDKs, no tokens to refresh, no complex setup.

1. Get Your API Key

After purchasing a plan, your API key is available instantly in the My Licenses section of your client area. Each subscription generates a unique key prefixed with geo-free- (Free) or geo-pro- (Pro).

No authentication? Correct. Your API key is passed as a header or query parameter — no OAuth flows, no JWTs. We track usage per key, keeping things fast and simple.
Keep your key private. Your API key is tied to your account. Do not share it, embed it in client-side code, or publish it publicly. You are responsible for all usage under your key. Creating multiple free accounts to circumvent rate limits is a violation of our Acceptable Use Policy and may result in suspension.
No logging. We do not log, store, or retain the IP addresses you look up — they are processed in real-time and discarded. This makes our API fully compliant with GDPR, POPIA, and similar privacy regulations. Your users' location data stays private.

2. Make Your First Request

Send a GET request to the lookup endpoint with your API key. The API accepts both IPv4 and IPv6 addresses, and will resolve hostnames automatically.

# Look up an IP address
curl https://edznet.io/api/geo/v1/lookup?key=geo-free-xxxxxxxxxx&ip=8.8.8.8

# Or use the X-API-Key header
curl https://edznet.io/api/geo/v1/lookup \
  -H "X-API-Key: geo-free-xxxxxxxxxx" \
  -G -d "ip=8.8.8.8"

# Resolve a hostname
curl "https://edznet.io/api/geo/v1/lookup?key=geo-free-xxxxxxxxxx&ip=edznet.io"
// Look up an IP address
$key = 'geo-free-xxxxxxxxxx';
$ip  = '8.8.8.8';

$ch = curl_init("https://edznet.io/api/geo/v1/lookup?key=$key&ip=$ip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['country']; // "United States"
// Look up an IP address
const key = 'geo-free-xxxxxxxxxx';
const ip  = '8.8.8.8';

const response = await fetch(
  'https://edznet.io/api/geo/v1/lookup?key=' + key + '&ip=' + ip
);
const data = await response.json();
console.log(data.country); // "United States"
# Look up an IP address
import requests

key = 'geo-free-xxxxxxxxxx'
ip  = '8.8.8.8'

response = requests.get(
    'https://edznet.io/api/geo/v1/lookup',
    params={'key': key, 'ip': ip}
)
data = response.json()
print(data['country'])  # United States

3. Response Format

All responses are returned as JSON. A successful lookup includes the following fields:

Response Fields

FieldTypeDescription
ipstringThe IP address queried
hostnamestringResolved hostname (if applicable)
country_codestringISO 3166-1 alpha-2 code
countrystringFull country name
regionstringRegion / state name
citystringCity name
post_codestringPostal / ZIP code
latitudestringApproximate latitude (6 decimal places)
longitudestringApproximate longitude (6 decimal places)
timezonestringIANA timezone name or UTC offset
utc_offset_secondsintegerUTC offset in seconds
is_dstbooleanWhether DST is active at the location
asnintegerAutonomous System number
ispstringNetwork operator / AS name
is_proxybooleanWhether the IP is a known proxy / VPN
is_datacenterbooleanWhether the IP belongs to a hosting/datacenter
connection_typestringNetwork type: hosting, residential, mobile, business, unknown
flagstringCountry flag image URL
flag_emojistringCountry flag as emoji (e.g. 🇺🇸)
continentstringContinent code (AF, AS, EU, NA, OC, SA)
continent_namestringFull continent name
is_eu_memberbooleanWhether the country is an EU member
currencystringISO 4217 currency code (e.g. USD, GBP, ZAR)
currency_symbolstringLocal currency symbol (e.g. $, £, €)
local_timestringCurrent local time in the IP's timezone
planobjectPlan details including tier, limit, and quota

Sample Response

{
  "ip": "8.8.8.8",
  "hostname": "dns.google",
  "country_code": "US",
  "country": "United States",
  "region": "California",
  "city": "Mountain View",
  "post_code": "94043",
  "latitude": "37.405000",
  "longitude": "-122.078000",
  "timezone": "America/Los_Angeles",
  "utc_offset_seconds": -25200,
  "is_dst": true,
  "asn": 15169,
  "isp": "Google LLC",
  "is_proxy": false,
  "is_datacenter": true,
  "connection_type": "hosting",
  "flag": "https://edznet.io/api/geo/v1/flags/us",
  "flag_emoji": "🇺🇸",
  "continent": "NA",
  "continent_name": "North America",
  "is_eu_member": false,
  "currency": "USD",
  "currency_symbol": "$",
  "local_time": "2026-06-30T12:34:56",
  "plan": {
    "tier": "free",
    "limit": 100,
    "used": 12,
    "remaining": 88,
    "resets_at": "2026-07-01T00:00:00Z"
  }
}

4. Errors & Rate Limits

The API uses standard HTTP status codes to indicate success and failure:

StatusMeaning
200 OKSuccessful lookup
400 Bad RequestMissing or invalid ip parameter
401 UnauthorizedMissing or invalid API key
402 Payment RequiredSubscription expired or suspended
429 Too Many RequestsMonthly rate limit exceeded
500 Server ErrorInternal error — please contact support

When you exceed your monthly rate limit, the API returns 429 and includes X-RateLimit-* headers with reset information. Usage resets on the 1st of each month (UTC). Your current usage is always visible in the plan field of every response.

Every response also includes rate limit information in HTTP headers — useful if you want to check usage without parsing the response body:

# Headers returned with every successful response
X-RateLimit-Tier: free
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 88
X-RateLimit-Reset: 2026-07-01T00:00:00Z
IPv6 support: Location data (country, city, coordinates) works with both IPv4 and IPv6 addresses. ASN / ISP and proxy detection for IPv6 are coming soon.

6. Country Flags

Need a flag icon to accompany your lookup results? Use the flags endpoint to get a transparent PNG by country code:

curl https://edznet.io/api/geo/v1/flags/us

# Returns a 16x12 PNG of the US flag
# Display in HTML: <img src="https://edznet.io/api/geo/v1/flags/us" alt="US">

Rate Limit Overview

Monthly limits reset automatically. Need more? Contact us for custom volume pricing.

Free Tier

100

lookups per month, no payment method required. Perfect for testing and personal projects.

Pro Tier

10,000

lookups per month with priority support. Ideal for production applications.

Reset

1st

of each month (UTC). Unused quota does not roll over to the next month.

Need More?

Custom

Contact us for enterprise volume pricing or dedicated infrastructure.

Ready to Build with IP Geolocation?

Start with the Free tier — no credit card, no commitment. Upgrade to Pro when you need the volume.

Start Free