Use case
Coordinates in, city name out
Send one position or a batch, and get the city with its region, country, time zone, and population. A location lookup costs the same as a city search, and we do not store the positions you send.
30,000 requests a month free, with commercial use. No card needed.
- 918,201 Names
- 13 Languages
- 30,000 Free requests a month
Live API
Pick a city, and the console sends a location lookup for a position near it.
/v1/cities/reverse curl "https://api.onde.earth/v1/cities/reverse?latitude=35.02&longitude=135.75" \
-H "Authorization: Bearer $ONDE_KEY" const url = 'https://api.onde.earth/v1/cities/reverse'
const query = new URLSearchParams({ latitude: '35.02', longitude: '135.75', key: 'onde_pk_...' })
const response = await fetch(`${url}?${query}`)
const { data } = await response.json() const url = 'https://api.onde.earth/v1/cities/reverse'
const query = new URLSearchParams({ latitude: '35.02', longitude: '135.75' })
const response = await fetch(`${url}?${query}`, {
headers: { Authorization: `Bearer ${process.env.ONDE_KEY}` }
})
const { data } = await response.json() import os
import requests
response = requests.get(
"https://api.onde.earth/v1/cities/reverse",
params={"latitude": "35.02", "longitude": "135.75"},
headers={"Authorization": f"Bearer {os.environ['ONDE_KEY']}"},
)
data = response.json()["data"] {
"data": {
"id": "city_39sy1dm2dj",
"name": "Kyoto",
"localName": "京都市",
"type": "city",
"parentCityId": null,
"country": {
"code": "JP",
"name": "Japan"
},
"region": {
"id": "region_yjwfrtj0fe",
"isoCode": "JP-26",
"name": "Kyoto"
},
"coordinates": {
"latitude": 35.02107,
"longitude": 135.75385
},
"population": 1463723,
"timeZone": "Asia/Tokyo",
"isCapital": false,
"disputed": false,
"distanceKm": 0.37023042894617736
},
"meta": {
"dataset": "2026-11-17"
}
} Stop paying for addresses you throw away
Address APIs return a full street address and leave the city to you. If you only need the city, to prefill a form, show local prices, or group users, you pay for data you discard.
-
The city people would name
Onde prefers a large city to a small neighbor town, and a capital or regional seat within 6 km.
-
The price of autocomplete
A reverse lookup counts one request. On 2026-11-03, Stadia charged 20 credits for it and 1 for autocomplete.
-
Batches for big jobs
Send many positions in one request, for fleets, photo libraries, and data imports.
-
Positions stay private
We do not store the positions that you send. Say so in your permission prompt.
-
Results that stay yours
Store each city with its record for as long as you want.
Questions
- Why can the time zone differ from the position?
- You get the time zone of the city. Very close to a zone border, the position can be in a different zone.
- Can the country be wrong near a border?
- Yes. Very close to a border, the result can name the neighboring country.
- What if no city is nearby?
- You get an empty answer, and it counts as one request.
Turn locations into cities
Create a key and send your first position.
- No card needed
- 30,000 requests a month free
- Commercial use on the Free plan
- Store every result for good
- Public key locked to your domains