Wendys API endpoint
Returns one item's (or combo's) complete nutrition-facts panel -- calories, fat, cholesterol, sodium, carbohydrate, protein, vitamins and minerals -- as real numbers, plus declared allergens. A simple item's panel is for its default configuration (default bun/size, default condiments, no extras, no required-group substitutions). A combo's panel (is_combo true) is the *combined* total across every slot's default option in one request, the same way a caller building the full order would sum it themselves -- combo_selections lists which option each slot was computed for. GET /wendys/item and GET /wendys/menu only ever carry a calorie count, because that is all Wendy's own menu pages themselves publish inline; the full panel is fetched separately by Wendy's own "Nutrition" tab, and this endpoint resolves and calls that same source so a caller does not have to reverse-engineer it. A nutrient Wendy's does not publish is omitted from the response rather than reported as zero. Category and item slugs come from GET /wendys/categories and GET /wendys/menu.
/wendys/nutritionQuery parameters:
category (required) — category slug from /api/v1/wendys/categories, e.g. hamburgers.item (required) — item slug from /api/v1/wendys/menu's items[].slug, e.g. daves-single. A combo slug (is_combo: true on /wendys/menu//wendys/item) is accepted too — see below.is_combo: false)is_combo: true)The panel is the combined total across every slot's default option (entree, side, drink, ...) computed in a single upstream request — the same way a caller building the full order would sum the pieces themselves, rather than a per-slot breakdown. combo_selections[] lists which option (slot_type, name) each slot's total was computed for — always that slot's default option, matching /wendys/item's combo_slots[].options[].is_default; there is no way to request a different combination of choices.
Response includes category, item, name, is_combo, combo_selections[] (combos only), nutrition, allergens[], disclaimers[], source_url, and fetched_at.
nutrition fields, each in the panel's own unit — grams for total_fat_g, saturated_fat_g, trans_fat_g, polyunsaturated_fat_g, monounsaturated_fat_g, total_carbohydrate_g, dietary_fiber_g, sugars_g, protein_g; milligrams for cholesterol_mg, sodium_mg, calcium_mg, iron_mg, potassium_mg; micrograms for vitamin_d_mcg; calories, calories_from_fat, vitamin_a, and vitamin_c as Wendy's own service reports them; serving_weight_grams when published. A nutrient Wendy's does not publish for a given item is omitted from the response rather than reported as a real zero.
allergens[] is Wendy's own declared allergen flags across the returned configuration — the same set Wendy's own "Allergens" panel shows next to the nutrition table (backticked full set: Milk, Egg, Fish, Shellfish, Tree Nut, Peanut, Wheat, Soy, Sesame).
An item (or combo slot) Wendy's own nutrition service returns no data for is a 404.
Example responses:
{"code":200,"msg":"OK","data":{"category":"hamburgers","item":"daves-single","name":"Dave's Single®","is_combo":false,"nutrition":{"calories":560,"calories_from_fat":300,"total_fat_g":34,"saturated_fat_g":14,"trans_fat_g":1.5,"cholesterol_mg":90,"sodium_mg":1170,"total_carbohydrate_g":37,"dietary_fiber_g":2,"sugars_g":9,"protein_g":31,"calcium_mg":15,"iron_mg":25,"potassium_mg":10,"serving_weight_grams":245.43},"allergens":["Milk","Egg","Wheat","Soy","Sesame"],"source_url":"https://order.wendys.com/us/en/national/menu/hamburgers/daves-single","fetched_at":"2026-09-02T00:00:00Z"}}
{"code":200,"msg":"OK","data":{"category":"combos","item":"daves-combo","name":"Dave's Combo","is_combo":true,"combo_selections":[{"slot_type":"ENTREE","name":"Dave's Single®"},{"slot_type":"SIDE","name":"Small Natural-Cut Fries"},{"slot_type":"DRINK","name":"Coca-Cola®"}],"nutrition":{"calories":830,"calories_from_fat":410,"total_fat_g":45,"saturated_fat_g":16,"trans_fat_g":1.5,"cholesterol_mg":90,"sodium_mg":1590,"total_carbohydrate_g":73,"dietary_fiber_g":5,"sugars_g":9,"protein_g":35,"calcium_mg":15,"iron_mg":30,"potassium_mg":25,"serving_weight_grams":528.358},"allergens":["Milk","Egg","Wheat","Soy","Sesame"],"source_url":"https://order.wendys.com/us/en/national/menu/combos/daves-combo","fetched_at":"2026-09-04T00:00:00Z"}}
| Field | In the sample | Value in the sample |
|---|---|---|
| category | Has a value | “hamburgers” |
| item | Has a value | “daves-single” |
| name | Has a value | “Dave's Single®” |
| is_combo | Has a value | false |
| nutrition.calories | Has a value | 560 |
| nutrition.calories_from_fat | Has a value | 300 |
| nutrition.total_fat_g | Has a value | 34 |
| nutrition.saturated_fat_g | Has a value | 14 |
| nutrition.trans_fat_g | Has a value | 1.5 |
| nutrition.cholesterol_mg | Has a value | 90 |
| nutrition.sodium_mg | Has a value | 1,170 |
| nutrition.total_carbohydrate_g | Has a value | 37 |
| nutrition.dietary_fiber_g | Has a value | 2 |
| nutrition.sugars_g | Has a value | 9 |
| nutrition.protein_g | Has a value | 31 |
| nutrition.calcium_mg | Has a value | 15 |
| nutrition.iron_mg | Has a value | 25 |
| nutrition.potassium_mg | Has a value | 10 |
| nutrition.serving_weight_grams | Has a value | 245.43 |
| allergens | Has a value | 5 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| category | string | Yes | Category slug from /wendys/categories | hamburgers | |
| item | string | Yes | Item slug from /wendys/menu's items[].slug -- a combo slug is accepted | daves-single | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/wendys/nutrition?category=hamburgers&item=daves-single" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"category": "hamburgers",
"item": "daves-single",
"name": "Dave's Single®",
"is_combo": false,
"nutrition": {
"calories": 560,
"calories_from_fat": 300,
"total_fat_g": 34,
"saturated_fat_g": 14,
"trans_fat_g": 1.5,
"cholesterol_mg": 90,
"sodium_mg": 1170,
"total_carbohydrate_g": 37,
"dietary_fiber_g": 2,
"sugars_g": 9,
"protein_g": 31,
"calcium_mg": 15,
"iron_mg": 25,
"potassium_mg": 10,
"serving_weight_grams": 245.43
},
"allergens": [
"Milk",
"Egg",
"Wheat",
"Soy",
"Sesame"
],
"source_url": "https://order.wendys.com/us/en/national/menu/hamburgers/daves-single",
"fetched_at": "2026-09-02T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/wendys.nutritionResponseDoc
| 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 | wendys.NutritionResponse | No | ||||
| data.allergens | array | No | Egg,Milk,Sesame,Soy,Wheat | Allergens is Wendy's own declared allergen flags for this exact default configuration -- the same union Wendy's "Allergens" panel shows next to the nutrition table. | ||
| data.category | string | No | hamburgers | |||
| data.combo_selections | array | No | ||||
| data.combo_selections[].name | string | No | Dave's Single® | |||
| data.combo_selections[].slot_type | string | No | ENTREE | |||
| data.disclaimers | array | No | Disclaimers is any upstream-published caveat text for this item (usually empty). Passed through verbatim. | |||
| data.fetched_at | string | No | ||||
| data.is_combo | boolean | No | IsCombo marks a combo response. Nutrition/Allergens/Disclaimers then cover the *combined* total across every slot's selected option (ComboSelections), computed in one nutritionalData request the same way a caller building a full order would sum it themselves -- not a separate per-slot breakdown. | |||
| data.item | string | No | daves-single | |||
| data.name | string | No | Dave's Single | |||
| data.nutrition | wendys.NutritionFacts | No | ||||
| data.nutrition.calcium_mg | number | No | 15 | |||
| data.nutrition.calories | number | No | 560 | |||
| data.nutrition.calories_from_fat | number | No | 300 | |||
| data.nutrition.cholesterol_mg | number | No | 90 | |||
| data.nutrition.dietary_fiber_g | number | No | 2 | |||
| data.nutrition.iron_mg | number | No | 25 | |||
| data.nutrition.monounsaturated_fat_g | number | No | ||||
| data.nutrition.polyunsaturated_fat_g | number | No | ||||
| data.nutrition.potassium_mg | number | No | 10 | |||
| data.nutrition.protein_g | number | No | 31 | |||
| data.nutrition.saturated_fat_g | number | No | 14 | |||
| data.nutrition.serving_weight_grams | number | No | 245.43 | ServingWeightGrams is omitted (not published) when Wendy's own service leaves it out, which it does for some single-component items. | ||
| data.nutrition.sodium_mg | number | No | 1170 | |||
| data.nutrition.sugars_g | number | No | 9 | |||
| data.nutrition.total_carbohydrate_g | number | No | 37 | |||
| data.nutrition.total_fat_g | number | No | 34 | |||
| data.nutrition.trans_fat_g | number | No | 1.5 | |||
| data.nutrition.vitamin_a | number | No | ||||
| data.nutrition.vitamin_c | number | No | ||||
| data.nutrition.vitamin_d_mcg | number | 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/wendys/nutrition?category=hamburgers&item=daves-single" \
-H "x-api-key: $CRAWLORA_API_KEY"