logo

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[] and delivery[] 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 mid as /g/..., /m/..., or a bare Google entity ID such as 11x38c65wl.
  • Localized availability: use gl, hl, and google_domain to request regional provider lists.
  • No browser rendering: Scrape.do fetches and parses the provider shelf directly.

Endpoint

GET https://api.scrape.do/plugin/google/food

Request Parameters

Required

ParameterTypeDescription
tokenstringYour Scrape.do API authentication token
midstringRestaurant Google entity ID, for example /g/11x38c65wl. Bare IDs such as 11x38c65wl are accepted and normalized to /g/11x38c65wl

Localization

ParameterTypeDefaultDescription
glstringusCountry code, for example us, gb, ca, or au
hlstringenLanguage code, for example en, es, or fr
google_domainstringgoogle.comGoogle 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" }
FieldTypeDescription
namestringRestaurant 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
}
FieldTypeDescription
namestringProvider name as displayed, for example Uber Eats, Sauce, or Online Ordering by DoorDash
order_urlstringProvider ordering deep link. Pickup entries usually include pickup=true; delivery entries usually include delivery=true or a delivery path
imagestringProvider logo URL. Omitted when Google does not supply one
timestringETA label, for example Ready in 11 min or Delivers in 30-45 min. Omitted when unavailable
feesstring[]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_businessbooleantrue 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 mid is invalid, or the restaurant is temporarily unavailable for ordering.
  • mid must identify a Google entity with a /g/<id> or /m/<id> style ID after normalization.

Error Handling

{ "error": "error message" }

Common Errors

StatusErrorDescription
400token is requiredMissing API token
400mid is required (e.g. /g/11x38c65wl)Missing restaurant entity ID
400mid is not a valid Google entity id (e.g. /g/11x38c65wl)mid is not a /g/<id> or /m/<id> entity ID after normalization
400invalid google_domainUnrecognized Google domain
502request failedUpstream fetch failed. Retry the request
502failed to parse food providersGoogle returned no provider list for the supplied restaurant or page shape. Verify the mid and retry
500internal server errorTransient server error. Retry the request

On this page