ipstack is one of the longest-running IP geolocation APIs. One request returns location, time zone, currency, connection and security data, and the docs and SDKs are mature. People usually look for an ipstack alternative at one of two moments: the free plan's 100 requests a month runs out in an afternoon, or a feature they need (bulk lookups, security data) turns out to be on the top self-serve plan only.
This guide lists what each ipstack plan includes, where ipstack is the better choice, the alternatives by need, and a field-by-field migration. ipstack facts come from ipstack.com/pricing and ipstack.com/geolocation-api, checked on 12 November 2026.
Disclosure: we run IPAPI.GR, one of the alternatives below. Where ipstack or another provider is the better fit, we say so.
ipstack's plans today
| Plan | Price (monthly billing) | Requests / month | Commercial use | Modules |
|---|---|---|---|---|
| Free | 0 USD | 100 | No | Location |
| Basic | 12,99 USD | 50.000 | Yes | Location, time zone, connection, currency |
| Professional | 59,99 USD | 500.000 | Yes | Same as Basic |
| Professional+ | 99,99 USD | 2.000.000 | Yes | Adds the bulk endpoint and the security module |
| Custom | Contact sales | Custom | Yes | All |
Other details from ipstack's pages:
- Yearly billing saves "up to 15%". Switching between monthly and yearly is done through a support request.
- Overage: you're notified at 75%, 90% and 100% of the monthly allowance. "After reaching 100% of the allowance, overages fees will apply."
- Bulk endpoint: up to 50 IPs per request, Professional+ only.
- Security module (Professional+):
is_proxyandproxy_type,is_tor,is_crawlerandcrawler_name,threat_levelandthreat_types. - Free plan: HTTPS and location fields only, no commercial use. ipstack's FAQ describes it as a way to test "on a non-production website or application".
- Platinum Support is an add-on to any paid plan.
ipapi.com, another apilayer product, lists the same prices and monthly quotas on its pricing page. If you're moving away from ipstack because of the plan structure, ipapi.com won't change much. (It's also unrelated to ip-api.com, ipapi.co, ipapi.is and IPAPI.GR; see the ipapi name guide.)
When ipstack is the right choice
- You want currency and time-zone details in the same response: currency code and symbol, time-zone code, calling code and an
is_euflag. IPAPI.GR returns the IANA time zone but no currency or calling code. - You need proxy, Tor and threat-level data plus a crawler flag in one call, and you're on Professional+ anyway. IPAPI.GR has no proxy, Tor or threat data.
- You want a vendor with SDKs, a Postman collection and paid priority support. IPAPI.GR has no SDK (it's one HTTPS GET) and no paid support tier.
- Your volume fits neatly into 50.000, 500.000 or 2.000.000 a month and you prefer monthly quotas with overage to daily hard limits.
When an alternative makes sense
| You need… | On ipstack | Alternatives to look at |
|---|---|---|
| A real free tier for a small production site | 100 requests/month, non-commercial | ipgeolocation.io (1.000 credits/day), ipapi.is and IPAPI.GR (1.000/day, commercial use allowed) |
| Bulk lookups without the top plan | Professional+ (99,99 USD) only | IPAPI.GR (up to 100 per request, every plan), ip-api.com Pro, ipdata paid plans |
| Millions of lookups for a flat fee | 2.000.000 at 99,99 USD, then overage or custom | ip-api.com Pro (unlimited), IPAPI.GR Business or Scale (250.000 or 1.000.000 a day, no overage billing) |
| Separate flags for AI crawlers, search crawlers and scanners | is_crawler + crawler_name on Professional+ | IPAPI.GR: risk.is_ai, is_crawler, is_scanner on every paid plan, from 9,00 € a month |
| Domain names as input | Not listed | IPAPI.GR, ip-api.com, ipgeolocation.io (paid) |
| Richer privacy detection | is_proxy, proxy_type, is_tor on Professional+ | ipinfo Core and Max, IP2Location.io, MaxMind Insights |
A note on bot flags, because both ipstack and IPAPI.GR have something called is_crawler. Neither page lets you compare coverage directly, so test with your own logs. IPAPI.GR's risk flags 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 list of covered AI crawlers, search and SEO crawlers and scanners is public on the bot signals page. false means "not a known bot", not "human".
Cost at the same volume
Monthly list prices, checked on 12 November 2026. "Cheapest plan that covers it", ignoring overage.
| Lookups / month | ipstack | ipgeolocation.io | ip-api.com | IPAPI.GR |
|---|---|---|---|---|
| 3.000 (100 a day) | 12,99 USD (Basic; the free plan is 100 a month) | 0 USD | Pro 13,30 € for commercial use | 0 € (Free) |
| 50.000 | 12,99 USD | 19 USD | 13,30 € | 9,00 € (Developer) |
| 500.000 | 59,99 USD | 49 USD | 13,30 € | 29,00 € (Growth) |
| 2.000.000 | 99,99 USD | 129 USD | 13,30 € | 79,00 € (Business) |
| 10.000.000 | Custom | 249 USD + overage | 13,30 € | 199,00 € (Scale) |
ip-api.com's 13,30 € is the monthly price on a 12-month term, excluding VAT. IPAPI.GR prices include VAT and its limits are per day, so the table divides each monthly volume by 30: 50.000 a month is about 1.700 a day (Developer, 10.000 a day), 500.000 about 16.700 (Growth, 50.000 a day), 2.000.000 about 66.700 (Business, 250.000 a day) and 10.000.000 about 333.000 (Scale, 1.000.000 a day). If your traffic is uneven, size the plan for your busiest day. The free plan is 1.000 requests a day, so 3.000 a month fits. The prices buy different data: ipstack's Basic includes currency and time-zone modules, and IPAPI.GR's paid plans include bot flags but no proxy detection. More providers and volumes in IP geolocation API pricing and cost per lookup.
Field mapping: ipstack to IPAPI.GR
| ipstack | IPAPI.GR | Notes |
|---|---|---|
ip | ip | |
type (ipv4/ipv6) | none | Check the format yourself if you need it |
country_code, country_name | country_code, country | |
region_name | region | |
city, zip | city, zipcode | |
latitude, longitude | latitude, longitude | Numbers, or "No Data" when unknown |
time_zone.id | timezone | IANA name |
connection.asn (number) | asn (string of digits) | Compare as strings |
connection.isp | isp | IPAPI.GR also returns organization |
continent_name, location.*, currency.* | none | Not available on IPAPI.GR |
security.is_crawler, crawler_name | risk.is_crawler, risk.is_ai | Different coverage; paid plans |
security.is_proxy, is_tor, threat_level | none | Not available on IPAPI.GR |
Migrating with an adapter
Keep the provider behind one function and the switch becomes a configuration change:
// geo.js
const known = (v) => (v === undefined || v === null || v === '' || v === 'No Data' ? null : v);
export async function geoFromIpstack(ip) {
const r = await fetch(`https://api.ipstack.com/${encodeURIComponent(ip)}?access_key=${process.env.IPSTACK_KEY}`,
{ signal: AbortSignal.timeout(2000) });
const d = await r.json();
if (d.error) throw new Error(d.error.info || 'ipstack error');
return {
countryCode: d.country_code ?? null,
city: d.city ?? null,
timezone: d.time_zone?.id ?? null,
asn: d.connection?.asn != null ? String(d.connection.asn) : null,
isp: d.connection?.isp ?? null
};
}
export async function geoFromIpapigr(ip) {
const r = await fetch(`https://ipapi.gr/api/lookup/${encodeURIComponent(ip)}?key=${process.env.IPAPI_KEY}`,
{ signal: AbortSignal.timeout(2000) });
const d = await r.json();
if (!r.ok) throw new Error(d.message || `HTTP ${r.status}`);
return {
countryCode: known(d.country_code),
city: known(d.city),
timezone: known(d.timezone),
asn: known(d.asn),
isp: known(d.isp)
};
}
export const geo = process.env.GEO_PROVIDER === 'ipstack' ? geoFromIpstack : geoFromIpapigr;Replacing ipstack's bulk endpoint
ipstack's bulk endpoint takes up to 50 comma-separated IPs on Professional+. IPAPI.GR's batch endpoint takes up to 100 IPs or domains in a JSON body on every plan:
curl -X POST "https://ipapi.gr/api/lookup/batch?key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ips": ["134.201.250.155", "72.229.28.185", "2001:4860:4860::8888", "example.com"]}'The response has one entry per item, in the order you sent them, plus count (items sent) and charged (lookups counted). A bad item returns an error entry without failing the batch, and identical items are counted once. If your remaining daily allowance is smaller than the batch, the whole batch is refused with 429 and nothing is counted, so split large jobs.
Rollout checklist
- Create a free IPAPI.GR key and run both providers on a sample of real traffic. Log disagreements on
countryCode. - Convert stored ASNs to strings if you kept ipstack's numeric
connection.asn. - Decide what to do without
currency: a country-to-currency table in your own code covers most needs. - Remove any logic that depended on
security.is_proxyorthreat_level, or keep a provider that offers them. - If you used the crawler flag, compare it with IPAPI.GR's
risk.is_crawlerandrisk.is_aion your own logs. You can check single addresses with the free bot verification tool. - Set a usage alert at 80% of your daily limit and flip the switch.
FAQ
Is ipstack free?
ipstack has a free plan with 100 requests a month, HTTPS and location data only. It doesn't allow commercial use, and ipstack's FAQ positions it for testing on non-production sites.
Which ipstack plan includes bulk lookups and security data?
Professional+ at 99,99 USD a month (2.000.000 requests), according to the pricing page checked on 12 November 2026. The bulk endpoint takes up to 50 IPs per request.
What happens when I go over my ipstack quota?
ipstack's FAQ says you're notified at 75%, 90% and 100% of your allowance, and overage fees apply after 100%.
Is ipapi.com the same as ipstack?
Both are apilayer products, and ipapi.com's pricing page lists the same prices and quotas. ipapi.com is unrelated to ip-api.com, ipapi.co, ipapi.is and IPAPI.GR.
What's the cheapest ipstack alternative with HTTPS and commercial use?
For small volumes, the free tiers of ipgeolocation.io, ipapi.is and IPAPI.GR (1.000 a day each, commercial use allowed). For large volumes, ip-api.com Pro (13,30 € a month on a 12-month term, unlimited) is the lowest flat fee in this comparison. IPAPI.GR's paid plans run from 9,00 € a month (10.000 a day) to 199,00 € (1.000.000 a day), VAT included, with no overage billing.
Does IPAPI.GR return currency data?
No. It returns country, region, city, postcode, coordinates, IANA time zone, ISP, organization and ASN, plus bot flags on every paid plan. Map the country code to a currency in your own code.