Endpoint Playground
Returns the promotional offers a Grubhub restaurant is currently running -- free items, BOGO deals, spend-and-save discounts -- the same data that drives the "2 offers available" badge on the site's own restaurant cards. An empty list is the common, legitimate case: most restaurants have no active promotion at any given moment. `amount.value` is 0 for a free-item offer since the item itself is the value, not a monetary discount; `amount.amount_maximum` then caps the item's dollar value, and `amount.order_minimum` is the spend threshold required to unlock it.
14 Oct 2026: Single record response; 2 fields had a value in every checked item; 1 field was empty in this sample.
Sample value profiles: count: 0.
curl 'https://api.crawlora.net/api/v1/grubhub/offers?restaurant_id=1338141&latitude=40.7128&longitude=-74.006' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| restaurant_id | string | Yes | 1338141 | Grubhub restaurant id |
| latitude | number | Yes | 40.7128 | Diner location latitude |
| longitude | number | Yes | -74.006 | Diner location longitude |
{
"code": 200,
"msg": "OK",
"data": {
"restaurant_id": "1338141",
"offers": [
{
"entitlement_id": "6b4aee10-a242-11f1-ae11-9fd715717d12",
"entitlement_type": "UNIFIED_REWARD",
"offer_type": "ENTERPRISE_REWARD",
"title": "Free Double Cheeseburger",
"description": "Get a free Double Cheeseburger (up to a $10 value) on your delivery order when you spend $20+. ...",
"pill_text": "$10 off",
"end_date": "2026-10-01T03:55:00.000Z",
"amount": {
"value": 0,
"type": "MENU_ITEM",
"currency": "USD",
"order_minimum": 20,
"amount_maximum": 10
},
"redeem_item_count": 1
}
],
"count": 1,
"source_url": "https://api-gtm.grubhub.com/offers/availability/1338141?orderType=STANDARD&locationMode=DELIVERY&whenFor=2026-09-01T08%3A00%3A00.000Z&isSubscriber=false&deliveryLatitude=40.75368499&deliveryLongitude=-73.99916077&nonAnchorCart=false&featureFlags=includeLockedOffers",
"fetched_at": "2026-09-01T08:00:00Z"
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.