instantgeo

One call tells your site who’s reading it.

Country, city, timezone, currency and language for the visitor on the page right now. No SDK, no database.

Free tier, no card, 20,000 requests a monthFixed monthly price — no overage, no usage chargesWe return the country, we don’t store the IP
This is you, right now
ip
"81.2.69.142"
country
"GB"
countryName
"United Kingdom"
continent
"EU"
isEUCountry
false
region
"England"
regionCode
"ENG"
city
"Bristol"
timezone
"Europe/London"
postalCode
"BS1"
latitude
51.4536
longitude
-2.5975
metroCode
"819"
asn
2856
asOrganization
"BT"
currency
"GBP"
languages
["en-GB"]

Zero setup. One request.

Nothing to install, nothing to keep up to date.
const geo = await fetch(
  "https://api.instantgeo.info/v1/geo?key=ig_pk_yourkey"
).then(r => r.json())

document.documentElement.lang = geo.languages[0]
Response · 200
{
"country": "GB",
"countryName": "United Kingdom",
"city": "Bristol",
"timezone": "Europe/London",
"currency": "GBP",
"languages": ["en-GB"],
"isEUCountry": false
}

What people do with one field

Every one of these is a few lines. Read the field, branch on it, ship.

currency Price in their money Show £ to the visitor from Bristol and $ to the one from Denver, before the page paints.
const sym = {GBP:"£",USD:"$"}[geo.currency]
country Preselect the form One fewer dropdown to scroll at checkout. The most boring, highest-converting use of this API.
<select defaultValue={geo.country}>
isEUCountry Gate consent where it’s needed EU visitors get the banner. Everyone else gets your site.
if (geo.isEUCountry) showConsent()

Everything you get back

The whole response. No premium fields held back, no add-on tier for city-level data.

Full reference →
field
type
what it is
example
ip
string
The address the request came from. Returned, never stored.
"81.2.69.142"
country
string
ISO 3166-1 alpha-2 country code.
"GB"
countryName
string
The country in English.
"United Kingdom"
continent
string
Two-letter continent code.
"EU"
isEUCountry
boolean
Whether the country is in the European Union.
false
region
string
First-level subdivision.
"England"
regionCode
string
ISO code for that subdivision.
"ENG"
city
string
Best-effort city — the town, not the street.
"Bristol"
timezone
string
IANA timezone name.
"Europe/London"
postalCode
string
Postal or ZIP code where known.
"BS1"
latitude
number
Approximate latitude of the city, not the visitor.
51.4536
longitude
number
Approximate longitude of the city, not the visitor.
-2.5975
metroCode
string
DMA code. US only.
"819"
asn
number
Autonomous system number of the network.
2856
asOrganization
string
Who runs that network.
"BT"
currency
string
ISO 4217 code for the country.
"GBP"
languages
array
Preferred languages, most-preferred first.
["en-GB"]

Pricing you can sleep through.

Usage-based billing means finding out what you owe once the month is already over. There is nothing to find out here. You pick a plan, and that is the bill — the same number every month, whatever your traffic does.

Your bill is the plan priceevery month
No overage, no usage chargesnothing to reconcile
Email at 80% and at the limitwith the date
this month the same meter you get in the app
205,000of 250,000 included
82% used 45,000 left · resets 1 Aug
Starter plan$9.00
Requests beyond 250,000not billed — stopped
Invoice$9.00
Hard cap Requests return 429 once the plan’s requests are used.
always on

Pricing

Pick a plan and pay that price. No overage, no usage charges, nothing on the invoice you did not choose.

plan
Free
$0 no card
Starter MOST TEAMS
$9/month billed monthly
Growth
$29/month billed monthly
Scale
$99/month billed monthly
requests
20,000
250,000
1,500,000
10,000,000
fields
country only
all 17
all 17
all 17
over the limit
429
429
429
429
origin allowlist
yes
yes
yes
yes
secret keys
yes
yes
yes
yes
support
docs
email
email
email

Billed monthly through PayPal, cancel any time. Changing plan takes effect immediately.

How the data works

What the fields mean in practice, and what happens to the address they came from.

City, not street IP geolocation resolves to a town, not a doorstep, and it is looser on mobile networks and VPNs. Treat city and the coordinates as describing the network the visitor is on, not the person.
We don’t keep the IP The address is resolved in memory and dropped. We log the request, the origin and the country — never the visitor’s IP. Nothing to leak, one fewer paragraph in your DPA.

Working in under a minute.

Make an account, copy your publishable key, paste the call. The free tier doesn’t ask for a card.

Get a key Read the docs →