Endpoint Playground
Returns one restaurant's full menu grouped into categories (e.g. "Deals", "Combos", "Tenders"). Every entry is a product, a bundle (a combo or family meal), or a standalone priced variant -- type tells callers which -- and carries a price in USD cents plus a decimal dollar value, and an image when the upstream publishes one. Prices reflect this specific restaurant and order channel, not a national default. channel selects which order channel the menu is priced for (web ordering by default); prices can genuinely differ by channel (e.g. a delivery-marketplace channel vs. web).
14 Oct 2026: 11 categories; 4 fields had a value in every checked item.
Sample value profiles: name: “Deals” and 10 other values; items: median 5 entries; description: “Deals” and 10 other values.
curl 'https://api.crawlora.net/api/v1/kfc/menu?store_number=I824001&channel=WEB' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| store_number | string | Yes | I824001 | KFC's alphanumeric store number, from /kfc/stores or /kfc/nearby |
| channel | string | No | WEB | Order channel the menu is priced for (default WEB) |
{
"code": 200,
"msg": "OK",
"data": {
"store_number": "I824001",
"menu_id": "845791b0-7bdb-4ff0-92f2-344a89aa4b57",
"channel": "WEB",
"currency": "USD",
"categories": [
{
"category_code": "deals",
"name": "Deals",
"description": "Deals",
"items": [
{
"type": "bundle",
"code": "country-fried-steak-meal",
"name": "Country Fried Steak Meal",
"price": {
"amount_cents": 499,
"amount": 4.99,
"currency_code": "USD"
},
"image_url": "https://digitaleat.kfc.com/menus/image/bare/kfc-CFSMeal.webp"
}
]
}
],
"item_count": 73,
"source_url": "https://www.kfc.com/api/kfc_us/storefront/graphql",
"fetched_at": "2026-09-03T00:00:00Z"
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.