KFC API endpoint
Returns KFC restaurants matching a city/state/postal code/name/franchise code/store number filter. At least one filter is required -- an unfiltered call would enumerate every US restaurant in one response, which this endpoint intentionally does not expose. Each restaurant carries its store number (the value /kfc/menu and /kfc/promotions take), full address with coordinates, phone, whether it currently accepts online orders, and its timezone. appear_in_store_results (default true) excludes internal/test records KFC's own storefront does not surface in customer-facing search -- a raw filter can otherwise return non-orderable administrative entries alongside real restaurants.
/kfc/storesSearches KFC restaurants by city, state, postal code, name, franchise code, or store number. At least one of store_number, city, state, postal_code, name, or franchise_code is required — an unfiltered call would enumerate every US restaurant in one response, which this endpoint intentionally does not expose.
Query parameters:
store_number (optional) — exact store number, e.g. I824001.city (optional) — restaurant city, e.g. Louisville.state (optional) — restaurant state, two-letter code, e.g. KY.postal_code (optional) — restaurant postal code, e.g. 40213.name (optional) — restaurant name, partial match.franchise_code (optional) — exact franchise/operator code, e.g. C761.appear_in_store_results (optional, default true) — restrict to restaurants KFC's own storefront shows in customer-facing search, excluding internal/test entries. A raw city/state filter can otherwise also return non-orderable administrative records alongside real restaurants; pass false to see every matching record, internal ones included.sort (optional) — sort order, one of store_number_asc, store_number_desc, name_asc, name_desc, franchise_code_asc, franchise_code_desc. Unsorted (upstream order) by default.max_results (optional, default 20) — maximum restaurants to return, 1-50.Response includes stores[], count, total_count, has_more, source_url, and fetched_at. total_count is how many restaurants matched upstream and can exceed count when more results exist than max_results asked for. Each store has store_number, name, address, accepting_online_orders, archived, and timezone. address has address1, address2, city, state, postal_code, country_code, phone, latitude, and longitude.
| Field | Filled in, of 12 checked | Values in the sample |
|---|---|---|
| store_number | 12 | “I824001” and 11 other values |
| name | 12 | “KFC 600 Terminal Drive” and 11 other values |
| address | 12 | |
| accepting_online_orders | 12 | true in 10 of 12 |
| archived | 12 | true in 0 of 12 |
| timezone | 12 | America/New_York in all 12 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| store_number | string | No | Exact store number | I824001 | |
| city | string | No | Restaurant city | Louisville | |
| state | string | No | Restaurant state, two-letter code | KY | |
| postal_code | string | No | Restaurant postal code | 40213 | |
| name | string | No | Restaurant name, partial match | KFC 600 Terminal Drive | |
| franchise_code | string | No | Exact franchise/operator code | C761 | |
| appear_in_store_results | boolean | No | Restrict to restaurants shown in customer-facing search, excluding internal/test entries (default true) | true | |
| sort | string | No | Sort order Allowed values: store_number_asc, store_number_desc, name_asc, name_desc, franchise_code_asc, franchise_code_desc. | name_asc | |
| max_results | integer | No | Maximum restaurants to return, 1-50 (default 20) | 20 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kfc/stores?appear_in_store_results=true&sort=store_number_asc" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"stores": [
{
"store_number": "A111111",
"name": "KFC 1900 Colonel Sanders Lane",
"address": {
"address1": "1900 Colonel Sanders Lane",
"city": "Louisville",
"state": "KY",
"postal_code": "40213",
"country_code": "US",
"phone": "+15028741000",
"latitude": 38.197994,
"longitude": -85.696896
},
"accepting_online_orders": false,
"archived": false,
"timezone": "America/New_York"
}
],
"count": 5,
"total_count": 33,
"has_more": true,
"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.storesResponseDoc
| 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.StoresResponse | No | ||||
| data.count | integer | No | 5 | |||
| data.fetched_at | string | No | ||||
| data.has_more | boolean | No | true | |||
| data.source_url | string | No | ||||
| data.stores | array | No | ||||
| data.stores[].accepting_online_orders | boolean | No | true | |||
| data.stores[].address | kfc.Address | No | Address record, 9 fields: address1, address2, city, country_code, latitude, longitude, phone, postal_code, state. Described under KFC Store API. | |||
| data.stores[].archived | boolean | No | false | |||
| data.stores[].name | string | No | KFC 600 Terminal Drive | |||
| data.stores[].store_number | string | No | I824001 | |||
| data.stores[].timezone | string | No | America/New_York | |||
| data.total_count | integer | No | 33 | TotalCount is how many restaurants matched upstream; it can exceed Count when more results exist than max_results asked for. | ||
| 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 |
| 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/stores?appear_in_store_results=true&sort=store_number_asc" \
-H "x-api-key: $CRAWLORA_API_KEY"