7NOW API endpoint
Returns every currently discounted item in a store, paginated, each with the promotion driving the discount -- its id, shopper-facing description ("2 for $4", "On Sale $7"), promotional price where the offer has a single-unit one, and run dates. A busy store carries several hundred; the response also reports a store-wide availability summary across all of them before paging. This is the store-wide offers listing: the per-category browse endpoints surface promotions only for the items they happen to return, and pulling them all otherwise means walking the entire catalog. Pass a promos[].id to GET /7now/promotion to see every item that same promotion covers. store_id comes from GET /7now/stores; lat and lon are accepted but inert (store_id alone selects the store).
/7now/dealsQuery parameters:
store_id (required) — 7NOW store id, from GET /7now/stores, e.g. 39640.lat (optional) — accepted but inert: store_id alone selects the store. Responses are byte-identical with any value or none — measured live against three stores. Forwarded upstream for fidelity with 7now.com's own client. e.g. 40.712775.lon (optional) — accepted but inert, see lat. e.g. -74.005973.skip (optional) — pagination offset. Defaults to 0.limit (optional) — max items returned, 1-100. Defaults to 20.Response includes store_id, items[], total (all discounted items in the store, before paging), count (returned in this page), has_more, stats (total, available, out_of_stock, percentage_available across every discounted item, before paging), skip, limit, source_url, and fetched_at.
Each item carries product_id, name, brand, category, category_id (usable as GET /7now/category's category_id), subcategory, upc, calories, image_url, price_cents (the shelf price before the promotion), promos[], available, available_quantity, and age_restricted.
Each entry in promos[] carries id (pass to GET /7now/promotion), short_description, long_description, promo_type, start_date, expiration_date, and promo_price_cents. promo_price_cents is omitted for multi-buy offers — a 2 for $4 promotion has no single-unit price, and the field is absent rather than 0.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| product_id | 20 | |
| name | 20 | “Starbucks Frappuccino Chilled Coffee Drink Pumpkin Spice, 1…” and 19 other values |
| brand | 20 | “Starbucks” and 17 other values |
| category | 20 | Fresh Food (6), Drinks (4), Candy (4) and 3 more |
| category_id | 20 | |
| subcategory | 20 | “Coffee” and 18 other values |
| upc | 20 | |
| calories | 19 | 5 to 450, median 150 |
| image_url | 20 | deuktbth81ifn.cloudfront.net |
| price_cents | 20 | 99 to 2,999, median 399 |
| promos | 20 | median 1 entry |
| available | 20 | true in 20 of 20 |
| available_quantity | 20 | 1 to 100, median 8 |
| age_restricted | 20 | true in 1 of 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| store_id | string | Yes | 7NOW store id, from GET /7now/stores. | 39640 | |
| lat | number | No | Accepted but inert -- store_id alone selects the store; responses are byte-identical with any value or none. Forwarded upstream for fidelity with 7now.com's own client. | 40.712775 | |
| lon | number | No | Accepted but inert -- see lat. | -74.005973 | |
| skip | integer | No | 0 | Pagination offset. Defaults to 0. | 0 |
| limit | integer | No | 20 | Max items returned, 1-100. Defaults to 20. | 20 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/7now/deals?store_id=39640&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"store_id": "39640",
"items": [
{
"product_id": "191743-0-1",
"name": "Ben & Jerry's Sundae Cookie Vermont-ster 14oz",
"brand": "Ben & Jerry's",
"category": "Ice Cream",
"category_id": "48396",
"subcategory": "Ben & Jerry's",
"upc": "00076840004294",
"calories": "370",
"image_url": "https://deuktbth81ifn.cloudfront.net/7now/US/191743-0-1/dbq9phtnujt364jlmibq.jpg",
"price_cents": 999,
"promos": [
{
"id": "6a9746d488cc35e1bbff1584",
"short_description": "On Sale $7",
"long_description": "Item must be added to cart for discount to apply. Limit 2 offers per order.",
"promo_price_cents": 700,
"promo_type": "item",
"start_date": "09/01/2026",
"expiration_date": "10/27/2026"
}
],
"available": true,
"available_quantity": 5,
"age_restricted": false
}
],
"total": 548,
"count": 1,
"has_more": true,
"stats": {
"total": 548,
"available": 503,
"out_of_stock": 45,
"percentage_available": 92
},
"skip": 0,
"limit": 20,
"source_url": "https://www.7now.com/api/bff/unified-catalog/v1/content/homepage/sections?...§ions=deals",
"fetched_at": "2026-09-06T04:10:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/sevennow.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 | sevennow.DealsResponse | No | ||||
| data.count | integer | No | 20 | |||
| data.fetched_at | string | No | ||||
| data.has_more | boolean | No | true | |||
| data.items | array | No | ||||
| data.items[].age_restricted | boolean | No | false | |||
| data.items[].available | boolean | No | true | |||
| data.items[].available_quantity | integer | No | 5 | |||
| data.items[].brand | string | No | Ben & Jerry's | |||
| data.items[].calories | string | No | 370 | |||
| data.items[].category | string | No | Ice Cream | |||
| data.items[].category_id | string | No | 48396 | |||
| data.items[].image_url | string | No | ||||
| data.items[].name | string | No | Ben & Jerry's Sundae Cookie Vermont-ster 14oz | |||
| data.items[].price_cents | integer | No | 999 | |||
| data.items[].product_id | string | No | 191743-0-1 | |||
| data.items[].promos | array | No | ||||
| data.items[].promos[].expiration_date | string | No | 10/27/2026 | |||
| data.items[].promos[].id | string | No | 6a9746d488cc35e1bbff1584 | |||
| data.items[].promos[].long_description | string | No | ||||
| data.items[].promos[].promo_price_cents | integer | No | 700 | |||
| data.items[].promos[].promo_type | string | No | item | |||
| data.items[].promos[].short_description | string | No | On Sale $7 | |||
| data.items[].promos[].start_date | string | No | 09/01/2026 | |||
| data.items[].subcategory | string | No | Ben & Jerry's | |||
| data.items[].upc | string | No | 00076840004294 | |||
| data.limit | integer | No | 20 | |||
| data.skip | integer | No | 0 | |||
| data.source_url | string | No | ||||
| data.stats | sevennow.DealsStats | No | ||||
| data.stats.available | integer | No | 503 | |||
| data.stats.out_of_stock | integer | No | 45 | |||
| data.stats.percentage_available | integer | No | 92 | |||
| data.stats.total | integer | No | 548 | |||
| data.store_id | string | No | 39640 | |||
| data.total | integer | No | 548 | |||
| 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/7now/deals?store_id=39640&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"