BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://free.freeipapi.com/api/json/8.8.8.8'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://free.freeipapi.com/api/json/8.8.8.8", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
ippathOptionalIPv4 or IPv6 address to look up. Omit it to resolve the caller's own address. 8.8.8.8
formatpathRequired`json` for the full object; other formats return a subset. json
(own IP)pathOptional`/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

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.