ipinfo is one of the most widely used IP data APIs, and for good reason: the data set is broad, the docs are clear and the free Lite plan is genuinely useful. People look for an ipinfo alternative for a few recurring reasons: they need city-level data but Lite is country-only, their volume outgrows the 150.000 requests a month in Core, or they want signals ipinfo doesn't sell.
This guide sets out what ipinfo's plans include today, when staying is the right call, which alternatives fit which need, and how to migrate without rewriting your app. Every ipinfo fact below comes from ipinfo.io/pricing and the ipinfo developer docs, checked on 12 November 2026.
Disclosure: we run IPAPI.GR, one of the alternatives below. We've included the cases where ipinfo, or someone else, is the better choice.
ipinfo's plans today
ipinfo's pricing page shows annual prices by default. The monthly prices are a little higher:
| Plan | Price (monthly billing) | Price (billed annually) | API requests / month | Geolocation | Privacy detection |
|---|---|---|---|---|---|
| Lite | 0 USD | 0 USD | Unlimited | Country and continent only | No |
| Core | 31 USD/mo | 26 USD/mo (310 USD/yr) | 150k (overage up to 5M) | City level | VPN, Tor, proxy and relay |
| Max | 196 USD/mo | 163 USD/mo (1.960 USD/yr) | 250k (overage up to 5M) | City level, accuracy radius | Adds residential proxy and service names |
| Enterprise | Custom | Custom | 1M+ | City level | Full |
Other details from the same page:
- Overage: 0,34 USD per 1.000 requests on Core and 1,30 USD per 1.000 on Max, billed monthly and prorated per request.
- Lite requires attribution ("Attribution required" in the plan table) and returns the ASN name and domain only, not full ASN details.
- Carrier data starts at Max. Company, abuse contact, hosted domains and IP WHOIS are Enterprise.
- Database downloads aren't part of self-serve plans. The page says they start at 1.000 USD a month.
- The Lite API docs say its bulk endpoint "can enrich up to 1.000 requests per call".
Many comparison posts still quote older ipinfo plans and prices, such as "49 USD a month". Check the official page before you decide.
When to stay with ipinfo
Honestly, often. ipinfo is the better choice when:
- You need privacy detection. Core flags VPN, Tor, proxy and relay addresses. Max adds residential proxies and service names. IPAPI.GR doesn't detect any of these.
- You need company, carrier or hosted-domain data. These are ipinfo strengths at Max and Enterprise.
- Country-level data is enough. Lite is unlimited and free. If you can show the attribution, it's hard to beat.
- You need a downloadable database and have the budget for ipinfo's database offering.
- Your traffic is under 150.000 lookups a month and you value the extra signals in Core.
When an alternative makes sense
| Your situation | Why ipinfo may not fit | Alternatives to look at |
|---|---|---|
| City-level data on a free or tiny budget | Lite is country-only; Core starts at 26-31 USD | ipgeolocation.io, ipapi.is, IPAPI.GR (1.000/day free, city-level) |
| Millions of lookups a month | Core includes 150k; 1M costs about 320 USD/mo with overage | ip-api.com Pro (unlimited), IPAPI.GR Growth (29,00 € a month, VAT included, for 50.000 a day), ipapi.is |
| Predictable bills, no overage | Core and Max bill overage automatically | IPAPI.GR (hard daily limit), ipdata paid plans (no overage charges) |
| Bot and crawler identification | Not listed in ipinfo's plans | IPAPI.GR, any paid plan (risk.is_ai, is_crawler, is_scanner), IP2Location.io Security plan |
| Local lookups, no network call | Database download starts at 1.000 USD/mo | MaxMind GeoIP databases, ipgeolocation.io or ipapi.is databases |
| A flat fee with a published SLA | Core and Max are a quota plus overage | ip-api.com Pro (unlimited, 99,9% SLA), ipdata Business (99,999% SLA, no overage charges) |
The 1M figure is our arithmetic from the pricing page: Core's 31 USD covers 150.000 requests, and 850.000 more at 0,34 USD per 1.000 is 289 USD. More examples in IP geolocation API pricing and cost per lookup.
Five alternatives, briefly
ip-api.com Pro
Unlimited requests with HTTPS and commercial use for 13,30 € a month on a 12-month term (excluding VAT), plus a 99,9% SLA. The response includes proxy, hosting and mobile flags. The trade-off: a smaller field set than ipinfo Max. (members.ip-api.com)
ipdata
1.000 city-level lookups a day free (then country-level), and paid plans with blocklists, VPN detection and reputation scores. Startup is 50 USD/month billed yearly for 50.000 requests a day. (ipdata.co/pricing)
ipgeolocation.io
1.000 free credits a day with commercial use allowed. Paid plans from 19 USD a month for 150.000 credits. Security data (including VPN, proxy and bot detection) costs 2 credits per lookup. (ipgeolocation.io/pricing)
MaxMind GeoIP
The choice if you want a local database instead of an API, or pay-per-query web services from 0,0001 USD (country) to 0,002 USD (Insights) per query. See our MaxMind alternative guide for the trade-offs. (maxmind.com)
IPAPI.GR
City-level geolocation, ISP, organization and ASN for IPv4, IPv6 and domains on every plan. 1.000 requests a day free. Paid plans run from Developer (9,00 € a month for 10.000 requests a day) to Scale (199,00 € for 1.000.000 a day), VAT included, and every paid plan adds three bot flags: AI crawlers and agents, search and SEO crawlers, and internet scanners. Batch lookups of up to 100 items work on every plan. No VPN/proxy/Tor detection, no SLA and no database download. (pricing, docs)
Field mapping: ipinfo to IPAPI.GR
If you use ipinfo's Core lookup (api.ipinfo.io/lookup/{ip}), the mapping is mostly one-to-one:
| ipinfo Core | IPAPI.GR | Notes |
|---|---|---|
ip | ip | For a domain lookup, IPAPI.GR returns the resolved address here and the name in domain |
geo.country_code | country_code | Two-letter code |
geo.country | country | Country name |
geo.region | region | |
geo.city | city | |
geo.postal_code | zipcode | |
geo.latitude, geo.longitude | latitude, longitude | Numbers, or "No Data" when unknown |
geo.timezone | timezone | IANA name |
as.asn ("AS15169") | asn ("15169") | IPAPI.GR has no AS prefix |
as.name | isp, organization | organization is who holds the block, isp who runs the network |
is_anonymous, is_hosting, is_mobile | none | Not available on IPAPI.GR |
hostname, geo.continent | none | Not available on IPAPI.GR |
| none | risk.is_ai, risk.is_crawler, risk.is_scanner | Paid plans only |
One behaviour to plan for: when IPAPI.GR has no value for a field, the field is still present with the string "No Data", including latitude and longitude. Treat that as null in your adapter.
Migrating in one file
Keep the provider behind a small adapter so the rest of your app never sees a vendor's field names. Here's a version that speaks both APIs and returns the same shape, so you can run them side by side during a switch:
// geo.js
const known = (v) => (v === undefined || v === null || v === '' || v === 'No Data' ? null : v);
async function getJson(url) {
const r = await fetch(url, { signal: AbortSignal.timeout(2000) });
if (!r.ok) throw new Error(`${new URL(url).host} ${r.status}`);
return r.json();
}
const providers = {
async ipinfo(ip) {
const d = await getJson(`https://api.ipinfo.io/lookup/${encodeURIComponent(ip)}?token=${process.env.IPINFO_TOKEN}`);
return {
countryCode: d.geo?.country_code ?? null,
city: d.geo?.city ?? null,
lat: d.geo?.latitude ?? null,
lon: d.geo?.longitude ?? null,
asn: d.as?.asn ? d.as.asn.replace(/^AS/i, '') : null,
org: d.as?.name ?? null
};
},
async ipapigr(ip) {
const d = await getJson(`https://ipapi.gr/api/lookup/${encodeURIComponent(ip)}?key=${process.env.IPAPI_KEY}`);
return {
countryCode: known(d.country_code),
city: known(d.city),
lat: known(d.latitude),
lon: known(d.longitude),
asn: known(d.asn),
org: known(d.organization) ?? known(d.isp)
};
}
};
export async function geo(ip, order = (process.env.GEO_ORDER || 'ipapigr').split(',')) {
for (const name of order) {
try { return await providers[name](ip); } catch (e) { console.warn('geo', name, e.message); }
}
return { countryCode: null, city: null, lat: null, lon: null, asn: null, org: null };
}A safe rollout:
- Shadow: call both providers for a sample of traffic and log disagreements on
countryCode. Expect city-level differences; IP geolocation is approximate at city level (why). - Normalise ASNs: if you stored ipinfo's
AS15169, strip the prefix once in your database rather than at every read. - Switch the order with
GEO_ORDER=ipapigr,ipinfoso the old provider is a fallback for a while. Check both providers' terms before using one as a fallback in production. - Remove the old provider when the logs are quiet.
For bulk back-fills, the IPAPI.GR batch endpoint takes up to 100 IPs or domains per POST, and each distinct item counts once against your daily limit.
Checking what you get before you switch
You can see the response for your own address on what is my IP, look up any other address with the free IP lookup tool, or call the API with a free key:
curl "https://ipapi.gr/api/lookup/8.8.8.8?key=YOUR_API_KEY"
curl "https://ipapi.gr/api/lookup/2001:4860:4860::8888?key=YOUR_API_KEY"
curl "https://ipapi.gr/api/lookup/example.com?key=YOUR_API_KEY"To see which bots the paid-plan flags cover, check the bot signals coverage page, or test a single address with the bot verification tool.
FAQ
Is ipinfo free?
ipinfo Lite is free, with unlimited API requests, but returns country, continent and basic ASN data only, and requires attribution. City-level data starts with Core at 31 USD a month (or 26 USD a month billed annually).
How much does ipinfo cost for 1 million requests a month?
On the list prices checked on 12 November 2026, about 320 USD a month on Core: 31 USD for the first 150.000 requests and 0,34 USD per 1.000 after that. Max's included volume is higher (250.000) but its overage rate is 1,30 USD per 1.000.
Is there an ipinfo alternative with VPN detection?
Yes: ipdata (Business), IP2Location.io (Plus and Security), MaxMind (Insights), ipregistry and ipgeolocation.io (security module) all list VPN or proxy detection. IPAPI.GR doesn't.
What's the cheapest ipinfo alternative for city-level data?
For small volumes, a free tier with city-level data and commercial use (ipgeolocation.io, ipapi.is or IPAPI.GR, each 1.000 a day). For large volumes, ip-api.com Pro's flat, unlimited plan is the lowest price; IPAPI.GR's paid plans go up to 1.000.000 requests a day (Scale, 199,00 € a month, VAT included) with no overage billing.
Does IPAPI.GR return the ASN in the same format as ipinfo?
Not quite. ipinfo returns "AS15169"; IPAPI.GR returns "15169" as a string of digits. Strip the prefix when you compare.
Can I use ipinfo Lite and another API together?
Technically yes: Lite for country rules and a second API for city or bot data. Read both providers' terms, including ipinfo's attribution requirement.