Shake Shack API endpoint
Returns one Shake Shack store: postal address, coordinates, phone (when published), a Monday-first week of opening hours (omitted for a location that publishes no schedule, seen on venue/kiosk-shaped locations such as inside a stadium), and the order types Shake Shack publishes for it, e.g. "Dine In", "Delivery". Store paths come from GET /shakeshack/locations, either the aliased "location/<slug>" form or the legacy "node/<id>" form -- both resolve to the same record, and the response's own path field always reports the canonical alias. A path with neither shape, or one that does not resolve to a real store page, returns a 404.
/shakeshack/storeReturns one Shake Shack store's detail. Store paths come from /api/v1/shakeshack/locations.
Query parameters:
path (required) -- store path, either the aliased form (e.g. location/meyerland-tx) or the legacy node form (e.g. node/15226), both as returned by /api/v1/shakeshack/locations. Both shapes resolve to the same physical restaurant; the response's own path field always reports the canonical aliased form. A path outside these two shapes, or one that does not resolve to a real store page, returns a 404.Response includes name, address, path, source_url, and fetched_at, with store_id, phone_number, latitude, longitude, hours[], and order_types[] when the page publishes those fields. store_id is the underlying Drupal node id and is omitted when the current page does not expose it. Each hours entry has day_of_week, closed, opens, and closes, ordered Monday first; hours is omitted entirely for a location that publishes no weekly schedule, seen on venue/kiosk-shaped locations such as inside a stadium. phone_number is omitted when Shake Shack does not publish one for that location. order_types lists the fulfillment types Shake Shack publishes for the location, e.g. Dine In, Delivery.
For ordering data (menu, prices, real-time hours and fulfillment availability), see /api/v1/shakeshack/nearby and /api/v1/shakeshack/menu, which read a separate, Olo-backed ordering API rather than this store's own Drupal page.
| Field | Filled in, of 7 checked | Values in the sample |
|---|---|---|
| day_of_week | 7 | “Monday” and 6 other values |
| closed | 7 | true in 0 of 7 |
| opens | 7 | 10:00 in all 7 |
| closes | 7 | 23:00 (5), 00:00 (2) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| path | string | Yes | Store path from a /shakeshack/locations entry | location/meyerland-tx | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/shakeshack/store?path=location%2Fmeyerland-tx" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_id": "51351",
"name": "Meyerland",
"address": {
"line1": "8815 W Loop S",
"city": "Houston",
"region": "TX",
"postal_code": "77096",
"country": "United States"
},
"phone_number": "281-819-8763",
"latitude": 29.6856442,
"longitude": -95.4574726,
"hours": [
{
"day_of_week": "Monday",
"closed": false,
"opens": "10:00",
"closes": "23:00"
}
],
"order_types": [
"Delivery",
"Dine In"
],
"path": "location/meyerland-tx",
"source_url": "https://shakeshack.com/location/meyerland-tx",
"fetched_at": "2026-09-03T17:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/shakeshack.storeResponseDoc
| 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 | shakeshack.StoreResponse | No | ||||
| data.address | shakeshack.StoreAddress | No | ||||
| data.address.city | string | No | Houston | |||
| data.address.country | string | No | United States | |||
| data.address.line1 | string | No | 8815 W Loop S | |||
| data.address.postal_code | string | No | 77096 | |||
| data.address.region | string | No | TX | |||
| data.fetched_at | string | No | ||||
| data.hours | array | No | Hours is Monday-first. Omitted entirely for locations that publish no weekly schedule (seen on venue/kiosk-shaped locations, e.g. inside a stadium). | |||
| data.hours[].closed | boolean | No | false | Closed is true when Shake Shack publishes the day with no open interval. | ||
| data.hours[].closes | string | No | 23:00 | |||
| data.hours[].day_of_week | string | No | Monday | |||
| data.hours[].opens | string | No | 10:00 | |||
| data.latitude | number | No | 29.6856442 | |||
| data.longitude | number | No | -95.4574726 | |||
| data.name | string | No | Meyerland | |||
| data.order_types | array | No | OrderTypes are the fulfillment types Shake Shack publishes for this location, e.g. "Dine In", "Delivery". | |||
| data.path | string | No | Path is the canonical page path this record resolved to, e.g. "location/meyerland-tx" -- present even when the requested path was the legacy "node/<nid>" form of the same location. | |||
| data.phone_number | string | No | 281-819-8763 | |||
| data.source_url | string | No | ||||
| data.store_id | string | No | 51351 | StoreID is the underlying Drupal node id, e.g. "51351" from /node/51351. Present whenever the page's own settings expose it. | ||
| 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/shakeshack/store?path=location%2Fmeyerland-tx" \
-H "x-api-key: $CRAWLORA_API_KEY"