Geolocation moved to self-hosted MaxMind GeoLite2.
What changed. The IP lookup tool now reads geolocation, city, and ASN data from MaxMind's GeoLite2 databases hosted in our own Cloudflare R2 bucket, instead of calling the ip-api.com HTTP API on every request. A new endpoint /api/geo/{ip} returns the same data as JSON.
Why. Lower latency at the edge (the lookup is an in-memory binary tree walk after the first cold-start parse), no third-party rate limits on the hot path, and a clearer attribution chain. MaxMind GeoLite2 is the dataset most other “IP geolocation” APIs ultimately resolve to — sourcing from it directly is one fewer hop.
How. Three databases (Country, City, ASN) are loaded once per Worker isolate and reused across requests. A separate Cloudflare Worker refreshes them weekly from MaxMind's permalink download URLs. ip-api.com remains in place as a fallback path for the rollout window — if a lookup fails or returns no country, the page still has data to render. The geolocation card on the IP detail page shows which source served the response (VIA GEOLITE2 or VIA IPAPI).
See /sources for the full attribution and update cadence.