TacoBell API endpoint
Returns one Taco Bell US menu item in full: product code, name, description, price, rounded and unrounded calorie counts, every published image rendition, and cross-sell/upsell references. The distinguishing part is `customizations` -- the option groups the item accepts (proteins, included ingredients, add-ons, sauces, shells, upgrades, and Supreme/Fresco add and remove sets), each option carrying its own calorie delta and add-on price. Calorie deltas can be negative, since the Fresco style replaces sauces. Slugs come from GET /taco-bell/menu, and both the bare slug and the full path form are accepted.
/taco-bell/productReturns one Taco Bell US menu item in full. /taco-bell/menu lists a category's items with price and calories; this endpoint is the item's own detail page — description, every published image rendition, cross-sell references, and above all the customization matrix.
customizations is what this endpoint exists for. Each group is one set of choices the item accepts, and every option inside carries its own calorie delta and add-on price:
protein_options — swappable proteins.include_options — the ingredients the item ships with, which a caller can remove.addon_options — extras that can be added, each priced.sauce_options — sauces and dressings.shell_options — shell and tortilla swaps, where the item offers them.upgrade_options — paid upgrades such as a larger size or premium protein.supreme_add / supreme_remove — what "make it Supreme" adds and takes away.fresco_add / fresco_remove — the same for Fresco style.Groups the item does not offer are simply absent, and group order is stable across calls. Calorie deltas are signed: Fresco style replaces dairy and mayo-based sauces with pico de gallo and subtracts calories, so a negative value is correct, not a parsing error.
Calories are given twice throughout. calories is the rounded figure Taco Bell displays; accurate_calories is its unrounded figure, which is what to use when summing a build-your-own item across many options.
For the full nutrition panel — fats, sodium, carbohydrates, protein, vitamins, allergens — use /api/v1/taco-bell/nutrition. nutrition_label_url on this response points at the same label that endpoint reads.
Query parameters:
category (required) — category slug from /api/v1/taco-bell/categories, e.g. burritos. The full path form (/food/burritos) is also accepted.product (required) — product slug, the last segment of a /food/{category}/{product} URL, e.g. burrito-supreme. A pasted full path is accepted too.An unknown product slug returns a 404 rather than an empty record: Taco Bell renders the page shell with a null product instead of erroring, so the endpoint detects that and reports not-found.
Response includes code, name, description, category, price, calories, accurate_calories, images[], customizations[], related[], nutrition_label_url, modifiable, has_meatless, available_in_store, vegetarian_friendly, url, source_url, and fetched_at.
| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| group | 5 | “protein_options” and 4 other values |
| options | 5 | median 7 entries |
| count | 5 | 4 to 10, median 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| category | string | Yes | Category slug from /taco-bell/categories | burritos | |
| product | string | Yes | Product slug, the last segment of a /food/{category}/{product} URL | burrito-supreme | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/taco-bell/product?category=burritos&product=burrito-supreme" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"code": "22201",
"name": "Burrito Supreme®",
"description": "A warm flour tortilla filled with seasoned beef, refried beans, diced tomatoes & onions, reduced-fat sour cream and cheese.",
"category": "burritos",
"price": {
"value": 5.69,
"currency": "USD",
"formatted": "$5.69"
},
"calories": 390,
"accurate_calories": 392.9079,
"images": [
{
"url": "https://www.tacobell.com/images/22201_burrito_supreme_640x650.jpg",
"type": "PRIMARY",
"format": "640x650"
}
],
"customizations": [
{
"group": "addon_options",
"options": [
{
"code": "2111",
"name": "Pico De Gallo",
"calories": 0,
"accurate_calories": 4.0419,
"price": {
"value": 0.8,
"currency": "USD",
"formatted": "$0.80"
},
"image_url": "https://www.tacobell.com/images/2111_new_pico_de_gallo_269x269.jpg",
"available_in_store": true
}
],
"count": 12
}
],
"related": [
{
"code": "22963",
"name": "Grilled Cheese Burrito",
"reference_type": "CROSSELLING",
"calories": 690,
"url": "https://www.tacobell.com/food/burritos/grilled-cheese-burrito"
}
],
"nutrition_label_url": "https://www.nutritionix.com/label/popup/item/10197/166727",
"modifiable": true,
"has_meatless": false,
"available_in_store": true,
"vegetarian_friendly": false,
"url": "https://www.tacobell.com/food/burritos/burrito-supreme",
"source_url": "https://www.tacobell.com/food/burritos/burrito-supreme",
"fetched_at": "2026-08-31T09:12:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/tacobell.productResponseDoc
| 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.ProductResponse | No | ||||
| data.accurate_calories | number | No | 392.9079 | AccurateCalories is the unrounded figure behind `calories`. | ||
| data.available_in_store | boolean | No | true | |||
| data.calories | integer | No | 390 | |||
| data.category | string | No | burritos | |||
| data.code | string | No | 22201 | |||
| data.customizations | array | No | Customizations are the option groups this item accepts, each with per-option calories and prices. Empty for a non-modifiable item. | |||
| data.customizations[].count | integer | No | 9 | |||
| data.customizations[].group | string | No | sauce_options | |||
| data.customizations[].options | array | No | ||||
| data.customizations[].options[].accurate_calories | number | No | 4.0419 | AccurateCalories is Taco Bell's unrounded figure; `calories` is the rounded number the site displays. | ||
| data.customizations[].options[].available_in_store | boolean | No | true | |||
| data.customizations[].options[].calories | integer | No | 0 | |||
| data.customizations[].options[].code | string | No | 2111 | |||
| data.customizations[].options[].description | string | No | ||||
| data.customizations[].options[].image_url | string | No | ||||
| data.customizations[].options[].name | string | No | Pico De Gallo | |||
| data.customizations[].options[].price | tacobell.Money | No | ||||
| data.customizations[].options[].price.currency | string | No | USD | |||
| data.customizations[].options[].price.formatted | string | No | $5.99 | Formatted is Taco Bell's own rendering, kept because it carries the upstream's rounding/symbol conventions. | ||
| data.customizations[].options[].price.value | number | No | 5.99 | |||
| data.description | string | No | ||||
| data.fetched_at | string | No | ||||
| data.has_meatless | boolean | No | false | |||
| data.images | array | No | ||||
| data.images[].format | string | No | 640x650 | |||
| data.images[].type | string | No | PRIMARY | |||
| data.images[].url | string | No | ||||
| data.modifiable | boolean | No | true | |||
| data.name | string | No | Burrito Supreme® | |||
| data.nutrition_label_url | string | No | NutritionLabelURL is the full nutrition-facts label Taco Bell links for this item. /taco-bell/nutrition reads it. | |||
| data.price | tacobell.Money | No | ||||
| data.price.currency | string | No | USD | |||
| data.price.formatted | string | No | $5.99 | Formatted is Taco Bell's own rendering, kept because it carries the upstream's rounding/symbol conventions. | ||
| data.price.value | number | No | 5.99 | |||
| data.related | array | No | ||||
| data.related[].calories | integer | No | 690 | |||
| data.related[].code | string | No | 22963 | |||
| data.related[].image_url | string | No | ||||
| data.related[].name | string | No | Grilled Cheese Burrito | |||
| data.related[].price | tacobell.Money | No | ||||
| data.related[].price.currency | string | No | USD | |||
| data.related[].price.formatted | string | No | $5.99 | Formatted is Taco Bell's own rendering, kept because it carries the upstream's rounding/symbol conventions. | ||
| data.related[].price.value | number | No | 5.99 | |||
| data.related[].reference_type | string | No | CROSSELLING | |||
| data.related[].url | string | No | ||||
| data.source_url | string | No | ||||
| data.url | string | No | ||||
| data.vegetarian_friendly | boolean | No | false | |||
| 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/product?category=burritos&product=burrito-supreme" \
-H "x-api-key: $CRAWLORA_API_KEY"