KFC API endpoint
Returns one KFC restaurant's detail by its exact store number, from /kfc/stores or /kfc/nearby, including its recurring open hours per order channel (carryout, delivery, dine-in, drive-thru, catering carryout). A channel this restaurant does not offer at all is omitted from hours rather than reported as always-closed.
/kfc/storeQuery parameters:
store_number (required) — KFC's alphanumeric store number, e.g. I824001.Response is the store object directly (same shape as one entry of /kfc/stores' stores[]) plus hours[], source_url, and fetched_at: store_number, name, address, accepting_online_orders, archived, timezone, hours.
hours[] has one entry per order channel (occasion) the restaurant offers — DELIVERY, CARRYOUT, DINE_IN, DRIVE_THRU, CATERING_CARRYOUT. A channel the restaurant does not offer at all is omitted rather than reported as always-closed. Each entry has occasion, enabled, and windows[]. Each window has start_time and duration (local restaurant time, e.g. 10:00:00 open plus 09:00:00 duration means open 10:00, closing 9 hours later), days (KFC's own raw day-of-week numbering, 1-7 — a weekday-labeled alternative was checked live and found not consistently populated, so this endpoint passes the raw numbering through rather than guess a label that could be wrong), and blackout (whether this window is a suspension rather than an open window).
| Field | Filled in, of 2 checked | Values in the sample |
|---|---|---|
| occasion | 2 | “CARRYOUT” and 1 other value |
| enabled | 2 | true in 2 of 2 |
| windows | 2 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| store_number | string | Yes | KFC's alphanumeric store number, from /kfc/stores or /kfc/nearby | I824001 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kfc/store?store_number=I824001" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_number": "I824001",
"name": "KFC 600 Terminal Drive",
"address": {
"address1": "600 Terminal Drive",
"address2": "Louisville International Airport - Pre Security",
"city": "Louisville",
"state": "KY",
"postal_code": "40209",
"country_code": "US",
"phone": "+15023633000",
"latitude": 38.1857,
"longitude": -85.7445
},
"accepting_online_orders": true,
"archived": false,
"timezone": "America/New_York",
"hours": [
{
"occasion": "CARRYOUT",
"enabled": true,
"windows": [
{
"start_time": "10:00:00",
"duration": "09:00:00",
"days": [
1,
2,
3,
4,
5,
6,
7
],
"blackout": false
}
]
},
{
"occasion": "DELIVERY",
"enabled": true,
"windows": [
{
"start_time": "10:00:00",
"duration": "09:00:00",
"days": [
1,
2,
3,
4,
5,
6,
7
],
"blackout": false
}
]
}
],
"source_url": "https://www.kfc.com/api/kfc_us/storefront/graphql",
"fetched_at": "2026-09-03T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/kfc.storeResponseDoc
| 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 | kfc.StoreResponse | No | ||||
| data.accepting_online_orders | boolean | No | true | |||
| data.address | kfc.Address | No | ||||
| data.address.address1 | string | No | 600 Terminal Drive | |||
| data.address.address2 | string | No | Louisville International Airport - Pre Security | |||
| data.address.city | string | No | Louisville | |||
| data.address.country_code | string | No | US | |||
| data.address.latitude | number | No | 38.1857 | |||
| data.address.longitude | number | No | -85.7445 | |||
| data.address.phone | string | No | +15023633000 | |||
| data.address.postal_code | string | No | 40209 | |||
| data.address.state | string | No | KY | |||
| data.archived | boolean | No | false | |||
| data.fetched_at | string | No | ||||
| data.hours | array | No | Hours is this restaurant's recurring open windows per order channel (occasion) -- CARRYOUT, DELIVERY, DINE_IN, DRIVE_THRU, CATERING_CARRYOUT. A restaurant that does not offer a given occasion at all omits it from this list. | |||
| data.hours[].enabled | boolean | No | true | |||
| data.hours[].occasion | string | No | DELIVERY | |||
| data.hours[].windows | array | No | ||||
| data.hours[].windows[].blackout | boolean | No | false | |||
| data.hours[].windows[].days | array | No | 1,2,3,4,5,6,7 | |||
| data.hours[].windows[].duration | string | No | 09:00:00 | |||
| data.hours[].windows[].start_time | string | No | 10:00:00 | |||
| data.name | string | No | KFC 600 Terminal Drive | |||
| data.source_url | string | No | ||||
| data.store_number | string | No | I824001 | |||
| data.timezone | string | No | America/New_York | |||
| 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/kfc/store?store_number=I824001" \
-H "x-api-key: $CRAWLORA_API_KEY"