FreeIPAPI
Free IP geolocation API with no key: country, city, coordinates, every timezone in the country, currencies, languages, ASN and a proxy flag. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the FreeIPAPI?
FreeIPAPI is a free, key-free IP geolocation API returning country, region, city, coordinates, postal code, ASN and organisation, plus country-level context such as capital, currencies, languages and calling codes, and a boolean flag marking known proxy addresses.
The `isProxy` flag is the field that earns this API a place next to the many alternatives. Most free IP services tell you where an address claims to be and stop; a boolean saying the address is a known proxy or VPN exit is precisely the signal a fraud check or an abuse filter actually wants, and it is rarely free.
Some fields are country attributes rather than address attributes, and conflating the two causes real bugs. `timeZones` for a United States IP lists roughly thirty zones — every zone in the country, not the one the address is in — and `currencies` similarly returns USD, USN and USS. Take the first element only if you understand you are choosing a default, not reading a fact. Note also that the free tier lives at `free.freeipapi.com`; the apex domain redirects there.
Quick facts
- Base URL
https://free.freeipapi.com/api- Authentication
- No key on the free tier. An optional token raises the rate limit and enables the higher-volume endpoints.
- Rate limit
- 60 requests per minute per IP on the free tier, reported in the `X-RateLimit-Limit` and `X-RateLimit-Remaining` headers.
- Pricing
- Free below the per-minute limit; paid tiers raise it.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the FreeIPAPI
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. Look up an IP address with country and proxy details
GET https://free.freeipapi.com/api/json/8.8.8.8
curl 'https://free.freeipapi.com/api/json/8.8.8.8'const res = await fetch("https://free.freeipapi.com/api/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://free.freeipapi.com/api/json/8.8.8.8", timeout=20)
res.raise_for_status()
print(res.json()){
"ipVersion": 4,
"ipAddress": "8.8.8.8",
"latitude": 37.422,
"longitude": -122.085,
"countryName": "United States",
"countryCode": "US",
"capital": "Washington D.C.",
"phoneCodes": [
1
],
"timeZones": [
"America/Adak",
"America/Anchorage",
"America/Boise",
"America/Chicago",
"America/Denver",
"America/Detroit",
"America/Indiana/Indianapolis",
"America/Indiana/Knox",
"America/Indiana/Marengo",
"America/Indiana/Petersburg",
"America/Indiana/Tell_City",
"America/Indiana/Vevay",
"America/Indiana/Vincennes",
"America/Indiana/Winamac",
"America/Juneau",
"America/Kentucky/Louisville",
"America/Kentucky/Monticello",
"America/Los_Angeles",
"America/Menominee",
"America/Metlakatla",
"America/New_York",
"America/Nome",
"America/North_Dakota/Beulah",
"America/North_Dakota/Center",
"America/North_Dakota/New_Salem",
"America/Phoenix",
"America/Sitka",
"America/Yakutat",
"Pacific/Honolulu"
],
"zipCode": "94035",
"cityName": "Mountain View",
"regionName": "California",
"regionCode": "CA",
"continent": "Americas",
"continentCode": "AM",
"currencies": [
"USD",
"USN",
"USS"
],
"languages": [
"en"
],
"asn": "15169",
"asnOrganization": "Google LLC",
"isProxy": false
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ip | path | Optional | IPv4 or IPv6 address to look up. Omit it to resolve the caller's own address. 8.8.8.8 |
format | path | Required | `json` for the full object; other formats return a subset. json |
(own IP) | path | Optional | `/api/json` with no address returns details for the requesting address. json |
Response fields
ipVersion / ipAddressinteger / string- 4 or 6, and the address that was resolved.
latitude / longitudefloat- Representative point for the network block, not a device location.
countryName / countryCodestring- Country in full and as an ISO alpha-2 code.
cityName / regionName / regionCodestring- Best-guess city and subdivision. Accuracy varies sharply by network type.
zipCodestring- Postal code associated with the block's registration, often approximate.
capital / continent / continentCodestring- Country-level context rather than address-level data.
timeZonesarray- Every IANA zone in the country — about thirty for the United States. Not the zone of this address.
currencies / languages / phoneCodesarray- Country attributes, again plural. USD, USN and USS are all returned for the US.
asn / asnOrganizationstring- Autonomous system number and the operator, here 15169 and Google LLC.
isProxyboolean- True when the address is a known proxy, VPN or hosting exit. The most operationally useful field here.
What you can build with the FreeIPAPI
- Flag VPN and proxy traffic during signup or checkout
- Set a default country, currency and dialling code for a new visitor
- Add ASN and organisation context to abuse or security logs
- Choose a regional endpoint or CDN origin by country
- Enrich analytics with coarse geography without a paid provider
Common errors and how to fix them
429 Too Many Requests
The 60-per-minute free-tier quota is exhausted.
Fix: Read `X-RateLimit-Remaining` and cache results per address. Repeated lookups of the same IP within a session are pure waste.
timeZones has thirty entries
It lists every zone in the country, not the zone of the address.
Fix: Never take the first element as the user's timezone. Ask the browser instead, and use this only to seed a country-appropriate default.
isProxy is false for a VPN you know about
The flag covers known proxy and hosting ranges, and no list is complete.
Fix: Treat it as a positive signal when true and as no evidence when false. Combine it with the ASN, which exposes hosting providers directly.
Requests to freeipapi.com redirect
The free tier is served from the `free.` subdomain.
Fix: Call `https://free.freeipapi.com/api/json/{ip}` directly to avoid the extra hop, particularly from a client that does not follow redirects.
FreeIPAPI — frequently asked questions
Is FreeIPAPI free without a key?
Yes, the free tier needs no key or account, at 60 requests per minute per IP. An optional token raises the limit and unlocks higher-volume endpoints.
Can it detect VPNs and proxies?
It returns an `isProxy` boolean covering known proxy, VPN and hosting exit ranges. A true value is meaningful; a false value only means the address is not on the list, so pair it with the ASN for a fuller picture.
Why does it return so many timezones and currencies?
Because those fields describe the country, not the address. The United States has around thirty IANA zones and three ISO currency codes, and the API returns all of them rather than picking one for you.
How reliable are the coordinates?
They describe where a network block is registered, not where a person is. Country is dependable, city much less so, and for mobile networks the point can be a regional gateway hundreds of kilometres from the user.
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.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Time Zone Converter
Convert any date and time between world time zones. See UTC offsets, daylight saving handled automatically, and compare multiple zones at once.
FreeIPAPI 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.