GMB Food Menus
Manage food menus for Google Business Profile locations including sections, items, pricing, and dietary info via the Late API
Get Google Business Profile food menus
Fetches food menus for a connected Google Business Profile location.
Returns the full menu structure including:
- Menu names and descriptions
- Sections (e.g. Appetizers, Entrees, Drinks)
- Items with labels, pricing, dietary info, and allergens
- Item options/variants
Only available for locations with food menu support (restaurants, cafes, etc.).
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The Late account ID (from /v1/accounts)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/accounts/string/gmb-food-menus"{
"success": true,
"accountId": "64e1f0a9e2b5af0012ab34cd",
"locationId": "9281089117903930794",
"name": "accounts/123456789/locations/9281089117903930794/foodMenus",
"menus": [
{
"labels": [
{
"displayName": "Lunch Menu",
"description": "Available 11am-3pm",
"languageCode": "en"
}
],
"sections": [
{
"labels": [
{
"displayName": "Appetizers"
}
],
"items": [
{
"labels": [
{
"displayName": "Caesar Salad",
"description": "Romaine, parmesan, croutons"
}
],
"attributes": {
"price": {
"currencyCode": "USD",
"units": "12"
},
"dietaryRestriction": [
"VEGETARIAN"
]
}
}
]
}
]
}
]
}{
"error": "This endpoint is only available for Google Business Profile accounts"
}{
"error": "Access token expired. Please reconnect your Google Business Profile account."
}{
"error": "You do not have permission to access food menus for this location."
}{
"error": "Not found"
}{
"error": "string",
"details": {}
}Update Google Business Profile food menus
Updates the food menus for a connected Google Business Profile location.
Send the full menus array. Use updateMask for partial updates (e.g. "menus" to only update the menus field).
Each menu can contain sections, and each section can contain items with pricing, dietary restrictions, allergens, and more.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The Late account ID (from /v1/accounts)
Array of food menus to set
Field mask for partial updates (e.g. "menus")
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://getlate.dev/api/v1/accounts/string/gmb-food-menus" \ -H "Content-Type: application/json" \ -d '{ "menus": [ { "labels": [ { "displayName": "Dinner Menu", "languageCode": "en" } ], "sections": [ { "labels": [ { "displayName": "Mains" } ], "items": [ { "labels": [ { "displayName": "Grilled Salmon", "description": "With seasonal vegetables" } ], "attributes": { "price": { "currencyCode": "USD", "units": "24" }, "allergen": [ "FISH" ] } } ] } ] } ], "updateMask": "menus" }'{
"success": true,
"accountId": "string",
"locationId": "string",
"name": "string",
"menus": [
{
"labels": [
{
"displayName": "string",
"description": "string",
"languageCode": "string"
}
],
"sections": [
{
"labels": [
{
"displayName": "string",
"description": "string",
"languageCode": "string"
}
],
"items": [
{
"labels": [
{
"displayName": "string",
"description": "string",
"languageCode": "string"
}
],
"attributes": {
"price": {
"currencyCode": "string",
"units": "string",
"nanos": 0
},
"spiciness": "string",
"allergen": [
"string"
],
"dietaryRestriction": [
"string"
],
"servesNumPeople": 0,
"preparationMethods": [
"string"
],
"mediaKeys": [
"string"
]
},
"options": [
{
"labels": [
{
"displayName": "string",
"description": "string",
"languageCode": "string"
}
],
"attributes": {
"price": {
"currencyCode": "string",
"units": "string",
"nanos": 0
},
"spiciness": "string",
"allergen": [
"string"
],
"dietaryRestriction": [
"string"
],
"servesNumPeople": 0,
"preparationMethods": [
"string"
],
"mediaKeys": [
"string"
]
}
}
]
}
]
}
],
"cuisines": [
"string"
],
"sourceUrl": "string"
}
]
}{
"error": "Request body must include a \"menus\" array"
}{
"error": "string",
"details": {}
}{
"error": "string",
"details": {}
}{
"error": "Not found"
}{
"error": "string",
"details": {}
}