Endpoint Playground
Returns a page of Popeyes' promotional offers/deals catalog -- named value deals (e.g. "3Pc Signature Chicken for $5"), percentage-off combos, and paper coupons. This is CMS content describing the offer catalog, the same kind of public data /popeyes/menu already reads from -- not a personalized or store-specific list, and not account/loyalty state. A missing price does not mean free; a price of 0 means the offer's discount is not expressed as a flat price (see offer_tag/name instead, e.g. a percentage-off deal). requires_authentication reflects the offer's own published redemption rules, not any account state this endpoint reads. The catalog spans hundreds of entries including ones no longer running; there is no upstream "currently active" flag, so pages should be read as reference data, not a guarantee every entry is live right now.
14 Oct 2026: 20 offers; 6 fields had a value in every checked item and 3 varied between items.
Sample value profiles: offer_tag: LIMITED_TIME (5), NEW (3), GROUP_DEAL (1) and 2 more; price_cents: 0 to 3,899, median 899; name: “FREE Strawberry Biscuit with Minimum $15 Spend” and 19 other values.
curl 'https://api.crawlora.net/api/v1/popeyes/offers' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| limit | integer | No | Maximum offers to return, 1-100 (default 20) | |
| offset | integer | No | Number of offers to skip, for paging (default 0) | |
| market | string | No | Restaurant market: US (default) or CA |
{
"code": 200,
"msg": "OK",
"data": {
"offers": [
{
"id": "00a369e5-1b33-4d35-b153-e372e3ebf17f",
"name": "3Pc Signature Chicken for $5",
"description": "3 Piece Chicken",
"offer_tag": "VALUE_DEAL",
"redemption_type": "STANDARD",
"short_code": "8438",
"price_cents": 500,
"price": 5,
"mobile_order_only": false,
"requires_authentication": false
}
],
"count": 1,
"has_more": true,
"source_url": "https://czqk28jt.apicdn.sanity.io/v1/graphql/prod_plk_us/default",
"fetched_at": "2026-09-02T00:00:00Z"
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.