7NOW API endpoint
Returns one product's complete reference record: description, the full nutrition panel (serving size, calories, fat, cholesterol, sodium, carbohydrates, protein, vitamins and allergen "contains" list), the declared ingredient list, the allergen statement, size and flavor variants, related products, and any attached promotions. product_id comes from GET /7now/search, /7now/catalog or /7now/category. This record is store-independent and deliberately carries no price, availability or stock -- use those three endpoints for per-store pricing and availability. An unknown product_id returns a 404.
/7now/productQuery parameters:
product_id (required) — 7NOW product id, from GET /7now/search, GET /7now/catalog, or GET /7now/category, e.g. 178322-2-6-2.Response includes product_id, slin, upc, name, brand, category, category_id, flavor_name, size_value, description, calories, age_restricted, limit_per_order, tags[], images[], nutrition[], nutrition_disclaimers[], allergens, ingredients[], flavor_choices[], size_choices[], related_items[], promos[], source_url, and fetched_at. An unknown product_id returns a 404.
nutrition[] is a list of panel sections, each { "group": ..., "entries": [{ "name", "value" }] }. Known groups are emitted in label order: serving_size, calories, fat, cholesterol, sodium, carbohydrates, protein, potassium, vitamins, contains. Values are upstream's own display strings with units included ("11.0Gram", "850mg", "15%") and are not normalized to numbers. A section upstream adds later is passed through with its own lowercased name rather than dropped.
related_items[] carries up to 20 compact summaries (product_id, name, brand, category, calories, size_value, flavor_name, image_url); use a product_id with this same endpoint for the full record.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| product_id | string | Yes | 7NOW product id, from GET /7now/search, /7now/catalog or /7now/category. | 178322-2-6-2 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/7now/product?product_id=178322-2-6-2" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"product_id": "178322-2-6-2",
"slin": "178322",
"upc": "00072180687340",
"name": "Large Pizza - Ultimate Pepperoni",
"brand": "Hot Food Pizza",
"category": "Fresh Food",
"category_id": "48423",
"flavor_name": "Pepperoni Pizza",
"size_value": "1WholePizza",
"description": "Pepperoni Pizza loaded with julienne and diced pepperoni, mozzarella, provolone, and parmesan cheeses on red sauce.",
"calories": "360",
"age_restricted": false,
"limit_per_order": 100,
"tags": [
"Pizza"
],
"images": [
"https://deuktbth81ifn.cloudfront.net/7now/US/178322-2-6-2/wghjlebnc3luzvgqmpvz.jpg"
],
"nutrition": [
{
"group": "serving_size",
"entries": [
{
"name": "Serving Size",
"value": "1/8 pizza (111g)"
}
]
},
{
"group": "calories",
"entries": [
{
"name": "Calories",
"value": "360"
}
]
},
{
"group": "cholesterol",
"entries": [
{
"name": "Cholesterol",
"value": "45mg"
}
]
}
],
"nutrition_disclaimers": [
"Percent Daily Values are based on a 2,000 calorie diet."
],
"allergens": "CONTAINS MILK, SOY, WHEAT.",
"ingredients": [
"WHEAT FLOUR",
"WATER",
"SALT"
],
"flavor_choices": [
"Pepperoni Pizza",
"Cheese Pizza"
],
"size_choices": [
"1ct",
"1WholePizza"
],
"related_items": [
{
"product_id": "170776-1-8",
"name": "Whole Breakfast Pizza - Sausage",
"brand": "Hot Food Pizza",
"category": "Fresh Food",
"calories": "550",
"image_url": "https://deuktbth81ifn.cloudfront.net/7now/US/170776-1-8/c473df23034036e1c6c9980fc8f0b1f4e9e63096.jpg"
}
],
"promos": [
{
"id": "6a849a8fa1df2409010c719f",
"short_description": "On Sale $6.99",
"long_description": "$6.99 Whole Pizza!",
"promo_price_cents": 699,
"start_date": "08/21/2026",
"expiration_date": "01/05/2027"
}
],
"source_url": "https://www.7now.com/product/178322-2-6-2",
"fetched_at": "2026-09-05T21:10:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/sevennow.productResponseDoc
| 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.ProductResponse | No | ||||
| data.age_restricted | boolean | No | false | |||
| data.allergens | string | No | CONTAINS MILK, SOY, WHEAT. | Allergens is upstream's allergen statement, e.g. "CONTAINS MILK, SOY, WHEAT." Absent on products with no declared allergens. | ||
| data.brand | string | No | Hot Food Pizza | |||
| data.calories | string | No | 360 | |||
| data.category | string | No | Fresh Food | |||
| data.category_id | string | No | 48423 | |||
| data.description | string | No | ||||
| data.fetched_at | string | No | ||||
| data.flavor_choices | array | No | ||||
| data.flavor_name | string | No | Pepperoni Pizza | |||
| data.images | array | No | ||||
| data.ingredients | array | No | Ingredients is the declared ingredient list. Upstream splits it on commas, so a parenthesised sub-list arrives as several entries. | |||
| data.limit_per_order | integer | No | 100 | |||
| data.name | string | No | Large Pizza - Ultimate Pepperoni | |||
| data.nutrition | array | No | ||||
| data.nutrition[].entries | array | No | ||||
| data.nutrition[].entries[].name | string | No | Total Fat | |||
| data.nutrition[].entries[].value | string | No | 11.0Gram | |||
| data.nutrition[].group | string | No | fat | |||
| data.nutrition_disclaimers | array | No | NutritionDisclaimers carries upstream's own RDI/daily-value notices. | |||
| data.product_id | string | No | 178322-2-6-2 | |||
| data.promos | array | No | ||||
| data.promos[].expiration_date | string | No | 01/05/2027 | |||
| data.promos[].id | string | No | 6a849a8fa1df2409010c719f | |||
| data.promos[].long_description | string | No | $6.99 Whole Pizza! | |||
| data.promos[].promo_price_cents | integer | No | 699 | |||
| data.promos[].short_description | string | No | On Sale $6.99 | |||
| data.promos[].start_date | string | No | 08/21/2026 | |||
| data.related_items | array | No | ||||
| data.related_items[].brand | string | No | Hot Food Pizza | |||
| data.related_items[].calories | string | No | 550 | |||
| data.related_items[].category | string | No | Fresh Food | |||
| data.related_items[].flavor_name | string | No | Sausage Breakfast Pizza | |||
| data.related_items[].image_url | string | No | ||||
| data.related_items[].name | string | No | Whole Breakfast Pizza - Sausage | |||
| data.related_items[].product_id | string | No | 170776-1-8 | |||
| data.related_items[].size_value | string | No | 1WholePizza | |||
| data.size_choices | array | No | ||||
| data.size_value | string | No | 1WholePizza | |||
| data.slin | string | No | 178322 | |||
| data.source_url | string | No | ||||
| data.tags | array | No | ||||
| data.upc | string | No | 00072180687340 | |||
| 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/7now/product?product_id=178322-2-6-2" \
-H "x-api-key: $CRAWLORA_API_KEY"