There's no single best IP geolocation API. There's a best one for what you're building: country rules for a pricing page, city-level personalisation, fraud screening, log enrichment or bot filtering all need different data, different input types and different behaviour when something goes wrong.
Most "best API" lists rank providers on price alone. Price matters, but it rarely decides the choice on its own: the cheapest plan is useless if it doesn't return the field you need, or if its terms don't allow your use. This guide covers the criteria that do decide it. For the money side (cost per lookup at 100k, 1M and 10M requests a month, free tiers and overage) see the separate IP geolocation API pricing comparison.
On 12 November 2026 we read each provider's official documentation and plan pages and wrote down what they say. Where a page was ambiguous, we quote it rather than guess.
Disclosure: we run IPAPI.GR, which is in this comparison. We've held our own entry to the same standard as the others: what our docs say, including what we don't do. Where a competitor is the better choice, we say so.
The short answer
| If you need… | Look first at | Why |
|---|---|---|
| Country only, at no cost | ipinfo Lite | Unlimited country-level requests on the free plan, with attribution |
| VPN, proxy and Tor detection | ipinfo Core, ipdata Business, IP2Location.io, MaxMind Insights | Privacy and anonymiser data is their product; IPAPI.GR doesn't offer it |
| No network call at all | MaxMind GeoIP databases | Host the data yourself and query it locally |
| One price with no request cap | ip-api.com Pro | Unlimited commercial requests on a flat plan |
| AI crawler, search bot and scanner flags | IPAPI.GR, any paid plan | risk.is_ai, is_crawler, is_scanner for known AI crawlers, crawlers and scanners |
| A free tier you may use commercially | ipgeolocation.io, ipapi.is, IPAPI.GR | Their terms don't restrict the free tier to non-commercial use |
| A contractual uptime SLA | ip-api.com Pro, ipdata Business | Both publish one; IPAPI.GR doesn't |
The rest of this article explains how we got there.
Five criteria that decide the choice
Run every shortlisted API through these five questions, in this order. The first one rules out most of the market.
- Fields: does the plan you'd buy return what you'll use? Many providers gate city, ASN, time zone or security data by tier.
- Accuracy: is the granularity you need realistic at all? Country is dependable almost everywhere; city is approximate everywhere.
- Input: IPv4, IPv6, domain names, and how many items per request.
- Signals beyond location: privacy detection, threat data, bot and crawler identification, and whether you can explain them.
- Developer experience: HTTPS on every plan, clear errors, predictable behaviour at the limit, and commercial terms you can live with.
Cost comes after these, once you know which plans actually qualify. The pricing comparison picks up from there.
Accuracy: what you can and can't compare
Accuracy is the first thing everyone asks about and the hardest to compare honestly. Most providers are close at country level and all of them are approximate at city level. Without a large set of addresses with known true locations, an accuracy ranking is guesswork, and every vendor-run benchmark favours the vendor. We don't publish one.
What you can check:
- Granularity per plan. Some providers return city only on paid tiers (ipinfo Core and up, MaxMind City Plus and up). If city is what you need, compare only those tiers.
- How unknown values are reported. An API that says "unknown" is easier to build on than one that silently returns a capital city or the centre of a country. IPAPI.GR returns the string
"No Data"for fields it can't fill, so your code can tell a gap from an answer. - Accuracy radius or confidence. MaxMind Insights adds confidence factors and an accuracy radius. Most other APIs, including IPAPI.GR, don't.
- Mobile, IPv6 and cloud traffic. These are where answers drift most. If your users are mostly on mobile networks, weight your own test (below) towards those addresses.
For background on why city-level answers vary, see how accurate IP geolocation is.
Data fields and features, side by side
What each provider's docs or plan pages say is included, at some paid tier. "Tier" notes where a feature is only on higher plans.
| Provider | City-level | ASN | IPv6 | Domain input | Batch per request | VPN/proxy/Tor | Bot or crawler flag |
|---|---|---|---|---|---|---|---|
| ipinfo | Core and up | Yes (Lite: name and domain only) | Yes | Not listed | Lite bulk endpoint: up to 1.000 per call | Core and up | Not listed |
| MaxMind web services | City Plus and up | Yes | Yes | Not listed | One IP per request in the docs | Insights | Not listed |
| ipstack | Yes | Connection module, Basic and up | Yes | Not listed | Up to 50, Professional+ only | Professional+ | is_crawler + crawler_name, Professional+ |
| ip-api.com | Yes | Yes | Yes | Yes | Up to 100 | proxy flag (proxy, VPN or Tor) | Not listed |
| ipdata | Yes | Yes | Yes | Not listed | Up to 100, paid plans | VPN on Business; anonymity product | Not listed |
| ipgeolocation.io | Yes | Yes | Yes | Paid plans | Paid plans | Security module | "Bot" listed in security module |
| IP2Location.io | Yes | Yes | Yes | Not listed | Paid plans ("Bulk Query") | Plus and Security | Search engine spider and AI crawler detection, Security plan |
| IPAPI.GR | Yes, every plan | Yes, every plan | Yes | Yes, every plan | Up to 100, every plan | No | risk.is_ai, is_crawler, is_scanner, paid plans |
A few honest notes on this table:
- Privacy detection is where IPAPI.GR is weakest. We don't detect VPNs, proxies, Tor or residential proxies, and we don't return a fraud or threat score. If that's the job, ipinfo, ipdata, IP2Location.io or MaxMind Insights are built for it.
- Domain input means you can send
example.cominstead of an IP. IPAPI.GR resolves the domain to its first IPv4 (A) record and returns that address's data, with the domain echoed back in adomainfield. - Batch size matters for log enrichment and back-office jobs, much less for per-visitor lookups.
Bot and crawler signals
Flags that say "this address belongs to a known bot" are rarer than location data, and they differ in what they cover. That's the question to ask: which bots does a true cover, and can you test it on your own traffic?
- ipstack has
is_crawlerandcrawler_namein its security module, on Professional+. - IP2Location.io lists search engine spider and AI crawler detection on its Security plan.
- ipgeolocation.io lists bot detection in its security module.
- IPAPI.GR returns three booleans on every paid plan:
risk.is_ai(AI crawlers, search fetchers and agents),risk.is_crawler(search and SEO crawlers) andrisk.is_scanner(internet scanners). IPAPI.GR'sriskflags tell you whether an address belongs to a known AI crawler, crawler or scanner, so you don't have to maintain the lists yourself. The full list of covered bots is public on the bot signals coverage page.
Two things to check for any provider: what false means (with IPAPI.GR it means "not a known bot", not "human"), and whether you can test an address yourself. You can check any address for free with the bot verification tool. If you'd rather build the check in-house, verifying AI crawler IP addresses walks through it.
Developer experience
The things that cost you time after you've chosen:
| Check | Why it matters | What to look for |
|---|---|---|
| HTTPS on every plan | A free tier over plain HTTP can't be called from an HTTPS page and leaks the visitor's IP in transit | ip-api.com's free endpoint is HTTP-only. IPAPI.GR serves HTTPS on every plan, including free. Check the free plan of anything else on your shortlist |
| Behaviour at the limit | Your code has to handle it either way | A documented status code (IPAPI.GR returns 429 until midnight UTC) versus automatic overage. The money side is in the pricing comparison |
| Usage visibility | You want to see a limit coming, not hit it | IPAPI.GR has GET /api/status, which doesn't count as a lookup, and usage alerts by email or webhook |
| Stable response shape | Code that parses the response shouldn't break on a release | Same fields on every plan, explicit "unknown" values, documented error bodies |
| Commercial terms on the free tier | Attribution, "non-commercial" and "not for production" clauses differ | Read them before you ship on a free key. Our free tier comparison lists them |
| Local option | Some workloads can't afford a network call | MaxMind, ipgeolocation.io, ipapi.is and ipregistry sell downloadable databases; IPAPI.GR doesn't |
Price, in one line
Price has its own article. On list prices checked 12 November 2026, ip-api.com Pro's flat, unlimited plan is the cheapest at high volume, IPAPI.GR's plans (from 9,00 € a month for 10.000 requests a day, VAT included) are among the cheapest at low and mid volume, and pay-per-query and overage plans cost the most. The pricing comparison has the full table with cost per 1.000 lookups.
Provider notes: where each one is the better choice
ipinfo
The best-known name in the space, with the broadest data set at the top end: privacy detection with service names, residential proxies, carrier, company, hosted domains, abuse contacts and WHOIS. Core adds city-level data and VPN, Tor, proxy and relay detection.
Better choice when you need privacy detection or company data, or when country-level on the free Lite plan is enough. Watch out for the monthly cap and overage billing on Core, and attribution on Lite. More detail: ipinfo alternative.
MaxMind GeoIP
MaxMind created GeoIP and sells it two ways: downloadable databases you query locally, and web services billed per query. The databases are unbeatable when you can't afford a network call on the hot path. Insights adds anonymiser detection, user type and confidence factors.
Better choice when you need local lookups or MaxMind's anonymiser data. Watch out for the free GeoLite tier: attribution required, and MaxMind itself says GeoLite City is "not recommended for commercial use cases". More detail: MaxMind GeoIP alternative.
ip-api.com
The no-cap option. Pro has unlimited requests, HTTPS, commercial use, a 99,9% SLA, batch and domain queries. The free endpoint is HTTP-only, non-commercial and limited to 45 requests per minute per source IP.
Better choice when you want unlimited volume, a published SLA and a proxy flag on one plan. More detail: ip-api alternative.
ipstack
A long-running API from apilayer with modules unlocked by tier: time zone, currency and connection data from Basic, and security data plus bulk lookups only on Professional+. The free plan doesn't allow commercial use.
Better choice when you want currency and time zone modules in the same response and you're comfortable with monthly quotas. More detail: ipstack alternative.
ipdata
A free tier with city-level lookups, and threat intelligence on paid plans: OSINT blocklists on Startup, commercial blocklists, VPN detection and reputation scores on Business. Business lists a 99,999% uptime SLA.
Better choice when threat blocklists and reputation scores matter more than anything else.
ipgeolocation.io
A broad API family (geolocation, security, ASN, abuse contact, time zone, user agent) on a credit model, with production and commercial use allowed on the free plan. Security data costs extra credits per lookup.
Better choice when you want many related APIs from one account, or downloadable databases alongside the API.
IP2Location.io and ipregistry
IP2Location.io has the most granular proxy categories in this list on its higher plans, including AI crawler detection on the Security plan. ipregistry returns the full response, including VPN/proxy detection and carrier data, on every plan.
IPAPI.GR
One GET for an IPv4 address, IPv6 address or domain, returning country, region, city, postcode, coordinates, time zone, ISP, organization and ASN on every plan, including the free one. Every paid plan, from Developer at 9,00 € to Scale at 199,00 € a month (VAT included), adds the three bot flags. Batch lookups of up to 100 items work on every plan, limits reset at midnight UTC, and going over returns 429 rather than a bill.
Better choice when you want IPv6 and domain input on every plan, and AI crawler, search crawler and scanner flags you can test on any address for free. Not the right choice when you need VPN/proxy/Tor detection, a fraud score, an SLA, a hosted database download, accuracy radius, carrier or company data. We don't offer those.
How to choose in ten minutes
- Write down the fields you'll actually use. If it's country only, half the market is overkill.
- Cross out providers whose plan doesn't return them, using the feature table above.
- Decide what should happen at the limit: an error you handle, or a bill you pay.
- Check commercial terms on the free tier if you plan to start there.
- Run your own sample. Take 200 addresses from your real logs, call two or three shortlisted APIs, and compare the answers where you know the truth (your own office, your staff's home cities, known cloud servers).
- Then compare cost for the survivors in the pricing comparison.
Here's a minimal script for step 5. It calls IPAPI.GR and prints one line per address. Add a second function for any other provider with the same output shape.
// compare.mjs : node compare.mjs ips.txt
import { readFile } from 'node:fs/promises';
const known = (v) => (v === undefined || v === null || v === '' || v === 'No Data' ? null : v);
async function ipapigr(ip) {
const r = await fetch(`https://ipapi.gr/api/lookup/${encodeURIComponent(ip)}?key=${process.env.IPAPI_KEY}`,
{ signal: AbortSignal.timeout(5000) });
const d = await r.json();
if (!r.ok) throw new Error(d.message || r.status);
return { country: known(d.country_code), city: known(d.city), asn: known(d.asn) };
}
const ips = (await readFile(process.argv[2], 'utf8')).split('\n').map((s) => s.trim()).filter(Boolean);
for (const ip of ips) {
try {
const a = await ipapigr(ip);
console.log([ip, a.country, a.city, a.asn].join('\t'));
} catch (e) {
console.log([ip, 'error', e.message].join('\t'));
}
}With more than a handful of addresses, the batch endpoint sends up to 100 in one request:
curl -X POST "https://ipapi.gr/api/lookup/batch?key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ips": ["8.8.8.8", "2001:4860:4860::8888", "example.com"]}'What an "IP intelligence API" should include
"IP intelligence" is used loosely. In practice it means geolocation plus one or more of these layers:
| Layer | Example fields | Who offers it |
|---|---|---|
| Network | ASN, ISP, organization | Nearly everyone |
| Connection type | hosting, mobile, business | ipinfo, ip-api.com (hosting, mobile), MaxMind, ipgeolocation.io |
| Privacy | VPN, proxy, Tor, relay, residential proxy | ipinfo, ipdata, IP2Location.io, MaxMind, ipregistry, ipstack |
| Reputation | threat score, blocklists | ipdata, ipgeolocation.io, IP2Location.io, ipstack |
| Verified bots | AI crawlers, search crawlers, scanners | IPAPI.GR, IP2Location.io (Security plan), ipstack (is_crawler) |
Be wary of any single "risk score" you can't explain to a customer you've blocked. Whichever provider you choose, prefer signals with a clear meaning. IPAPI.GR's flags name a category (AI crawler, crawler, scanner) rather than a score, and false means "not a known bot", not "human".
FAQ
Which IP geolocation API is the most accurate?
Nobody can answer that honestly without a large ground-truth data set, and every vendor-run benchmark favours the vendor. Country-level answers are close across major providers; city-level answers vary. Test with addresses from your own traffic where you know the true location.
Where can I compare prices?
In the IP geolocation API pricing comparison. It converts ten providers' list prices into cost at 100k, 1M and 10M requests a month and explains free tiers and overage. This article covers everything except price.
Which IP API is best for startups?
One with a free tier you're allowed to use in production, HTTPS on that tier, and a cheap first paid step. ipgeolocation.io, ipapi.is and IPAPI.GR all offer a daily free allowance without a non-commercial restriction (IPAPI.GR's conditions are in its terms). ipinfo Lite allows it with attribution at country level. Compare the conditions in our free tier comparison.
Does IPAPI.GR detect VPNs or proxies?
No. IPAPI.GR returns geolocation, network data and, on any paid plan, flags for AI crawlers, search and SEO crawlers and internet scanners. It doesn't return VPN, proxy or Tor signals or a fraud score.
Can I look up an IPv6 address or a domain?
Yes on IPAPI.GR, on every plan: GET /api/lookup/2001:4860:4860::8888 or GET /api/lookup/example.com. Most providers above also accept IPv6. Domain input is less common: ip-api.com and ipgeolocation.io (paid plans) list it.
How did you check these features?
By reading each provider's documentation and plan pages on 12 November 2026. We didn't benchmark accuracy or speed. Where a page was ambiguous, we quoted it rather than guessing.