Popeyes API endpoint
Returns Popeyes restaurants near a latitude/longitude. Each restaurant carries its internal id and numeric store id (the value /popeyes/menu takes), full address with coordinates, phone, the operating franchise group, amenity flags (breakfast, delivery, drive-thru, playground, takeout, wifi, halal, dark kitchen) and the full published week of hours for dining room, drive-thru, delivery and curbside separately. A coordinate with no nearby Popeyes returns an empty list rather than an error.
/popeyes/locationsQuery parameters:
latitude (required) — search center latitude, e.g. 40.7128.longitude (required) — search center longitude, e.g. -74.0060.radius (optional, default 8000) — search radius in meters, 1-50000.max_results (optional, default 20) — maximum restaurants to return, 1-50.market (optional, default US) — restaurant market: US or CA.Response includes restaurants[], count, total_count, has_more, source_url, and fetched_at. Each restaurant has id, store_id (the value /popeyes/menu takes), name, address, address2, city, state, postal_code, country, phone, latitude, longitude, operator, amenity flags (has_breakfast, has_delivery, has_drive_thru, has_playground, has_takeout, has_wifi, is_halal, is_dark_kitchen), hours (dining_room, drive_thru, delivery, curbside, each a per-weekday open/close list), and website_url. A coordinate with no nearby Popeyes returns an empty restaurants list rather than an error.
market: CA searches Canadian restaurants instead of US ones — coordinates should be within Canada for useful results. Other international Popeyes markets are not supported; they are operated by independent franchisees on a different platform.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| store_id | 20 | |
| name | 20 | “109 McCaul Street, Units 26 & 27 Toronto, Ontario M5T 2W7 -…” and 19 other values |
| address | 20 | |
| city | 20 | Toronto in all 20 |
| state | 20 | ON in all 20 |
| postal_code | 20 | |
| country | 20 | Canada in all 20 |
| phone | 20 | 4,162,037,098 to 14,163,665,204, median 4,165,513,646 |
| latitude | 20 | |
| longitude | 20 | |
| operator | 20 | “1000124702 ONTARIO INCORPORATED” and 19 other values |
| has_breakfast | 20 | true in 0 of 20 |
| has_delivery | 20 | true in 20 of 20 |
| has_drive_thru | 20 | true in 0 of 20 |
| has_playground | 20 | true in 0 of 20 |
| has_takeout | 20 | true in 19 of 20 |
| has_wifi | 20 | true in 0 of 20 |
| is_halal | 20 | true in 0 of 20 |
| is_dark_kitchen | 20 | true in 0 of 20 |
| hours | 20 | |
| website_url | 20 | popeyes.com |
| address2 | 4 | “M4Y 1Z4” and 3 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| latitude | number | Yes | Search center latitude | 40.7128 | |
| longitude | number | Yes | Search center longitude | -74.006 | |
| radius | integer | No | Search radius in meters, 1-50000 (default 8000) | 8000 | |
| max_results | integer | No | Maximum restaurants to return, 1-50 (default 20) | 20 | |
| market | string | No | Restaurant market: `US` (default) or `CA` | US | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/popeyes/locations?latitude=40.7128&longitude=-74.006" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"restaurants": [
{
"id": "restaurant_242928",
"store_id": "14156",
"name": "111 Fulton St New York, New York 10038 - USA",
"address": "111 Fulton St",
"city": "New York",
"state": "NY",
"postal_code": "10038",
"country": "USA",
"phone": "929-579-0553",
"latitude": 40.709873,
"longitude": -74.006601,
"has_breakfast": false,
"has_delivery": true,
"has_drive_thru": false,
"has_playground": false,
"has_takeout": true,
"has_wifi": false,
"is_halal": false,
"is_dark_kitchen": false,
"hours": {
"dining_room": [
{
"day": "monday",
"open": "11:00:00",
"close": "22:00:00"
}
]
},
"website_url": "https://www.popeyes.com/store-locator/store/restaurant_242928"
}
],
"count": 1,
"total_count": 51,
"has_more": true,
"source_url": "https://use1-prod-plk-gateway.rbictg.com/graphql",
"fetched_at": "2026-09-02T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/popeyes.locationsResponseDoc
| 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 | popeyes.LocationsResponse | No | ||||
| data.count | integer | No | 20 | |||
| data.fetched_at | string | No | ||||
| data.has_more | boolean | No | true | |||
| data.restaurants | array | No | Restaurant record, 39 fields: address, address2, city, country, has_breakfast, has_delivery, has_drive_thru, has_playground, has_takeout, has_wifi, hours, id and 11 more. Described under Popeyes Location API. | |||
| data.source_url | string | No | ||||
| data.total_count | integer | No | 236 | TotalCount is how many restaurants matched upstream; it can exceed Count when more results exist than max_results asked for. | ||
| 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 |
| 404 | Not Found | #/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/popeyes/locations?latitude=40.7128&longitude=-74.006" \
-H "x-api-key: $CRAWLORA_API_KEY"