FiveGuys API endpoint
Returns one level of Five Guys' US restaurant directory: the 50 states at the root, one state's cities when path is a state (e.g. `il`), and that city's restaurants when path is a city (e.g. `il/chicago`). Each child carries the path to pass back as this endpoint's `path`, and a `location_count` of how many restaurants sit under it. At the deepest level children are restaurants themselves (`is_location` true) -- pass their path to GET /fiveguys/store for the full profile. Use this to enumerate or browse locations; use GET /fiveguys/search or /fiveguys/nearby to find them by query or coordinate instead.
/fiveguys/directoryBrowses Five Guys' US restaurant directory one level at a time.
The directory has three levels:
path) — the 50 US states, each with how many restaurants it holds.path=il) — that state's cities.path=il/chicago) — that city's restaurants. At this level children are restaurants themselves and carry is_location: true.Each child carries the path to pass straight back into this endpoint's path to go one level deeper. When a child has is_location: true, pass its path to /api/v1/fiveguys/store instead for the full profile.
Use this endpoint to enumerate or browse the whole chain; use /api/v1/fiveguys/search or /api/v1/fiveguys/nearby to find restaurants by free-text location or coordinate instead.
Query parameters:
path (optional) — a directory path from a previous response's children[].path, e.g. il or il/chicago. Omit for the root state index. At most 3 segments; lowercase letters, digits, - and . only.A path that resolves to a page with no directory children returns 404 — if it is a restaurant, use /api/v1/fiveguys/store.
Response includes path, name (the level's own name, e.g. "Illinois"), children[], count, source_url, and fetched_at. Each child has path, url, is_location, plus name and location_count on a state/city child, or geomodifier, city and region on a restaurant child. A restaurant child carries no name because every Five Guys location's published name is the generic brand name — geomodifier ("Medical District") is the field that tells locations apart.
| Field | Filled in, of 34 checked | Values in the sample |
|---|---|---|
| name | 34 | “Evergreen Park” and 33 other values |
| path | 34 | “il/evergreen-park” and 33 other values |
| url | 34 | restaurants.fiveguys.com |
| location_count | 34 | 1 to 5, median 1 |
| is_location | 34 | true in 0 of 34 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| path | string | No | Optional. Directory path from a previous response's children[].path, e.g. \ | il | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/fiveguys/directory" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"path": "il",
"name": "Illinois",
"children": [
{
"name": "Chicago",
"path": "il/chicago",
"url": "https://restaurants.fiveguys.com/il/chicago",
"location_count": 5,
"is_location": false
},
{
"name": "Peoria",
"path": "il/peoria",
"url": "https://restaurants.fiveguys.com/il/peoria",
"location_count": 1,
"is_location": false
}
],
"count": 2,
"source_url": "https://restaurants.fiveguys.com/il",
"fetched_at": "2026-09-05T04:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/fiveguys.directoryResponseDoc
| 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 | fiveguys.DirectoryResponse | No | ||||
| data.children | array | No | ||||
| data.children[].city | string | No | Chicago | City/Region are set only on a store-level child. | ||
| data.children[].geomodifier | string | No | Medical District | Geomodifier is the per-restaurant area/plaza label, set only on a store-level child (e.g. "Medical District"). | ||
| data.children[].is_location | boolean | No | false | IsLocation marks a child that is a restaurant rather than another directory level -- call GET /fiveguys/store with its path. | ||
| data.children[].location_count | integer | No | 38 | LocationCount is how many restaurants sit under this branch, as Yext reports it. Absent at the deepest level, where children are restaurants themselves. | ||
| data.children[].name | string | No | Illinois | Name is the state or city name. Empty on a store-level child, whose name is always the generic brand name -- read Geomodifier there. | ||
| data.children[].path | string | No | il | |||
| data.children[].region | string | No | IL | |||
| data.children[].url | string | No | https://restaurants.fiveguys.com/il | |||
| data.count | integer | No | 34 | |||
| data.fetched_at | string | No | 2026-09-05T12:00:00Z | |||
| data.name | string | No | Illinois | |||
| data.path | string | No | il | |||
| data.source_url | string | No | https://restaurants.fiveguys.com/il | |||
| 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/fiveguys/directory" \
-H "x-api-key: $CRAWLORA_API_KEY"