Chipotle API endpoint
Returns Chipotle's raw-ingredient content pages -- sourcing story, marketing copy, imagery -- and the per-item recipe breakdown. ingredients[] has one entry per raw ingredient (Avocado, Yellow Onion, ...), each with its facts/sourcing copy and the menu_item_ids it appears in. ingredient_groups[] is the reverse view: one entry per recipe category (proteins, rice and beans, ...) listing each item's exact ingredient_keys, joinable against ingredients[].key for the human-readable name. Nothing else in this family exposes either ingredient content or recipe-level composition.
/chipotle/ingredientsingredients[] has one entry per raw ingredient (Avocado, Yellow Onion, Chicken, ...) — Chipotle's own sourcing-story marketing copy (facts_title/facts_subtitle/facts_description, sub_description), imagery, and menu_item_ids[], the items that ingredient appears in. Image URLs come back relative to Chipotle's storefront (e.g. /content/dam/chipotle/menu/ingredients/avocado/panel/...) and are resolved to absolute URLs before being returned.
ingredient_groups[] is the reverse view: one entry per recipe category (proteins, rice and beans, ...) listing every item in that category with its exact ingredient_keys[] — the raw components that make it up (e.g. Chicken, CMG-1, is bkpep, chic, cchil, cumi, vine, garl, oreg, salt, soil, wate). Join those keys against ingredients[].key for the human-readable ingredient name. Nothing else in this family exposes ingredient content or recipe-level composition — /api/v1/chipotle/menu and /api/v1/chipotle/restaurant/menu list orderable items and prices, and /api/v1/chipotle/menu/metadata lists nutrition and dietary tags, but neither breaks an item down into its actual ingredients.
Query parameters:
channel (optional) — the ordering surface. One of web, web-mobile. Default web-mobile. Matching is case-insensitive; any other value is rejected as invalid.region (optional) — the country catalog. One of US, CA. Default US. Any other value is rejected as invalid.Response includes channel, region, ingredients[], count, ingredient_groups[], source_url, and fetched_at.
| Field | Filled in, of 53 checked | Values in the sample |
|---|---|---|
| key | 53 | |
| title | 53 | “Avocado” and 52 other values |
| facts_title | 49 | FACT in all 49 |
| facts_subtitle | 48 | “Avocadabra” and 47 other values |
| facts_description | 47 | median 324 characters |
| sub_description | 51 | median 360 characters |
| thumbnail_url | 53 | chipotle.com |
| background_image_url | 53 | chipotle.com |
| background_image_url_mobile | 53 | chipotle.com |
| menu_item_ids | 53 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| channel | string | No | Ordering surface. One of web, web-mobile. Default web-mobile. Allowed values: web, web-mobile. | web-mobile | |
| region | string | No | Country catalog. One of US, CA. Default US. Allowed values: US, CA. | US | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chipotle/ingredients?channel=web®ion=US" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"channel": "web-mobile",
"region": "US",
"ingredients": [
{
"key": "avoc",
"title": "Avocado",
"facts_title": "FACT",
"facts_subtitle": "Avocadabra",
"facts_description": "Avocados are the guac to our chips...",
"sub_description": "We use only Hass avocados because they're the creamiest...",
"thumbnail_url": "https://www.chipotle.com/content/dam/chipotle/menu/ingredients/avocado/grid/avocado.png",
"background_image_url": "https://www.chipotle.com/content/dam/chipotle/menu/ingredients/avocado/panel/avocado-desktop-2x1.jpg",
"menu_item_ids": [
"CMG-1003",
"CMG-1015",
"CMG-5301"
]
}
],
"count": 53,
"ingredient_groups": [
{
"title": "proteins",
"items": [
{
"item_id": "CMG-1",
"ingredient_keys": [
"bkpep",
"chic",
"cchil",
"cumi",
"vine",
"garl",
"oreg",
"salt",
"soil",
"wate"
]
}
]
}
],
"source_url": "https://services.chipotle.com/menu-metadata/v1/menu-metadata/ingredients?channel=web-mobile®ion=US",
"fetched_at": "2026-09-01T10:20:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chipotle.ingredientsResponseDoc
| 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 | chipotle.IngredientsResponse | No | ||||
| data.channel | string | No | web-mobile | |||
| data.count | integer | No | 53 | |||
| data.fetched_at | string | No | ||||
| data.ingredient_groups | array | No | ||||
| data.ingredient_groups[].items | array | No | ||||
| data.ingredient_groups[].items[].ingredient_keys | array | No | bkpep,chic,cchil | |||
| data.ingredient_groups[].items[].item_id | string | No | CMG-1 | |||
| data.ingredient_groups[].title | string | No | proteins | |||
| data.ingredients | array | No | ||||
| data.ingredients[].background_image_url | string | No | ||||
| data.ingredients[].background_image_url_mobile | string | No | ||||
| data.ingredients[].facts_description | string | No | ||||
| data.ingredients[].facts_subtitle | string | No | Avocadabra | |||
| data.ingredients[].facts_title | string | No | FACT | |||
| data.ingredients[].key | string | No | avoc | Key is the short code MenuMetadataItem.DietaryTags-style codes and IngredientGroupItem.IngredientKeys reference this ingredient by. | ||
| data.ingredients[].menu_item_ids | array | No | CMG-1003,CMG-1015 | MenuItemIDs are the items this ingredient appears in, joinable against /chipotle/menu or /chipotle/restaurant/menu. | ||
| data.ingredients[].sub_description | string | No | ||||
| data.ingredients[].thumbnail_url | string | No | ||||
| data.ingredients[].title | string | No | Avocado | |||
| data.region | string | No | US | |||
| 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/chipotle/ingredients?channel=web®ion=US" \
-H "x-api-key: $CRAWLORA_API_KEY"