Shake Shack API endpoint
Returns Shake Shack locations within a radius of a coordinate, nearest first, using Shake Shack's own Olo-backed ordering API (a separate source from GET /shakeshack/locations, which reads the main site's store directory instead). Each result carries location_id, real-time weekly hours, which fulfillment modes are currently enabled (dine-in, pickup, delivery, curbside, drive-thru, walk-up, drive-up), and Shake Shack's own delivery fee schedule. Pass location_id to GET /shakeshack/menu for that location's full menu.
/shakeshack/nearbyReturns Shake Shack locations within a radius of a coordinate, nearest first. This reads Shake Shack's own Olo-backed ordering API -- a separate, real-time source from /api/v1/shakeshack/locations, which reads the main site's own store directory instead. Use this endpoint (not /api/v1/shakeshack/locations) to find a location_id for /api/v1/shakeshack/menu.
Query parameters:
latitude (required) -- search center latitude.longitude (required) -- search center longitude.radius (optional, default 15) -- search radius in miles, 1-50.limit (optional, default 10) -- maximum locations to return, 1-50.Response includes locations[], count, radius_miles, source_url, and fetched_at. Each location has location_id (pass to /api/v1/shakeshack/menu), name, address (street, city, region, postal_code -- US-only for this source), phone_number, latitude, longitude, distance_miles, timezone, hours[], fulfillment_modes[], is_online_ordering_available, and delivery_fees[].
hours[] is the current rolling week (not a fixed weekly template -- it can shift around holidays), ordered Monday first, each entry with day_of_week, opens, and closes (an interval can cross midnight, e.g. opens 10:00 closes 03:00). fulfillment_modes[] lists which handoff modes are currently enabled at that location: dine_in, pickup, delivery, curbside, drive_thru, drive_up, walk_up. delivery_fees[] is Shake Shack's own in-house delivery fee schedule (amount, subtotal_minimum), independent of any third-party delivery app's own fees.
| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| location_id | 10 | |
| name | 10 | “Theater District” and 9 other values |
| address | 10 | |
| phone_number | 10 | |
| latitude | 10 | |
| longitude | 10 | |
| distance_miles | 10 | 0.19 to 0.75, median 0.49 |
| timezone | 10 | America/New_York in all 10 |
| hours | 10 | median 7 entries |
| fulfillment_modes | 10 | median 2 entries |
| is_online_ordering_available | 10 | true in 9 of 10 |
| delivery_fees | 8 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| latitude | number | Yes | Search center latitude | 40.758 | |
| longitude | number | Yes | Search center longitude | -73.9855 | |
| radius | integer | No | Search radius in miles, 1-50 (default 15) | 15 | |
| limit | integer | No | Maximum locations to return, 1-50 (default 10) | 10 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/shakeshack/nearby?latitude=40.758&longitude=-73.9855&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"locations": [
{
"location_id": 14992,
"name": "Theater District",
"address": {
"street": "691 Eighth Avenue",
"city": "New York",
"region": "NY",
"postal_code": "10036"
},
"phone_number": "(646) 435-0135",
"latitude": 40.7584054,
"longitude": -73.9891734,
"distance_miles": 0.19,
"timezone": "America/New_York",
"hours": [
{
"day_of_week": "Monday",
"opens": "10:00",
"closes": "23:00"
}
],
"fulfillment_modes": [
"delivery",
"dine_in",
"pickup"
],
"is_online_ordering_available": true,
"delivery_fees": [
{
"amount": 1.99,
"subtotal_minimum": 12.01
}
]
}
],
"count": 1,
"radius_miles": 15,
"source_url": "https://ssma24.com/v3.0/locations?lat=40.758&lng=-73.9855&radius=15",
"fetched_at": "2026-09-04T12:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/shakeshack.nearbyResponseDoc
| 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.NearbyResponse | No | ||||
| data.count | integer | No | 10 | |||
| data.fetched_at | string | No | ||||
| data.locations | array | No | ||||
| data.locations[].address | shakeshack.NearbyAddress | No | ||||
| data.locations[].address.city | string | No | New York | |||
| data.locations[].address.postal_code | string | No | 10036 | |||
| data.locations[].address.region | string | No | NY | |||
| data.locations[].address.street | string | No | 691 Eighth Avenue | |||
| data.locations[].delivery_fees | array | No | ||||
| data.locations[].delivery_fees[].amount | number | No | 1.99 | |||
| data.locations[].delivery_fees[].subtotal_minimum | number | No | 12.01 | |||
| data.locations[].distance_miles | number | No | 0.19 | |||
| data.locations[].fulfillment_modes | array | No | FulfillmentModes are the handoff modes this location currently has enabled, e.g. "dine_in", "pickup", "delivery", "curbside", "drive_thru", "walk_up". | |||
| data.locations[].hours | array | No | Hours is the current rolling week, Monday-first. | |||
| data.locations[].hours[].closes | string | No | 23:00 | |||
| data.locations[].hours[].day_of_week | string | No | Monday | |||
| data.locations[].hours[].opens | string | No | 10:00 | |||
| data.locations[].is_online_ordering_available | boolean | No | ||||
| data.locations[].latitude | number | No | 40.7584054 | |||
| data.locations[].location_id | integer | No | 14992 | |||
| data.locations[].longitude | number | No | -73.9891734 | |||
| data.locations[].name | string | No | Theater District | |||
| data.locations[].phone_number | string | No | (646) 435-0135 | |||
| data.locations[].timezone | string | No | America/New_York | |||
| data.radius_miles | integer | No | 15 | |||
| 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/shakeshack/nearby?latitude=40.758&longitude=-73.9855&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"