Chipotle API endpoint
Use Crawlora's Chipotle Menu Metadata API to extract supported public Chipotle data as structured JSON. This page includes request parameters, cURL examples, response schema, error behavior, credit cost, and a Playground link for testing before integration.
/chipotle/menu/metadataReturns Chipotle's menu presentation metadata -- the data no other Chipotle endpoint carries. Categories are the menu nav sections (Burrito, Bowl, Salad, ...) with their own description, imagery and the customization sections each offers. Items carry per-item nutrition (calories and portion) and dietary tag codes. Item sections and item groups describe the customization pick-groups and shared item aliases (e.g. cauliflower rice offered as both an entree side and a taco filling). Dietary tag groups are the full tag taxonomy (Plant Based, Lifestyle, I'm Avoiding, ...) that item dietary tag codes join against for a human-readable name and badge. Join on item_id against /chipotle/menu or /chipotle/restaurant/menu for prices; this endpoint has none. Developers commonly use this endpoint for data enrichment, monitoring, research dashboards, internal automation, and agent-native workflows that need repeatable structured public web data. Authentication uses the documented Crawlora headers, and usage is metered with the credit cost shown on this page.
Request parameters are generated from the active endpoint catalog. Required values must be sent before Crawlora can call the upstream public web data source.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| channel | string | No | Ordering surface. One of web, web-mobile. Default web-mobile. Allowed values: web, web-mobile | ||
| region | string | No | Country catalog. One of US, CA. Default US. Allowed values: US, CA | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chipotle/menu/metadata?channel=web®ion=US" \ -H "x-api-key: $CRAWLORA_API_KEY"
Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.
Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.
| Plan | Price | Included credits | Daily cap | Rate limit | Overage |
|---|---|---|---|---|---|
| Free | $0/mo | 2,000 | 500 daily credits | 5/min | No overage |
| Starter | $9/mo | 20,000 | 5,000 daily credits | 15/min | $0.75/1,000 overage credits when enabled |
| Growth | $29/mo | 100,000 | 25,000 daily credits | 45/min | $0.45/1,000 overage credits when enabled |
| Pro | $79/mo | 400,000 | No daily cap | 120/min | $0.30/1,000 overage credits |
| Business | $199/mo | 1,200,000 | No daily cap | 300/min | $0.20/1,000 overage credits |
| Enterprise | $499/mo | 5,000,000 | No daily cap | 1,000/min | $0.12/1,000 overage credits |
This endpoint is executed through Crawlora's managed scraping infrastructure.
Crawlora does not silently return bad data when the upstream page cannot be used.
| Status | Common failure case |
|---|---|
| 400 | Invalid input or missing required parameter |
| 429 | Plan or endpoint rate limit exceeded |
| 500 | Internal execution error |
| 502 | Upstream platform failed, returned unusable HTML, or served a challenge page that could not be resolved |
When possible, Crawlora returns structured error context so your integration can retry, back off, or inspect the request.
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
{
"code": 200,
"msg": "OK",
"data": {
"channel": "web-mobile",
"region": "US",
"categories": [
{
"category_id": "a062f745-2dac-4d39-9437-27f4d047502c",
"type": "default",
"display_name": "Burrito",
"menu_item_type": "Burrito",
"description": "Your choice of freshly grilled meat or sofritas wrapped in a warm flour tortilla...",
"item_sections": [
"RiceContentGroup",
"BeansContentGroup",
"Toppings"
],
"is_rewards_exclusive": false,
"sort_order": 1,
"item_ids": [
"CMG-16",
"CMG-15",
"CMG-8"
]
}
],
"items": [
{
"item_id": "CMG-1",
"thumbnail_url": "https://www.chipotle.com/content/dam/chipotle/menu/menu-items/cmg-6601-chicken/web-mobile/order.png",
"nutrition": [
{
"name": "Calories",
"value": "180",
"unit": "cal"
},
{
"name": "Portion",
"value": "4",
"unit": "oz"
}
],
"dietary_tags": [
"pale",
"keto"
]
}
],
"item_sections": [
{
"name": "AddonContentGroup",
"display_name": "Add-Ons | Always On The Side",
"sort_order": 10,
"item_ids": [
"CMG-5414",
"CMG-5410"
]
}
],
"item_groups": [
{
"name": "CauliRiceEntree",
"display_name": "Mexican Cauliflower Rice",
"default_item_id": "CMG-1036",
"calorie_range_min": 60,
"calorie_range_max": 60
}
],
"dietary_tag_groups": [
{
"group_id": "4c5a70f6-40f5-4a8e-968a-3b69f675ab7f",
"group_name": "Plant Based",
"badge_text": "V",
"badge_color": "#6e7c1b",
"select_type": "single",
"is_active": true,
"tags": [
{
"tag_code": "vege",
"tag_name": "Vegetarian",
"preferred_badge_text": "V",
"sort_order": 1
},
{
"tag_code": "vega",
"tag_name": "Vegan",
"preferred_badge_text": "V+",
"sort_order": 2
}
]
}
],
"source_url": "https://services.chipotle.com/menu-metadata/v1/menu-metadata?channel=web-mobile®ion=US",
"fetched_at": "2026-09-01T10:15:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chipotle.menuMetadataResponseDoc
| 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.MenuMetadataResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].banner_image_url | string | No | ||||
| data.categories[].category_id | string | No | a062f745-2dac-4d39-9437-27f4d047502c | |||
| data.categories[].description | string | No | ||||
| data.categories[].display_name | string | No | Burrito | |||
| data.categories[].is_rewards_exclusive | boolean | No | false | |||
| data.categories[].item_ids | array | No | CMG-16,CMG-15 | |||
| data.categories[].item_sections | array | No | RiceContentGroup,BeansContentGroup | |||
| data.categories[].menu_item_type | string | No | Burrito | |||
| data.categories[].sort_order | integer | No | 1 | SortOrder is this category's position in Chipotle's top-level menu nav. It is a pointer and omitted for categories only reachable as a customization sub-section (e.g. "Chips & Sides"), not in the nav bar itself -- those have no real position to report. | ||
| data.categories[].tags | array | No | ||||
| data.categories[].tags[].type | string | No | rewards | |||
| data.categories[].tags[].value | string | No | Exclusive | |||
| data.categories[].thumbnail_image_url | string | No | ||||
| data.categories[].type | string | No | default | Type is Chipotle's own category kind: default, quantity, nested or preconfigured. | ||
| data.channel | string | No | web-mobile | |||
| data.dietary_tag_groups | array | No | ||||
| data.dietary_tag_groups[].badge_color | string | No | #6e7c1b | |||
| data.dietary_tag_groups[].badge_text | string | No | V | |||
| data.dietary_tag_groups[].group_id | string | No | 4c5a70f6-40f5-4a8e-968a-3b69f675ab7f | |||
| data.dietary_tag_groups[].group_name | string | No | Plant Based | |||
| data.dietary_tag_groups[].is_active | boolean | No | true | |||
| data.dietary_tag_groups[].select_type | string | No | single | |||
| data.dietary_tag_groups[].sort_order | integer | No | 0 | |||
| data.dietary_tag_groups[].subheader | string | No | Tagged items contain your selection. | |||
| data.dietary_tag_groups[].tags | array | No | ||||
| data.dietary_tag_groups[].tags[].preferred_badge_text | string | No | V | |||
| data.dietary_tag_groups[].tags[].sort_order | integer | No | 1 | |||
| data.dietary_tag_groups[].tags[].tag_code | string | No | vege | TagCode is the short code items reference in their own dietary_tags list (see MenuMetadataItem.DietaryTags). | ||
| data.dietary_tag_groups[].tags[].tag_name | string | No | Vegetarian | |||
| data.fetched_at | string | No | ||||
| data.item_groups | array | No | ||||
| data.item_groups[].calorie_range_max | integer | No | 60 | |||
| data.item_groups[].calorie_range_min | integer | No | 60 | |||
| data.item_groups[].default_item_id | string | No | CMG-1036 | |||
| data.item_groups[].display_name | string | No | Mexican Cauliflower Rice | |||
| data.item_groups[].display_range_format | boolean | No | false | |||
| data.item_groups[].name | string | No | CauliRiceEntree | |||
| data.item_sections | array | No | ||||
| data.item_sections[].display_name | string | No | Add-Ons | Always On The Side | |||
| data.item_sections[].has_select_none_option | boolean | No | false | |||
| data.item_sections[].item_ids | array | No | CMG-5414,CMG-5410 | |||
| data.item_sections[].name | string | No | AddonContentGroup | |||
| data.item_sections[].sort_order | integer | No | 10 | |||
| data.items | array | No | ||||
| data.items[].as_customization_name | string | No | Normal | AsCustomizationName is the label Chipotle shows for this item when it appears as a customization choice rather than a standalone item. | ||
| data.items[].dietary_tags | array | No | vege,vega,pale,keto | DietaryTags are tag codes (e.g. "vege", "keto") joinable against DietaryTagGroups[].Tags[].TagCode for the human-readable name. | ||
| data.items[].is_rewards_exclusive | boolean | No | false | |||
| data.items[].item_id | string | No | CMG-1 | |||
| data.items[].nutrition | array | No | ||||
| data.items[].nutrition[].name | string | No | Calories | |||
| data.items[].nutrition[].unit | string | No | cal | |||
| data.items[].nutrition[].value | string | No | 180 | |||
| data.items[].tags | array | No | ||||
| data.items[].tags[].type | string | No | rewards | |||
| data.items[].tags[].value | string | No | Exclusive | |||
| data.items[].thumbnail_url | string | No | ||||
| 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" |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/chipotle/menu/metadata?channel=web®ion=US" \
-H "x-api-key: $CRAWLORA_API_KEY"Crawlora is designed for responsible structured public web data workflows. Customers are responsible for using Crawlora in compliance with applicable laws, third-party rights, target-platform rules, and Crawlora terms.
Read Crawlora terms