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.
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 'https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=31.52&longitude=74.35&localityLanguage=en'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);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()){
"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": "LahoParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
latitude | float | Required | Latitude in decimal degrees. 31.52 |
longitude | float | Required | Longitude in decimal degrees. 74.35 |
localityLanguage | string | Optional | Two-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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
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.