TacoBell API endpoint
Returns the items in one Taco Bell US menu category, each with its product code, name, price, calorie count, product and food type, image, and flags for whether it is customizable, has a meatless variant, and is currently available in store. Category slugs come from GET /taco-bell/categories, and the endpoint accepts either the bare slug (`tacos`) or the full path form (`/food/tacos`). Taco Bell is one of the few brands publishing both price and calories in the same payload.
/taco-bell/menuQuery parameters:
category (required) — category slug from /api/v1/taco-bell/categories. Accepts either the bare slug (tacos) or the full path form (/food/tacos).An unknown category returns a 503 rather than an empty list: a real Taco Bell category always has products, so zero parsed items means an unknown slug or page drift, and neither is served as a successful empty menu.
Response includes category, items[], count, source_url, and fetched_at. Each item has code, name, price (value, currency, formatted), calories, calories_text, product_type, food_type, item_type, category, image_url, modifiable, has_meatless, and available_in_store.
| Field | Filled in, of 13 checked | Values in the sample |
|---|---|---|
| code | 13 | |
| name | 13 | “Cantina Chicken Crispy Taco” and 12 other values |
| price | 13 | |
| calories | 13 | 170 to 480, median 240 |
| calories_text | 13 | Cal in all 13 |
| product_type | 13 | Standard (11), Combo (2) |
| food_type | 13 | Sellable_food (11), Sellable_normal_combo (2) |
| item_type | 13 | Product (11), ComboProduct (2) |
| category | 13 | tacos (7), specialties (3), deals-and-combos (2) and 1 more |
| image_url | 13 | tacobell.com |
| modifiable | 13 | true in 13 of 13 |
| has_meatless | 13 | true in 2 of 13 |
| available_in_store | 13 | true in 13 of 13 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| category | string | Yes | Category slug from /taco-bell/categories | tacos | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/taco-bell/menu?category=tacos" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"category": "tacos",
"items": [
{
"code": "24200",
"name": "Naked Chicken Chalupa",
"price": {
"value": 5.99,
"currency": "USD",
"formatted": "$5.99"
},
"calories": 430,
"product_type": "Standard",
"food_type": "Sellable_food",
"item_type": "Product",
"category": "specialties",
"image_url": "https://www.tacobell.com/images/24200_naked_chicken_chalupa",
"modifiable": true,
"has_meatless": false,
"available_in_store": true
}
],
"count": 16,
"source_url": "https://www.tacobell.com/food/tacos",
"fetched_at": "2026-08-31T16:40:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/tacobell.menuResponseDoc
| 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.MenuResponse | No | ||||
| data.category | string | No | tacos | |||
| data.count | integer | No | 16 | |||
| data.fetched_at | string | No | ||||
| data.items | array | No | ||||
| data.items[].available_in_store | boolean | No | true | |||
| data.items[].calories | integer | No | 430 | |||
| data.items[].calories_text | string | No | 430 Cal | |||
| data.items[].category | string | No | tacos | |||
| data.items[].code | string | No | CB-1234 | |||
| data.items[].food_type | string | No | ||||
| data.items[].has_meatless | boolean | No | false | HasMeatless marks an item with a meatless variant available. | ||
| data.items[].image_url | string | No | ||||
| data.items[].item_type | string | No | ||||
| data.items[].modifiable | boolean | No | true | Modifiable marks an item Taco Bell allows customizing. | ||
| data.items[].name | string | No | Naked Chicken Chalupa | |||
| data.items[].price | tacobell.Money | No | ||||
| data.items[].price.currency | string | No | USD | |||
| data.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.items[].price.value | number | No | 5.99 | |||
| data.items[].product_type | string | No | ||||
| 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 |
| 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/menu?category=tacos" \
-H "x-api-key: $CRAWLORA_API_KEY"