Errors
Error body
Errors are returned with an HTTP status code and a JSON body.
{ "code": "...", "message": "..." }
code is a stable identifier for programs, message is a description for people. Base your logic on the status code and code, not on the text of message.
Status codes
| Status | Meaning |
|---|---|
400 |
countrycodes is missing or invalid on /search, or a country is not supported |
401 |
The API key is missing, unknown, revoked or expired |
403 |
The request comes from outside the key’s IP rules |
429 |
The rate limit is exceeded. See Rate limits |
503 |
The service is temporarily unavailable. Try again later |
A 400 for a missing countrycodes refers to the documentation. For a country that is not supported yet, you can request it.
Partial results
A search across several countries, or across a country that consists of several shards, is sent to all shards involved. Each shard has a fixed timeout. If a shard does not respond in time, you still get the results of the others, and the response carries the X-Partial-Result header with the missing shards.
X-Partial-Result: de-south
The response body keeps the normal Nominatim format. If completeness matters, check for this header and retry the request.