Google Food API
Fetch Google Food online-ordering providers for restaurants as structured JSON
The Google Food API returns the online-ordering providers shown on a restaurant's Google "Order online" page. One request returns both the pickup and delivery lists as structured JSON, so you do not need to render the page or make separate requests for each fulfillment mode.
Credit Usage: Each successful request costs 10 credits. For bulk processing, use the Async API with plugins.
Key Features
- Pickup and delivery in one response:
pickup[]anddelivery[]are returned together, in Google's display order. - Ordering deep links: each provider includes its Google Food ordering URL when available.
- Provider metadata: names, logos, ETA labels, fee labels, and preferred-by-business flags are parsed into clean fields.
- Google entity IDs: pass a restaurant
midas/g/...,/m/..., or a bare Google entity ID such as11x38c65wl. - Localized availability: use
gl,hl, andgoogle_domainto request regional provider lists. - No browser rendering: Scrape.do fetches and parses the provider shelf directly.
Endpoint
GET https://api.scrape.do/plugin/google/foodRequest Parameters
Required
| Parameter | Type | Description |
|---|---|---|
token | string | Your Scrape.do API authentication token |
mid | string | Restaurant Google entity ID, for example /g/11x38c65wl. Bare IDs such as 11x38c65wl are accepted and normalized to /g/11x38c65wl |
Localization
| Parameter | Type | Default | Description |
|---|---|---|---|
gl | string | us | Country code, for example us, gb, ca, or au |
hl | string | en | Language code, for example en, es, or fr |
google_domain | string | google.com | Google domain to query, for example google.co.uk |
Example Usage
Restaurant Providers
curl "https://api.scrape.do/plugin/google/food?mid=/g/11x38c65wl&gl=us&token=$TOKEN"Bare Entity ID
curl "https://api.scrape.do/plugin/google/food?mid=11kskr5rtl&gl=us&token=$TOKEN"Response
Top-Level Shape
{
"search_parameters": { ... },
"restaurant": { "name": "Fortuna NYC" },
"pickup": [ ... ],
"delivery": [ ... ]
}pickup and delivery are always arrays. When Google does not show providers for a fulfillment mode, that field is returned as an empty array instead of null.
search_parameters
{
"engine": "google_food",
"type": "choose_provider",
"mid": "/g/11x38c65wl",
"gl": "us",
"hl": "en"
}restaurant
Restaurant metadata exposed by Google for the order-online page.
{ "name": "Fortuna NYC" }| Field | Type | Description |
|---|---|---|
name | string | Restaurant name as displayed by Google |
pickup[] / delivery[]
Each entry is one ordering provider.
{
"name": "Online Ordering by DoorDash",
"order_url": "https://order.online/store/-33601791/?delivery=true&hideModal=true&utm_source=gfo&rwg_token=AE37R_...",
"image": "https://lh3.googleusercontent.com/lHbUaJLjsUBai5bzcmTAVueYBjuXwDO_...",
"time": "Delivers in 29 min",
"fees": ["Service fee 10%", "Delivery fee $3.99"],
"preferred_by_business": false
}| Field | Type | Description |
|---|---|---|
name | string | Provider name as displayed, for example Uber Eats, Sauce, or Online Ordering by DoorDash |
order_url | string | Provider ordering deep link. Pickup entries usually include pickup=true; delivery entries usually include delivery=true or a delivery path |
image | string | Provider logo URL. Omitted when Google does not supply one |
time | string | ETA label, for example Ready in 11 min or Delivers in 30-45 min. Omitted when unavailable |
fees | string[] | Fee labels shown under the provider, for example ["No fee"] or ["Delivery fee $1.99", "Service fee may apply"]. Omitted when none are shown |
preferred_by_business | boolean | true when Google marks the provider as preferred by the business. Omitted or false otherwise |
Ordering links are short-lived. order_url values can contain single-use Google Food tokens. Use them promptly instead of caching them long term.
Notes
- One request returns both pickup and delivery provider lists.
- Provider order, ETAs, fees, and availability can vary by
gl,hl, restaurant, and Google's current inventory. - Empty provider lists usually mean Google does not show online ordering for that mode, the
midis invalid, or the restaurant is temporarily unavailable for ordering. midmust identify a Google entity with a/g/<id>or/m/<id>style ID after normalization.
Error Handling
{ "error": "error message" }Common Errors
| Status | Error | Description |
|---|---|---|
400 | token is required | Missing API token |
400 | mid is required (e.g. /g/11x38c65wl) | Missing restaurant entity ID |
400 | mid is not a valid Google entity id (e.g. /g/11x38c65wl) | mid is not a /g/<id> or /m/<id> entity ID after normalization |
400 | invalid google_domain | Unrecognized Google domain |
502 | request failed | Upstream fetch failed. Retry the request |
502 | failed to parse food providers | Google returned no provider list for the supplied restaurant or page shape. Verify the mid and retry |
500 | internal server error | Transient server error. Retry the request |

