Geocoding API
Forward, reverse, structured, autocomplete and batch geocoding on OpenStreetMap data.
How it works
Send an address
Pass any string — street, city, or freeform text.
Plaza geocodes it
Parsed with libpostal, then matched against OpenStreetMap addresses and places.
Get coordinates
A GeoJSON point with a confidence score and the address parts.
See it in action
An example request and its response, drawn on the map.
Who uses this
Teams building with Geocoding API.
Delivery routing
Convert customer addresses to coordinates for last-mile dispatch.
Real estate search
Let users search by address and see listings on a map.
AI agents
Give your agent location awareness with structured geo responses.
5
Endpoints
1,000
Addresses per batch
1
Request per address
What you can build
Example apps powered by Geocoding API.
Store Locator
Geocode input, find nearest stores, show directions.
Address Verification
Validate and normalize shipping addresses at checkout.
Coverage Checker
Check if an address falls within a service area.
Start building
curl -X POST "https://plaza.fyi/api/v1/geocode" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"q": "1600 Pennsylvania Ave, Washington DC"
}'
View endpoints
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/geocode | Forward geocode an address to coordinates |
| POST | /api/v1/geocode/reverse | Reverse geocode coordinates to an address |
| POST | /api/v1/geocode/autocomplete | Autocomplete address suggestions as you type |
| POST | /api/v1/geocode/batch | Geocode up to 1,000 addresses in a single request |
| POST | /api/v1/geocode/structured | Geocode an address split into street, locality, region and postcode |
How it compares
Common questions
Can I cache geocoding results?
Yes. Unlike Google Maps (which prohibits caching in their ToS), Plaza data is ODbL licensed. Cache indefinitely, store in your own database, redistribute with attribution.
How does batch geocoding work?
POST up to 1,000 addresses to /api/v1/geocode/batch and get coordinates for all of them back in one response. Each address counts as one request toward your plan, so a batch of 500 is 500 requests. The batch is a single call against your per-minute rate limit.