---
title: "List Popeyes' promotional deals and coupons"
method: GET
path: "/popeyes/offers"
tags: ["Popeyes"]
---

# List Popeyes' promotional deals and coupons

`GET /popeyes/offers`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/popeyes/offers`
- Auth: API key in header `x-api-key`

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.

## Query parameters

- `limit` integer
- `offset` integer
- `market` string

## Headers

- `x-api-key` string, required

## Response `200`

OK

- PopeyesOffersResponseDoc
  - `code` integer: Code is the HTTP status code or a custom code used to indicate the result of the request @example 200
  - `data` PopeyesOffersResponse
    - `count` integer
    - `fetched_at` string
    - `has_more` boolean: HasMore is true when this page returned as many offers as Limit asked for, meaning more may exist at the next Offset. Sanity's GraphQL API for this dataset does not publish a total count for allSystemwideOffers, so this is a paging heuristic, not an exact total.
    - `offers` PopeyesOffer[]
      - `daypart` string[]: Daypart restricts the offer to specific times of day (e.g. ["allDay"]), when Popeyes publishes a restriction.
      - `description` string: Description is the offer's own short copy (e.g. what's included), when Popeyes publishes one.
      - `id` string
      - `mobile_order_only` boolean: MobileOrderOnly is true when the offer is only redeemable through Popeyes' own mobile ordering flow.
      - `name` string
      - `offer_tag` string: OfferTag is Popeyes' own short badge for the offer's kind (e.g. VALUE_DEAL, PERCENTAGE_OFF), when published.
      - `price` number
      - `price_cents` integer: PriceCents/Price are the offer's flat price when it has one (e.g. "3Pc Signature Chicken for $5" prices at 500 cents). A value of 0 does not mean free -- it means the offer's discount is not expressed as a flat price (see OfferTag/Name instead, e.g. a percentage-off or BOGO deal).
      - `redemption_type` string: RedemptionType is how the offer is redeemed -- observed live values include STANDARD (in-app/online) and PAPER_COUPON.
      - `requires_authentication` boolean: RequiresAuthentication is true when the offer's own published rules mark it as needing a signed-in Popeyes Rewards account to redeem -- derived from the offer's rules, not assumed. This build does not call any account/loyalty-scoped API; it only reports what the offer's own public CMS record says about itself.
      - `section` string: Section is the offer catalog's own grouping (e.g. "For Two"), when Popeyes assigns one -- most offers do not have one.
      - `short_code` string: ShortCode is the offer's own promo/redemption code, when published.
    - `source_url` string
  - `msg` unknown

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/028417aa35bb?raw)
