Geocoding
Convert human-readable addresses into geographic coordinates (geocoding) and convert coordinates back into addresses (reverse geocoding). Powered by OpenStreetMap via the Nominatim API.
Overview
Use Cases
- Place pins on a map from a user-supplied address
- Convert GPS coordinates to a readable address for display
- Validate and normalise addresses
- Power location-aware search and filtering features
Features
API Endpoints
Geocode Address
Converts a free-text address into latitude and longitude coordinates.
https://api.requiems.xyz/v1/places/geocode
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| address | string |
Required | The address to geocode (street, city, country, or any combination) |
Try it out
Live DemoRequest
The address to geocode (street, city, country, or any combination)
Response Fields
| Field | Type | Description |
|---|---|---|
| address | string |
Full display name of the matched location |
| city | string |
City or town of the matched location |
| country | string |
ISO 3166-1 alpha-2 country code (uppercase) |
| lat | number |
Latitude of the matched location |
| lon | number |
Longitude of the matched location |
Code Examples
curl "https://api.requiems.xyz/v1/places/geocode?address=1600+Pennsylvania+Ave+NW" \
-H "requiems-api-key: YOUR_API_KEY"
import requests
url = "https://api.requiems.xyz/v1/places/geocode"
headers = {"requiems-api-key": "YOUR_API_KEY"}
response = requests.get(url, params={"address": "1600 Pennsylvania Ave NW"}, headers=headers)
data = response.json()
print(data["data"]["lat"], data["data"]["lon"])
const params = new URLSearchParams({ address: '1600 Pennsylvania Ave NW' });
const response = await fetch(
`https://api.requiems.xyz/v1/places/geocode?${params}`,
{ headers: { 'requiems-api-key': 'YOUR_API_KEY' } }
);
const data = await response.json();
console.log(data.data.lat, data.data.lon);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/places/geocode')
uri.query = URI.encode_www_form(address: '1600 Pennsylvania Ave NW')
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
data = JSON.parse(response.body)
puts "#{data['data']['lat']}, #{data['data']['lon']}"
Error Responses
No results found for the given address.
The geocoding service is temporarily unavailable.
The address parameter is missing.
Reverse Geocode
Converts geographic coordinates into a human-readable address.
https://api.requiems.xyz/v1/places/reverse-geocode
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| lat | number |
Required | Latitude of the location (-90 to 90) |
| lon | number |
Required | Longitude of the location (-180 to 180) |
Try it out
Live DemoRequest
Latitude of the location (-90 to 90)
Longitude of the location (-180 to 180)
Response Fields
| Field | Type | Description |
|---|---|---|
| lat | number |
Latitude as provided in the request |
| lon | number |
Longitude as provided in the request |
| address | string |
Full display name of the location at the given coordinates |
| city | string |
City or town at the given coordinates |
| country | string |
ISO 3166-1 alpha-2 country code (uppercase) |
Code Examples
curl "https://api.requiems.xyz/v1/places/reverse-geocode?lat=38.8977&lon=-77.0365" \
-H "requiems-api-key: YOUR_API_KEY"
import requests
url = "https://api.requiems.xyz/v1/places/reverse-geocode"
headers = {"requiems-api-key": "YOUR_API_KEY"}
response = requests.get(url, params={"lat": 38.8977, "lon": -77.0365}, headers=headers)
data = response.json()
print(data["data"]["address"])
const params = new URLSearchParams({ lat: 38.8977, lon: -77.0365 });
const response = await fetch(
`https://api.requiems.xyz/v1/places/reverse-geocode?${params}`,
{ headers: { 'requiems-api-key': 'YOUR_API_KEY' } }
);
const data = await response.json();
console.log(data.data.address);
require 'net/http'
require 'json'
uri = URI('https://api.requiems.xyz/v1/places/reverse-geocode')
uri.query = URI.encode_www_form(lat: 38.8977, lon: -77.0365)
request = Net::HTTP::Get.new(uri)
request['requiems-api-key'] = 'YOUR_API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
data = JSON.parse(response.body)
puts data['data']['address']
Error Responses
No address found for the given coordinates.
The geocoding service is temporarily unavailable.
lat or lon is missing or out of range (lat: -90..90, lon: -180..180).