MaxMind GeoIP2 alternative
without database files
MaxMind GeoIP2 requires binary MMDB files downloaded weekly and an SDK to read them. ApogeoAPI gives you the same geolocation data — plus currency and country info — via a single REST call. No files, no cron jobs, no SDK.
Why teams replace MaxMind GeoIP2
No binary files to manage
MaxMind distributes MMDB binary files. You need to download them weekly (or pay for GeoUpdate API), add storage, and keep your deployment in sync. ApogeoAPI removes all of that.
No update cron jobs
GeoIP2 databases go stale fast. Missing an update means wrong geolocations. With a cloud API, you always query live, up-to-date data automatically.
Countries + currencies included
ApogeoAPI bundles IP geolocation, full country metadata (flags, currencies, dial codes), and live exchange rates in one API. MaxMind only provides IP geolocation.
ApogeoAPI vs MaxMind GeoIP2 — feature comparison
| Feature | ApogeoAPI | MaxMind GeoIP2 |
|---|---|---|
| Delivery model | Cloud REST API | Binary MMDB file download |
| Integration effort | One HTTP request | SDK install + DB file + update cron |
| Database updates | Automatic (cloud) | Manual weekly download required |
| Country data | ✅ Full ISO fields | ✅ Full ISO fields |
| City & region | ✅ City + region name | ✅ GeoIP2 City DB (paid) / GeoLite2 City (free) |
| Coordinates | ✅ Lat/lon included | ✅ Lat/lon included |
| Timezone | ✅ IANA timezone | ✅ IANA timezone |
| Currency data | ✅ Currency + live FX rates | ❌ Not included |
| Countries API | ✅ Full metadata endpoint | ❌ Not included |
| Exchange rates | ✅ 160+ currencies | ❌ Not included |
| Free tier | 1,000 req/mo REST + GeoLite2-equivalent accuracy | GeoLite2 (free MMDB, requires account + weekly updates) |
| Offline / edge use | Network required | ✅ Local lookup (no network) |
| License | SaaS subscription | GeoLite2: Creative Commons Attribution / GeoIP2: paid license |
Migrate from MaxMind GeoIP2 to ApogeoAPI
import geoip2.database
reader = geoip2.database.Reader('/path/to/GeoLite2-City.mmdb')
def get_geo(ip: str) -> dict:
record = reader.city(ip)
return {
"country": record.country.iso_code, # e.g. "US"
"city": record.city.name, # e.g. "Mountain View"
"latitude": record.location.latitude,
"longitude": record.location.longitude,
"timezone": record.location.time_zone,
}import httpx
from functools import lru_cache
APOGEO_KEY = "your_api_key"
BASE = "https://api.apogeoapi.com/v1"
@lru_cache(maxsize=2048)
def get_geo(ip: str) -> dict:
r = httpx.get(f"{BASE}/geo/{ip}", params={"apikey": APOGEO_KEY})
r.raise_for_status()
d = r.json()
return {
"country": d["countryCode"], # e.g. "US"
"city": d["city"], # e.g. "Mountain View"
"latitude": d["latitude"],
"longitude": d["longitude"],
"timezone": d["timezone"],
# Bonus fields MaxMind doesn't have:
"currency": d["currencyCode"], # e.g. "USD"
"currency_symbol": d["currencySymbol"],
}// Before: const reader = new Reader(fs.readFileSync('/GeoLite2-City.mmdb'));
// After: one HTTP request
const cache = new Map<string, any>();
async function getGeo(ip: string) {
const subnet = ip.split('.').slice(0, 3).join('.') + '.0';
if (cache.has(subnet)) return cache.get(subnet);
const res = await fetch(
`https://api.apogeoapi.com/v1/geo/${ip}?apikey=${process.env.APOGEO_KEY}`
);
const data = await res.json();
cache.set(subnet, data);
return data;
}When MaxMind is still the right choice
✅ Use MaxMind GeoIP2 when:
- • You need offline / air-gapped lookup (no outbound network)
- • You process hundreds of millions of IPs per day and a local MMDB is cheaper at that scale
- • You need ISP / ASN / connection type fields (GeoIP2 Enterprise)
- • You require on-premise data residency (GDPR strict mode)
✅ Use ApogeoAPI when:
- • You want zero infrastructure — no files, no cron, no SDK
- • You need country metadata and FX rates alongside IP geo
- • You're building a serverless / edge function where local files aren't viable
- • Your volume is under 500K requests/month and simplicity matters
Frequently asked questions
Does ApogeoAPI require any local files or SDK?▼
No. ApogeoAPI is a pure REST API. You make a GET request with your API key and receive a JSON response. No files to download, no libraries to install beyond a standard HTTP client.
How does accuracy compare to GeoLite2 vs GeoIP2?▼
ApogeoAPI provides sub-country accuracy (city + region) comparable to GeoLite2 City on most commercial and residential IPs. Enterprise-grade ISP-level signals (like MaxMind GeoIP2 Enterprise) are not currently available.
Is there a free tier like GeoLite2?▼
Yes. ApogeoAPI's free tier includes 1,000 requests/month with full city-level accuracy and currency data — no attribution or license file required.
Can I use ApogeoAPI in serverless functions?▼
Yes. Serverless functions (AWS Lambda, Vercel Edge, Cloudflare Workers) cannot bundle binary MMDB files. ApogeoAPI is a standard HTTPS request that works anywhere outbound traffic is allowed.
Other IP geolocation alternatives
Replace MaxMind GeoIP2 today
Free tier • No credit card • No database files • Live data always up to date
Get your free API key