
Footstep Geocoding API
The Geocoding API converts between text and coordinates. Search for an address and get back coordinates, or send coordinates and get back an address. Built entirely on open data (OpenStreetMap, Who’s on First, OpenAddresses, and GeoNames) with no user tracking.Design philosophy
Every request is one line. Send text, get coordinates:Response conventions
Every geocoding result uses the same shape:| Field | What it tells you |
|---|---|
coordinates | WGS 84 latitude and longitude |
label | Pre-formatted display string |
confidence | 0 to 1. How well this result matched your query |
layer | What type of place this is (see below) |
source | Which dataset this result came from |
Layers
Filter results by type using thelayers parameter:
| Layer | Description | Example |
|---|---|---|
venue | Named places: businesses, landmarks, parks | Buckingham Palace |
address | Street addresses | 10 Downing Street |
street | Street names without house numbers | Oxford Street |
neighbourhood | Neighbourhoods and suburbs | Shoreditch |
locality | Cities and towns | London |
county | Counties and districts | Greater London |
region | States, provinces, regions | England |
country | Countries | United Kingdom |
Data sources
All data is open and auditable. No proprietary black box.| Source | What it provides |
|---|---|
| OpenStreetMap | Venues, addresses, streets, and place boundaries worldwide |
| Who’s on First | Administrative boundaries (cities, regions, countries) with stable identifiers |
| OpenAddresses | Machine-readable street addresses from authoritative government sources |
| GeoNames | Global gazetteer of populated places and geographic features |
Endpoints
| Endpoint | Description |
|---|---|
GET /search | Text to coordinates. Search for any address, place, or landmark |
GET /structured-search | Text to coordinates. Search by address components (street, city, postcode) |
GET /reverse | Coordinates to address. Find what’s at a given lat/lng |
GET /autocomplete | Typeahead suggestions as the user types |
POST /batch | Geocode up to 1,000 addresses in a single request |
GET /parse | Break a free-text address into structured components |
When to use which
| You want to… | Use |
|---|---|
| Build a search box with suggestions | Autocomplete |
| Geocode a known address | Search |
| Geocode address fields from a database | Structured search |
| Find what’s at a map pin | Reverse |
| Process a spreadsheet of addresses | Batch |
| Clean messy address data before geocoding | Parse → Structured search |
Focus and boundary
Two shared parameters work across search and autocomplete:focus.point biases results towards a location without excluding distant matches. Useful when “Springfield” should prefer the one near your user, not the largest one globally.
boundary.country restricts results to one or more countries. Pass ISO 3166-1 alpha-3 codes:
Authentication
All endpoints require an API key passed via thex-api-key header. See the authentication guide for details.