Debugging traffic spikes
Spike in 502s from one ASN? Paste an IP from your access log, see the ASN, decide whether to rate-limit or block it.
Paste an IPv4 or IPv6 address and get the country, region, city, postal code, coordinates, timezone, ASN, organisation, ISP, and hostname — instantly, no signup, no key.
Codersera's free GeoIP lookup tool returns a richly detailed location (country, region, city, postal code, coordinates, timezone, continent), the network operator (ASN, organisation, ISP, hostname), and metadata (flag emoji, region code, source provider) for any IPv4 or IPv6 address. No signup, no key, no daily limit, 60 lookups per minute per IP. Use the form, paste an IP, or hit "Lookup my IP" to get your own location. There's also a developer-friendly JSON endpoint at /api/tools/ip-lookup so AI agents and scripts can use it directly.
Some legacy tools return just country + city. Ours surfaces the full network-operator picture too, because that's what you actually need for debugging, abuse handling, and analytics work.
Full country name plus the ISO 3166-1 alpha-2 code (US, DE, IN, etc.).
Administrative region or US state. Some countries do not expose this for all IP blocks.
The city the IP geolocates to. Accuracy varies — see the Accuracy section below.
Postal / ZIP code where available.
Decimal degrees. We surface the Google Maps link for one-click visualisation.
IANA timezone name (America/Los_Angeles, Europe/Berlin, etc.) — use directly with Intl APIs.
Autonomous System Number plus the operator and ISP names. Critical for security work and abuse handling.
Reverse-DNS hostname if present (dns.google, etc.). Confirms who runs the IP.
High-level region grouping when you need to filter by EMEA / APAC / Americas / etc.
The country flag as a Unicode emoji — handy if you render the result in a UI.
Public. CORS-enabled. No API key. Same data shape as the UI. Wire it into Claude Code, Codex, Cursor, or any script that can curl — it's designed for that.
curl https://codersera.com/api/tools/ip-lookup?ip=8.8.8.8
{
"success": true,
"data": {
"ip": "8.8.8.8",
"country": "United States",
"countryCode": "US",
"state": "California",
"city": "Mountain View",
"postal": "94039",
"latitude": 37.3861,
"longitude": -122.0839,
"timezone": "America/Los_Angeles",
"asn": 15169,
"org": "Google LLC",
"isp": "Google LLC",
"hostname": "google.com",
"flagEmoji": "🇺🇸",
"source": "ipwhois"
}
}curl -X POST https://codersera.com/api/tools/ip-lookup \
-H 'content-type: application/json' \
-d '{"ips":["8.8.8.8","1.1.1.1","2001:4860:4860::8888"]}'curl https://codersera.com/api/tools/ip-lookup
Rate limit: 60 requests / minute per caller IP. CORS allows any origin. No auth headers, no API key. If both upstream providers fail, the endpoint returns the IP with all fields null and source: "unknown" so your script can retry or skip without parsing an error.
Spike in 502s from one ASN? Paste an IP from your access log, see the ASN, decide whether to rate-limit or block it.
Failed-login flood from a single /24? GeoIP-lookup five samples, identify the hosting provider, file an abuse report at their NOC contact.
Verify a customer's IP geolocates to a region where you can legally serve them, or flag VPN/proxy hits for fraud review.
Wire the JSON endpoint into Claude Code / Codex / Cursor: a task that reads /var/log/nginx/access.log can enrich each line with city + ASN with one extra fetch.
Backfill historical request logs with city + timezone columns to power retention analytics broken out by region without burning your GA4 quota.
Quick sanity-check on whether a remote peer is on the same continent before deciding which relay server to route them through.
Worth reading once if you're building anything that decides based on GeoIP. Misuse usually comes down to assuming GeoIP is more precise than it really is.
Effectively a fact for non-VPN traffic. Suitable for legal-data-residency checks.
Reliable for the US, EU, India, etc. Less reliable for small countries with fewer assigned ranges.
Treat as a hint, not a fact. Mobile carriers and VPN exit-IPs heavily skew the result.
Backed by registrar (ARIN/RIPE/APNIC) data, not estimation. Reliable for abuse-handling work.
Yes — no signup, no API key, no daily cap. The server-side rate limit is 60 lookups per minute per caller IP, generous for both interactive use and modest automation.
Country accuracy is near-perfect (>99%). State/region accuracy is typically 80-95%. City accuracy is the noisy one — 50-80% within a 50-km radius, much worse for mobile carriers and VPN ranges. Treat the city as a hint, not a fact, for anything that matters.
We proxy ipwho.is as the primary source and ipinfo.io as the fallback. Both consume MaxMind GeoLite2 + IP2Location LITE under the hood. The `source` field on the result tells you which provider answered.
Yes — the JSON endpoint at /api/tools/ip-lookup is intentionally public, CORS-enabled, and documented in detail below. GET ?ip=<ip>, or POST { ips: [...] } for batches up to 10.
Yes. Paste any full or compressed IPv6 address (2001:4860:4860::8888). The validator accepts every canonical form.
No. GeoIP is a coarse lookup against blocks-of-IPs registries; it does not connect IPs to people, accounts, or precise addresses. For a residential ISP IP it typically resolves to a city-level coordinate near the ISP's switching centre.
We do not persist your lookups in any user-visible system. Application logs (PM2 / nginx) may contain the requests transiently for ops; nothing is sent to analytics or third parties beyond the underlying provider that resolved the IP.
Self-hosting MaxMind GeoLite2 is faster and gives you offline access, but you must update the database weekly and handle the MMDB binary format. For most teams, this proxy is the lower-friction choice and matches MaxMind data quality (because it is, ultimately, calling MaxMind data).
Yes — POST { "ips": ["8.8.8.8", "1.1.1.1", "..."] } to /api/tools/ip-lookup. The endpoint caps each batch at 10 to keep upstream usage fair. For larger batches, paginate from your script.
The endpoint tries ipwho.is first and falls back to ipinfo.io on any error. If both fail, it returns the IP with all fields null and source="unknown" rather than erroring — your script can retry or skip.