TacoBell API endpoint
Returns one Taco Bell US restaurant's complete app-ordering catalog by store number: every category, every individually orderable product, AND every combo (kind "bundle") it carries. This is the only endpoint in this family that publishes combos at all -- each one resolved down to its full slot composition (choices[], each with min/max selections and the product codes it defaults to when not customized), not just a name and price. Also returns the store's named ordering windows (dayparts) and, per item, which dayparts it is orderable in. Store numbers come from GET /taco-bell/stores.
/taco-bell/app-menuQuery parameters:
store_number (required) — Taco Bell store number, e.g. 034922. These come from /api/v1/taco-bell/stores. Leading zeros are significant; pass the value back exactly as returned.An unknown store number returns a 404.
Response includes store_number, dayparts[] (omitted if the store publishes none), categories[], category_count, item_count, source_url, and fetched_at. Each category has code, name, and items[]. Each item has code, name, kind (product or bundle), description, price, calories, image_url, and daypart_codes[]. A bundle item additionally carries choices[], each with code, min_selections, max_selections, and default_product_codes[] — resolve a code against this same response's items by their code.
| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| code | 5 | |
| name | 5 | “Happy Hour” and 4 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| store_number | string | Yes | Taco Bell store number, from /taco-bell/stores | 034922 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/taco-bell/app-menu?store_number=034922" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_number": "034922",
"dayparts": [
{
"code": "HappyHour",
"name": "Happy Hour"
},
{
"code": "BalanceOfDay",
"name": "Balance Of Day"
}
],
"categories": [
{
"code": "tacos",
"name": "Tacos",
"items": [
{
"code": "22902",
"name": "Crunchy Taco Supreme",
"kind": "product",
"description": "A crunchy corn shell filled with seasoned beef, lettuce, tomatoes, sour cream and cheddar cheese.",
"price": {
"value": 3.19,
"currency": "USD"
},
"calories": 190,
"image_url": "https://www.tacobell.com/images/22902_crunchy_taco_supreme.png",
"daypart_codes": [
"BalanceOfDay"
]
},
{
"code": "22603",
"name": "3 Crunchy Tacos Supreme Combo",
"kind": "bundle",
"description": "Includes three Crunchy Taco Supremes and a Large fountain drink.",
"price": {
"value": 11.99,
"currency": "USD"
},
"calories": 771,
"image_url": "https://www.tacobell.com/images/22603_crunchy_tacos_supreme_combo.png",
"daypart_codes": [
"BalanceOfDay"
],
"choices": [
{
"code": "22603_22902_1",
"min_selections": 1,
"max_selections": 1,
"default_product_codes": []
},
{
"code": "22603_22101_4",
"min_selections": 3,
"max_selections": 3,
"default_product_codes": [
"22101",
"22101",
"22101"
]
}
]
}
]
}
],
"category_count": 17,
"item_count": 207,
"source_url": "https://api.tacobell.com/app/v1/menu/034922",
"fetched_at": "2026-09-05T02:15:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/tacobell.appMenuResponseDoc
| 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 | tacobell.AppMenuResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].code | string | No | tacos | |||
| data.categories[].items | array | No | ||||
| data.categories[].items[].calories | integer | No | 771 | |||
| data.categories[].items[].choices | array | No | Choices is populated only when kind is "bundle". | |||
| data.categories[].items[].choices[].code | string | No | 22603_22902_1 | |||
| data.categories[].items[].choices[].default_product_codes | array | No | 22101 | |||
| data.categories[].items[].choices[].max_selections | integer | No | 1 | |||
| data.categories[].items[].choices[].min_selections | integer | No | 1 | |||
| data.categories[].items[].code | string | No | 22603 | |||
| data.categories[].items[].daypart_codes | array | No | BalanceOfDay | |||
| data.categories[].items[].description | string | No | ||||
| data.categories[].items[].image_url | string | No | ||||
| data.categories[].items[].kind | string | No | bundle | |||
| data.categories[].items[].name | string | No | 3 Crunchy Tacos Supreme Combo | |||
| data.categories[].items[].price | tacobell.Money | No | ||||
| data.categories[].items[].price.currency | string | No | USD | |||
| data.categories[].items[].price.formatted | string | No | $5.99 | Formatted is Taco Bell's own rendering, kept because it carries the upstream's rounding/symbol conventions. | ||
| data.categories[].items[].price.value | number | No | 5.99 | |||
| data.categories[].name | string | No | Tacos | |||
| data.category_count | integer | No | 17 | |||
| data.dayparts | array | No | ||||
| data.dayparts[].code | string | No | HappyHour | |||
| data.dayparts[].name | string | No | Happy Hour | |||
| data.fetched_at | string | No | ||||
| data.item_count | integer | No | 207 | |||
| data.source_url | string | No | ||||
| data.store_number | string | No | 034922 | |||
| 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/taco-bell/app-menu?store_number=034922" \
-H "x-api-key: $CRAWLORA_API_KEY"