Wingstop API endpoint
Returns one Wingstop store's full priced, categorized menu for carryout or delivery: every category, each listing's variants (a standalone item has one variant; a size/flavor family such as "6 pc Wing Combo" has one variant per size or preparation) with price, description and calorie range, plus store-level pricing context (currency, tax rate, prep lead time). Store paths come from GET /wingstop/directory entries whose is_store is true, or a GET /wingstop/store response's own path.
/wingstop/menuQuery parameters:
path (required) — store path, e.g. tx/houston/wingstop-128-houston-tx-77065.service_mode (optional, default carryout) — one of: carryout, delivery.Response includes store, service_mode, categories[], path, source_url, and fetched_at.
store carries pricing/ordering context not already covered by /api/v1/wingstop/store: store_id, name, slug, currency_code, tax_rate_percent, and lead_time_minutes.
Each categories[] entry has id, name, slug, image_url, and products[]. Each product has id, name, slug, description, image_url, and variants[] — always non-empty. A standalone listing (e.g. a single side) has exactly one variant named after the product itself; a size/flavor family (e.g. "6 pc Wing Combo") has one variant per size or preparation ("6 pc Boneless Combo", "6 pc Classic Combo", "6 pc Mix & Match Combo"), each with its own price.
Each variant has id, name, short_name, slug, description, price, min_calories, max_calories, is_default, is_new, is_popular, is_limited_time, and image_url.
| Field | Filled in, of 12 checked | Values in the sample |
|---|---|---|
| id | 12 | |
| name | 12 | “Add Ons” and 11 other values |
| slug | 12 | |
| products | 12 | median 5 entries |
| image_url | 10 | cdn.bfldr.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| path | string | Yes | Store path from a /wingstop/directory child with is_store true, or a /wingstop/store response's own path | tx/houston/wingstop-128-houston-tx-77065 | |
| service_mode | string | No | carryout | One of: carryout, delivery. Defaults to carryout. | carryout |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/wingstop/menu?path=tx%2Fhouston%2Fwingstop-128-houston-tx-77065" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store": {
"store_id": "128",
"name": "Wingstop Houston Jones",
"slug": "wingstop-128-houston-tx-77065",
"currency_code": "USD",
"tax_rate_percent": 8.25,
"lead_time_minutes": 10
},
"service_mode": "carryout",
"categories": [
{
"id": "cat-combos",
"name": "Wing Combos",
"slug": "wing-combos",
"image_url": "https://cdn.bfldr.com/.../menu-wing-combos.png",
"products": [
{
"id": "group-6-combo",
"name": "6 pc Wing Combo",
"slug": "6-wing-combo",
"description": "6 Boneless or Classic wings with up to 2 flavors, fries, 1 dip and a drink",
"image_url": "https://cdn.bfldr.com/.../6-combo.png",
"variants": [
{
"id": "item-6-boneless",
"name": "6 pc Boneless Combo",
"short_name": "Boneless",
"slug": "6-boneless-combo",
"price": 10.69,
"min_calories": 430,
"max_calories": 1330,
"is_popular": true,
"image_url": "https://cdn.bfldr.com/.../6-boneless.png"
},
{
"id": "item-6-classic",
"name": "6 pc Classic Combo",
"short_name": "Classic",
"slug": "6-classic-combo",
"price": 10.99,
"min_calories": 420,
"max_calories": 1240
}
]
}
]
}
],
"path": "tx/houston/wingstop-128-houston-tx-77065",
"source_url": "https://ecomm.wingstop.com/menu-worker?slug=wingstop-128-houston-tx-77065&serviceMode=carryout",
"fetched_at": "2026-09-03T19:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/wingstop.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 | wingstop.MenuResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].id | string | No | ||||
| data.categories[].image_url | string | No | ||||
| data.categories[].name | string | No | Wing Combos | |||
| data.categories[].products | array | No | ||||
| data.categories[].products[].description | string | No | ||||
| data.categories[].products[].id | string | No | ||||
| data.categories[].products[].image_url | string | No | ||||
| data.categories[].products[].name | string | No | 6 pc Wing Combo | |||
| data.categories[].products[].slug | string | No | 6-wing-combo | |||
| data.categories[].products[].variants | array | No | Variants is always non-empty: one entry for a standalone item, one per size/preparation for a family. | |||
| data.categories[].products[].variants[].description | string | No | ||||
| data.categories[].products[].variants[].id | string | No | ||||
| data.categories[].products[].variants[].image_url | string | No | ||||
| data.categories[].products[].variants[].is_default | boolean | No | ||||
| data.categories[].products[].variants[].is_limited_time | boolean | No | ||||
| data.categories[].products[].variants[].is_new | boolean | No | ||||
| data.categories[].products[].variants[].is_popular | boolean | No | ||||
| data.categories[].products[].variants[].max_calories | integer | No | 1330 | |||
| data.categories[].products[].variants[].min_calories | integer | No | 430 | |||
| data.categories[].products[].variants[].name | string | No | 6 pc Boneless Combo | |||
| data.categories[].products[].variants[].price | number | No | 10.69 | |||
| data.categories[].products[].variants[].short_name | string | No | ||||
| data.categories[].products[].variants[].slug | string | No | 6-boneless-combo | |||
| data.categories[].slug | string | No | wing-combos | |||
| data.fetched_at | string | No | ||||
| data.path | string | No | ||||
| data.service_mode | string | No | carryout | |||
| data.source_url | string | No | ||||
| data.store | wingstop.MenuStoreSummary | No | ||||
| data.store.currency_code | string | No | USD | |||
| data.store.lead_time_minutes | integer | No | 10 | |||
| data.store.name | string | No | Wingstop Houston Jones | |||
| data.store.slug | string | No | wingstop-128-houston-tx-77065 | |||
| data.store.store_id | string | No | 128 | |||
| data.store.tax_rate_percent | number | No | 8.25 | |||
| 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/wingstop/menu?path=tx%2Fhouston%2Fwingstop-128-houston-tx-77065" \
-H "x-api-key: $CRAWLORA_API_KEY"