Geocoding — entry 026 of 80

GeoJS

Verified Jul 2026

GeoJS is a free, no-signup IP geolocation lookup that returns country, city, ASN, and timezone data as JSON or JSONP over HTTPS with open CORS. It's built for simple client-side and ChatOps integrations rather than high-volume commercial traffic, and has no paid tier.

GeoJS is a free, no-signup IP geolocation lookup — resolve an IP to country, region, city, ASN, and timezone as JSON or JSONP, with no key and open CORS. Its own tagline is "Highly available REST/JSON/JSONP IP Geolocation lookup API," and ChatOps integration is a headline feature with its own docs section; the worked example on its homepage is a client-side JSONP snippet.

ip-geolocationno-authfreejsonpcors-enabled
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, JSONPResponses can be requested as JSON or JSONP.

GreatAPIs Score

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats15/15Supports 2 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/geojs/"><img src="https://greatapis.com/badge/geojs.svg" alt="Scored 94 on greatapis.com"></a>

Auth quickstart

  1. No API key required — requests are public and keyless. Unusually, the provider publishes an explicit statement that there is no ceiling at all: "As it currently stands GeoJS has no rate limits and doesn't require any to be implemented. Should rate limits be required advanced warning will be given where possible" (geojs.io/docs/general/, under "Rate Limits"; the homepage feature list repeats it as "No rate limits (yet)"). That's a promise of advance notice, not a contractual guarantee — don't build something that breaks if it changes.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Geolocate a single IP by path

GEThttps://get.geojs.io/v1/ip/geo/8.8.8.8.json

200 application/json

{"accuracy":1000,"area_code":"0","asn":15169,"continent_code":"NA","country":"United States","country_code":"US","country_code3":"USA","ip":"8.8.8.8","latitude":"37.751","longitude":"-97.822","organization":"AS15169 Google LLC","organization_name":"Google LLC","timezone":"America/Chicago"}

Try it

Developer reference

Base URLhttps://get.geojs.io/v1
Key endpoints
  • GET/ip.json
  • GET/ip/geo.json
  • GET/ip/country.json

Gotchas & limits

  • The response shape flips depending on how you pass the IP: the path form GET /v1/ip/geo/{ip}.json returns a bare object (shown above), but the query form GET /v1/ip/geo.json?ip=8.8.8.8 — even for a single address — returns a one-element array instead, because the ip query param is documented as accepting a comma-separated list (?ip=8.8.8.8,1.1.1.1) and always returns array-shaped results. Both forms confirmed live in this run.
  • latitude/longitude are strings, not numbers ("37.751", not 37.751) — "due to historic reasons" per the docs, and confirmed on every live probe in this run.
  • JSONP isn't ?callback= on the .json route — that param is silently ignored there. It's a distinct .js file extension (GET /v1/ip/geo.js?ip=8.8.8.8), confirmed live to return Content-Type: application/javascript with the body wrapped in the default geoip(...) callback name, or a custom one via ?callback=myCallback.
  • Calling GET /v1/ip/geo.json with no ip param at all doesn't error — it geolocates the calling IP itself (confirmed live, returning the request's own public IP and location), which is convenient for client self-lookups but easy to trigger by accident if a caller forgets to interpolate the parameter.
  • Separate /v1/ip/country.json and /v1/ip.json endpoints exist for lighter-weight lookups (just country, or just the bare IP) — reach for /geo only when you need the fuller location/ASN payload, since (per the docs) it's the one endpoint with no plain-text response variant.

Availability

Uptime100%
Median latency123 ms
Last checkUp · 200 · Sep 2026

3 checks since Aug 2026. A person runs this check by hand, not an automated monitor.