Chick-fil-A API endpoint
Returns one page of a Chick-fil-A editorial corpus. `type` selects which: `press-room` (289 press releases), `story` (189 blog articles), `page` (147 standalone corporate pages such as hunger relief and community programmes), `legal` (28 terms, policies and promotion rules) or `downloadable-asset` (45 press-kit media entries, which carry a title and link only and never a body). Between them these are every content-bearing corpus Chick-fil-A publishes outside the menu and restaurant catalogs. Article bodies are opt-in via include_body because a single press release runs to roughly 22KB, so a default-on page of 20 would be several hundred KB; without it the endpoint returns titles, links, publish dates and excerpts.
/chick-fil-a/contentReturns one page of a Chick-fil-A editorial corpus, selected by type. This is the non-catalog half of what Chick-fil-A publishes: newsroom articles, the blog, corporate pages, the legal/policy corpus, and the press-kit media library. Between them these are every content-bearing corpus the site exposes outside the menu and restaurant catalogs.
The five types differ in what they carry, not just in subject:
press-room — 289 press releases at time of writing. Each has a summary excerpt and a full article body (bodies average around 22KB).story — 189 editorial blog articles, e.g. recipes, quizzes and franchise profiles. Excerpt and body.page — 147 standalone corporate pages, e.g. hunger relief, community programmes and company information. Excerpt and body; bodies here are among the longest.legal — 28 terms-of-use documents, privacy and accessibility policies, and sweepstakes/promotion rules. These have bodies but no excerpts.downloadable-asset — 45 press-kit media entries. Title, link and publish date only; these never have a body or an excerpt.Article bodies are opt-in via include_body. A default-on page of 20 press releases would run to several hundred kilobytes, so without the flag the endpoint returns titles, links, publish dates and excerpts, and callers fetch bodies only for the entries they actually want.
Entries carry their own categories[] and tags[], with names resolved. Every id there is a ready-to-use filter value, and the full vocabularies are listable via /api/v1/chick-fil-a/content-taxonomy.
Query parameters:
type (required) — which corpus. One of press-room, story, page, legal, downloadable-asset. Any other value is rejected as an invalid parameter, including the underlying WordPress collection names — story and page are the public names for what WordPress calls posts and pages.search (optional) — free-text filter, e.g. community. Results are relevance-ranked when present; without it entries are newest-first so the corpus can be paged deterministically.page (optional, default 1) — 1-based page number.per_page (optional, default 20, max 100) — entries per page.category (optional) — comma-separated category term ids, up to 20, e.g. 570. Which vocabulary this filters depends on type: press_category for press-room, the blog categories for story, legal_category for legal, downloadable_asset_category for downloadable-asset. type=page has no category vocabulary and passing this is rejected.tag (optional) — comma-separated tag term ids, up to 20. Only press-room and story have a tag vocabulary; passing it for another type is rejected rather than silently ignored.include_body (optional, default false) — include the full article body.Response includes type, entries[], pagination, source_url, and fetched_at. Each entry has id, slug, title, url, published_at, excerpt, categories[], tags[], and — when include_body is set and the type has one — body. Each category and tag has id, name and slug; names are resolved best-effort in one extra upstream call, and if that call fails the ids are still returned and still usable as filters.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| slug | 20 | |
| title | 20 | “Feeding the Nation’s Capital: Local Chick-fil-A Operators U…” and 19 other values |
| url | 20 | chick-fil-a.com |
| published_at | 20 | 2026-04-07 to 2026-10-06 |
| excerpt | 20 | median 207 characters |
| categories | 20 | median 1 entry |
| tags | 20 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| type | string | Yes | Which corpus. One of press-room, story, page, legal, downloadable-asset. Allowed values: press-room, story, page, legal, downloadable-asset. | press-room | |
| search | string | No | Free-text filter. Results are relevance-ranked when present; otherwise newest first. | community | |
| page | integer | No | 1-based page number (default 1) | 1 | |
| per_page | integer | No | Entries per page, 1-100 (default 20) | 20 | |
| include_body | boolean | No | Include the full article body (default false -- bodies are large) | false | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chick-fil-a/content?type=press-room&page=1&include_body=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"type": "press-room",
"entries": [
{
"id": 53171,
"slug": "how-customer-cravings-reimagined-a-classic",
"title": "How Customer Cravings Reimagined a Classic",
"url": "https://www.chick-fil-a.com/stories/how-customer-cravings-reimagined-a-classic",
"published_at": "2026-08-12T10:00:00",
"excerpt": "A look at how guest feedback reshaped a menu staple."
}
],
"pagination": {
"page": 1,
"per_page": 20,
"total": 289,
"total_pages": 15
},
"source_url": "https://www.chick-fil-a.com/wp-json/wp/v2/press-room?page=1&per_page=20",
"fetched_at": "2026-08-31T09:12:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chickfila.contentResponseDoc
| 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 | chickfila.ContentResponse | No | ||||
| data.entries | array | No | ||||
| data.entries[].body | string | No | Body is the full article text, present only when include_body is set. downloadable-asset entries never have one. | |||
| data.entries[].categories | array | No | Categories and Tags are this entry's terms, with names resolved best-effort. Every id here is a ready-to-use `category` / `tag` filter value. | |||
| data.entries[].categories[].id | integer | No | 265 | |||
| data.entries[].categories[].name | string | No | Breakfast | |||
| data.entries[].categories[].slug | string | No | breakfast | |||
| data.entries[].excerpt | string | No | Excerpt is the summary Chick-fil-A publishes; absent on types that carry none (legal, downloadable-asset). | |||
| data.entries[].id | integer | No | 53171 | |||
| data.entries[].published_at | string | No | 2026-08-12T10:00:00 | |||
| data.entries[].slug | string | No | how-customer-cravings-reimagined-a-classic | |||
| data.entries[].tags | array | No | ||||
| data.entries[].tags[].id | integer | No | 265 | |||
| data.entries[].tags[].name | string | No | Breakfast | |||
| data.entries[].tags[].slug | string | No | breakfast | |||
| data.entries[].title | string | No | How Customer Cravings Reimagined a Classic | |||
| data.entries[].url | string | No | ||||
| data.fetched_at | string | No | ||||
| data.pagination | chickfila.pagination | No | pagination record, 4 fields: page, per_page, total, total_pages. Described under Chick-fil-A FAQ API. | |||
| data.source_url | string | No | ||||
| data.type | string | No | press-room | |||
| 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/chick-fil-a/content?type=press-room&page=1&include_body=true" \
-H "x-api-key: $CRAWLORA_API_KEY"