Sonic API endpoint
Returns the promotions currently published on Sonic Drive-In's national deals page -- each with its marketing headline, public name, description, legal terms, call-to-action label and link, and creative image. This page is not listed in Sonic's own sitemap, so GET /sonic/sitemap will never surface it. Deals are national marketing offers, not per-store pricing; there is no price field in this source. Between campaigns Sonic can publish the page with no promotions at all, which returns an empty deals array with count 0 rather than an error.
/sonic/dealsTakes no query parameters.
Deals are national marketing offers, not per-store pricing: there is no price field in this source, and availability is "at participating locations" rather than resolved per store. Use /sonic/nearby or /sonic/store to find a specific restaurant.
Response includes heading, count, deals[], source_url, and fetched_at.
Each entry in deals[] has:
section — the on-page grouping the deal appeared under, e.g. Featured Deals.name — the promotion's public name.headline — the marketing headline shown on the card.description — the card's body copy.terms — the promotion's legal/limitations text, when published.cta_text — the call-to-action button label, e.g. Order Now.cta_url — the call-to-action destination, absolute for on-site links.image_url — the promotion's full-resolution creative.| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| section | 3 | “Featured Deals” |
| name | 3 | “$1.99 Jr Bacon Cheeseburger (CW 2 2026)_ EDV” and 2 other values |
| headline | 3 | “BACON MAKES EVERYTHING BETTER” and 2 other values |
| description | 3 | “The Jr Bacon Cheeseburger brings crispy bacon, melty cheese…” and 2 other values |
| terms | 3 | median 262 characters |
| cta_text | 3 | “Order Now” |
| cta_url | 3 | sonicdrivein.com |
| image_url | 3 | imagedelivery.net |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sonic/deals" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"heading": "Featured Sonic Deals",
"count": 2,
"deals": [
{
"section": "Featured Deals",
"name": "$1.99 Jr Bacon Cheeseburger",
"headline": "BACON MAKES EVERYTHING BETTER",
"description": "The Jr Bacon Cheeseburger brings crispy bacon, melty cheese, and juicy beef together for just $1.99.",
"terms": "Tax Not Included. Add-ons extra. For a limited time at participating SONIC® Drive-Ins.",
"cta_text": "Order Now",
"cta_url": "https://www.sonicdrivein.com/menu/categories/1-99-menu",
"image_url": "https://imagedelivery.net/cyuZzWywsYlsu7DPQZIgOg/4572a7b1/download"
}
],
"source_url": "https://www.sonicdrivein.com/_next/data/<buildId>/deals.json",
"fetched_at": "2026-09-05T12:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/sonic.dealsResponseDoc
| 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 | sonic.DealsResponse | No | ||||
| data.count | integer | No | 3 | |||
| data.deals | array | No | ||||
| data.deals[].cta_text | string | No | Order Now | CTAText is the call-to-action button label, e.g. "Order Now". | ||
| data.deals[].cta_url | string | No | https://www.sonicdrivein.com/menu/categories/1-99-menu | CTAURL is the destination the call-to-action links to, absolute for on-site links. | ||
| data.deals[].description | string | No | The Jr Bacon Cheeseburger brings crispy bacon, melty cheese, and juicy beef together for just $1.99. | Description is the card's body copy. | ||
| data.deals[].headline | string | No | BACON MAKES EVERYTHING BETTER | Headline is the marketing headline shown on the card. | ||
| data.deals[].image_url | string | No | ImageURL is the promotion's full-resolution creative. | |||
| data.deals[].name | string | No | $1.99 Jr Bacon Cheeseburger | Name is the promotion's public name. | ||
| data.deals[].section | string | No | Featured Deals | Section is the on-page grouping this deal appeared under, e.g. "Featured Deals". | ||
| data.deals[].terms | string | No | Terms is the promotion's legal/limitations text when published. | |||
| data.fetched_at | string | No | ||||
| data.heading | string | No | Featured Sonic Deals | |||
| data.source_url | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 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/sonic/deals" \
-H "x-api-key: $CRAWLORA_API_KEY"