ReallyFreeGeoIP API
Free IP geolocation API with no key and no rate limit: country, region, city, timezone and coordinates as JSON, XML or CSV. Tested curl example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the ReallyFreeGeoIP API?
ReallyFreeGeoIP is a free IP geolocation API with no API key, no signup and no advertised rate limit. It returns country, region, city, postal code, timezone and approximate coordinates for any IPv4 or IPv6 address, in JSON, XML or CSV.
This is the successor to freegeoip.app, which shut down after being absorbed by a commercial provider. The replacement keeps the original's defining property — genuinely no key and no published cap — which is unusual now that nearly every geolocation service has moved to a freemium model with a daily quota.
The trade-off is depth. The response is a flat, ten-field object built on MaxMind's free GeoLite data: no ASN, no VPN or proxy detection, no currency or calling code. City and region are frequently empty, and the coordinates for a sparse record fall back to a country centroid — the 37.751, -97.822 you will see for many US addresses is the geographic centre of Kansas, not a real location. Know that before you plot anything on a map.
Quick facts
- Base URL
https://reallyfreegeoip.org- Authentication
- No key, no account and no advertised rate limit — the closest thing to a genuinely unlimited free geolocation API still running.
- Rate limit
- None published. Reasonable use is expected.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the ReallyFreeGeoIP API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Geolocate 8.8.8.8 as JSON
GET https://reallyfreegeoip.org/json/8.8.8.8
curl 'https://reallyfreegeoip.org/json/8.8.8.8'const res = await fetch("https://reallyfreegeoip.org/json/8.8.8.8");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://reallyfreegeoip.org/json/8.8.8.8", timeout=20)
res.raise_for_status()
print(res.json()){
"ip": "8.8.8.8",
"country_code": "US",
"country_name": "United States",
"region_code": "",
"region_name": "",
"city": "",
"zip_code": "",
"time_zone": "America/Chicago",
"latitude": 37.751,
"longitude": -97.822,
"metro_code": 0
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
format | path segment | Required | Response format: `json`, `xml` or `csv`. json |
ip | path segment | Optional | The IPv4 or IPv6 address to look up. Omit it to geolocate the caller's own address. 8.8.8.8 |
callback | query | Optional | Wraps the JSON response in a JSONP callback. handler |
Response fields
ipstring- The address that was looked up, echoed back.
country_code / country_namestring- ISO 3166-1 alpha-2 code and full country name. The most reliable fields in the response.
region_code / region_namestring- State or region. Frequently empty — treat as optional.
city / zip_codestring- City and postal code. Often empty, especially for anycast, hosting and mobile ranges.
time_zonestring- IANA timezone name such as `America/Chicago`.
latitude / longitudefloat- Approximate coordinates. When city data is missing these fall back to a country centroid, so they can be hundreds of kilometres from the real network.
metro_codeinteger- US DMA code for advertising regions. Zero when unknown or outside the US.
What you can build with the ReallyFreeGeoIP API
- Set a default country or currency for a first-time visitor
- Add a rough country column to server access logs
- Show visitors their own IP and country on a network tools page
- Route users to a regional site without asking them
Common errors and how to fix them
404
The path is not a valid format or IP.
Fix: The format segment comes first: `/json/8.8.8.8`, not the other way round.
Empty city and region
Not an error — the underlying GeoLite database has no fine-grained record.
Fix: Fall back to country level, and check whether the coordinates equal a known country centroid before displaying them.
Unexpected result for a private IP
Reserved ranges are not in the database.
Fix: Validate and exclude private and reserved ranges before calling.
ReallyFreeGeoIP API — frequently asked questions
Is ReallyFreeGeoIP really free with no rate limit?
Yes — no key, no signup and no published cap, which is rare now that most geolocation APIs have moved to freemium quotas. It is a community service, so heavy sustained use should still be cached rather than hammered.
What happened to freegeoip.app?
It was acquired and folded into a commercial offering with a key requirement. ReallyFreeGeoIP is the drop-in replacement that preserves the original key-free behaviour and response shape.
How accurate is the city-level data?
Country accuracy is good; city and region are often blank entirely. When they are missing the latitude and longitude fall back to a country centroid — many US lookups return the centre of Kansas — so check for that before plotting anything on a map.
Does it detect VPNs or proxies?
No. It returns location fields only, with no ASN or privacy data. If you need VPN, proxy or hosting detection, use an API such as IPLocate that exposes a privacy block.
Tools that pair with this API
IP Address Validator
Validate lists of IPv4, IPv6 and CIDR entries with the exact failure reason per line — compressed ::, IPv4-mapped forms and prefixes included. Free.
Private IP Address Checker
Check if an IPv4 or IPv6 address is private, loopback, link-local, CGNAT or otherwise special — with the matching RFC and public-routability verdict.
IP Address Sorter
Sort IPv4 and IPv6 address lists in true numeric order — not alphabetical — with de-duplication and invalid-line reporting. Free and 100% in-browser.
ReallyFreeGeoIP is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.