BYTETOOLS

BigDataCloud Reverse Geocode API

Free client-side reverse geocoding API with no key: turn latitude and longitude into locality, city, country and administrative areas. Unlimited. Tested.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-19

What is the BigDataCloud Reverse Geocode API?

BigDataCloud's client-side reverse geocoding API is a free, key-free endpoint that converts latitude and longitude into a structured address — locality, city, principal subdivision and country — with unlimited use.

This endpoint is designed specifically to be called from the browser after the Geolocation API returns coordinates, which is why it is free and unlimited: it is meant to run client-side at scale.

The administrative hierarchy it returns is more thoughtfully structured than most reverse geocoders, with `localityInfo` breaking down every level from continent to neighbourhood. It resolves coordinates to areas rather than street addresses, which suits privacy-conscious applications.

Quick facts

Base URL
https://api.bigdatacloud.net/data
Authentication
The client-side reverse geocode endpoint needs no key. Other BigDataCloud APIs require one.
Rate limit
Unlimited on this specific free endpoint.
Pricing
Free and unlimited for the client-side reverse geocoding endpoint.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the BigDataCloud Reverse Geocode API

Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.

1. Reverse geocode coordinates to a place

GET https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=31.52&longitude=74.35&localityLanguage=en

curl
curl 'https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=31.52&longitude=74.35&localityLanguage=en'
JavaScript (fetch)
const res = await fetch("https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=31.52&longitude=74.35&localityLanguage=en");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=31.52&longitude=74.35&localityLanguage=en", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "latitude": 31.52,
  "lookupSource": "coordinates",
  "longitude": 74.35,
  "localityLanguageRequested": "en",
  "continent": "Asia",
  "continentCode": "AS",
  "countryName": "Pakistan",
  "countryCode": "PK",
  "principalSubdivision": "Punjab",
  "principalSubdivisionCode": "PK-PB",
  "city": "Lahore",
  "locality": "Lahore",
  "postcode": "",
  "plusCode": "8J3PG9C2+22",
  "localityInfo": {
    "administrative": [
      {
        "name": "Pakistan",
        "description": "republic in Asia",
        "isoName": "Pakistan",
        "order": 4,
        "adminLevel": 2,
        "isoCode": "PK",
        "wikidataId": "Q843",
        "geonameId": 1168579
      },
      {
        "name": "Punjab",
        "description": "province of Pakistan",
        "isoName": "Punjab",
        "order": 5,
        "adminLevel": 4,
        "isoCode": "PK-PB",
        "wikidataId": "Q4478",
        "geonameId": 1167710
      },
      {
        "name": "Lahore Division",
        "description": "division of Punjab, Pakistan",
        "order": 6,
        "adminLevel": 5,
        "wikidataId": "Q3308170",
        "geonameId": 1172448
      },
      {
        "name": "Lahore",
        "description": "capital of the Punjab province, Pakistan",
        "order": 7,
        "adminLevel": 6,
        "wikidataId": "Q11739",
        "geonameId": 1172451
      },
      {
        "name": "Lahore District",
        "description": "district of Punjab, Pakistan",
        "order": 8,
        "adminLevel": 6,
        "wikidataId": "Q2315527",
        "geonameId": 1172449
      },
      {
        "name": "Laho

Parameters

ParameterTypeRequiredDescription
latitudefloatRequiredLatitude in decimal degrees. 31.52
longitudefloatRequiredLongitude in decimal degrees. 74.35
localityLanguagestringOptionalTwo-letter language code for place names. en

Response fields

countryName / countryCodestring
Country name and ISO code.
principalSubdivisionstring
State, province or region.
city / localitystring
City and more specific locality.
postcodestring
Postal code where determinable.
localityInfoobject
Full administrative hierarchy from continent down to neighbourhood.
continentstring
Continent name.

What you can build with the BigDataCloud Reverse Geocode API

  • Turn browser Geolocation coordinates into a readable place name
  • Show a user's detected city without a backend
  • Set regional defaults from device location
  • Add area-level location to user-generated content without exact addresses

Common errors and how to fix them

Empty city for remote coordinates

Sparse areas and open ocean have no locality.

Fix: Fall back to principalSubdivision or countryName.

Confusing city vs locality

The two fields differ subtly by region.

Fix: Prefer `city` for display, falling back to `locality` when city is empty.

BigDataCloud Reverse Geocode API — frequently asked questions

Is BigDataCloud reverse geocoding free?

The client-side reverse-geocode-to-city endpoint is free and unlimited with no API key. Their other APIs require a key and have quotas.

Can I call it directly from the browser?

Yes — it is designed for exactly that, to be paired with the browser Geolocation API, which is why it is unlimited and key-free.

Does it return street addresses?

No, it resolves to city and locality level rather than a street address. For full address geocoding use Nominatim.

What is localityInfo?

A structured breakdown of every administrative level from continent down to neighbourhood, which is useful when you need a specific tier rather than a formatted string.

Tools that pair with this API

BigDataCloud Reverse Geocode is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.