Panera API endpoint
Resolves a free-text address, city, or postal code to coordinates using Panera Bread's own locator geocoder -- the same lookup its site uses to center a cafe search. Returns latitude/longitude plus the resolved city, state, country and formatted address. An address Panera cannot resolve returns a single result with resolved false rather than an error.
/panera/geocodeQuery parameters:
address (required) — free-text address, city, or postal code, e.g. Chicago, IL.Response includes address (echoed back) and results[], each with latitude, longitude, city, state, country, formatted_address, and resolved. An address Panera cannot resolve returns a single result with resolved false rather than an error.
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| latitude | 1 | |
| longitude | 1 | |
| city | 1 | “Chicago” |
| state | 1 | “IL” |
| country | 1 | “US” |
| formatted_address | 1 | |
| resolved | 1 | true in 1 of 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| address | string | Yes | Free-text address, city, or postal code | Chicago, IL | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/panera/geocode?address=Chicago%2C+IL" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"address": "Chicago, IL",
"results": [
{
"latitude": 41.85003,
"longitude": -87.65005,
"city": "Chicago",
"state": "IL",
"country": "US",
"formatted_address": "Chicago, IL US",
"resolved": true
}
],
"count": 1,
"source_url": "https://www-api.panerabread.com/www-api/public/cafe/geocoding?address=Chicago%2C+IL",
"fetched_at": "2026-09-01T12:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/panera.geocodeResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | panera.GeocodeResponse | No | ||||
| data.address | string | No | Chicago, IL | |||
| data.count | integer | No | 1 | |||
| data.fetched_at | string | No | ||||
| data.results | array | No | ||||
| data.results[].city | string | No | Chicago | |||
| data.results[].country | string | No | US | |||
| data.results[].formatted_address | string | No | Chicago, IL US | |||
| data.results[].latitude | number | No | 41.85003 | |||
| data.results[].longitude | number | No | -87.65005 | |||
| data.results[].resolved | boolean | No | true | Resolved is false when Panera could not geocode the address at all (an empty, malformed, or nonsense query). | ||
| data.results[].state | string | No | IL | |||
| data.source_url | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/panera/geocode?address=Chicago%2C+IL" \
-H "x-api-key: $CRAWLORA_API_KEY"