Docs/Sources/Cocktail Recipes

Cocktail Recipes

Get cocktail recipes

OperationalCredits 2 per callp50 123msFood

Overview

Cocktail Recipe searches a stored collection of cocktail recipes. `name` is a case-insensitive substring match on the drink's name, so `martini` returns the Espresso Martini, French Martini and every other name containing the word. `ingredient` is a whole-word, case-insensitive match against each ingredient's name and its more specific `label`, so `gin` matches Gin but not Ginger Beer. When both are sent, `name` wins. `random=true` picks one drink at random and then searches by its name, so a random call can return more than one result when other names contain it.

Each result has `name`, `glass`, `category`, `ingredients` and `preparation`, plus `garnish` when the recipe has one. An ingredient normally carries `unit` (such as cl or dash), `amount` and `ingredient`, with an optional `label` naming a specific product such as Kahlua. Some ingredients have no fixed measure and instead come back as a single `special` text field, such as "1 short strong Espresso". `count` is the number of matches, and `filteredOn` says whether the search used `name`, `ingredient` or `random`. No match returns a 404.

`ingredientCount` counts every ingredient entry, `special` ones included. `estimatedStrength` is a rule of thumb. Spirits such as gin, vodka, rum, whiskey, tequila and brandy count in full; liqueurs and aperitifs such as vermouth, triple sec, Campari and Aperol count at half. Eight centilitres or more, or two or more spirits, is strong. Four or more, or one spirit, is medium. Only liqueurs is light, and none of either is mocktail. It does not use real ABV figures. On the Free plan `estimatedStrength` is removed.

Live Test Cocktail Recipes Source →

Formula

One function covers the whole catalog: the first argument names the source, the next are its inputs, and the field after them says which single value lands in the cell. Formulas covers the grammar that applies to all of them.

=VERVE("cocktail", A2, "count")

A2 holds the name you are looking up. Drag the formula down and each row resolves on its own.

With literal values

Nothing has to come from a cell — typed values work the same way.

=VERVE("cocktail", "martini", "count")

Inputs

Required inputs are positional, in the order below, followed by the field. Everything else is passed as a "name", value pair after that — the same shape as SUMIFS. Premium inputs are accepted on every plan but only take effect on plans that include them.

InputTypeWhere it goesDescription
nameRequiredstringargument 2 (A2)The name of the cocktail for which you want to get the recipe (e.g., martini)
length 0–100

What lands in your sheet

The field — the argument after the inputs — is what makes the formula resolve to one cell. Its value is a dot-path from the table below, so swapping it is how you pull a different value — one formula per column.

Seeing everything at once

Leave the field out and the formula returns the whole response instead: two columns, field name on the left and value on the right, spilling from the cell you typed in.

=VERVE("cocktail", A2)
Good for exploring, not for filling down

The second row's table would land on top of the first's, and every cell after the first reads #REF! (#SPILL! in Excel). Keep one per sheet, or name a field, and leave the cells below and to the right empty.

Response fields

Paths are relative to data. Each one is exactly what the field argument accepts, so swapping it is how you pull a different value into a cell. On a plan without a Premium field the cell reads #PREMIUM(field) rather than a value, so a locked field never looks like a real answer.

Use as the fieldTypeExample cell valueDescription
countnumber5Number of cocktails returned
filteredOnstringnameWhich parameter the results were filtered by
cocktailsarray[5]The matching cocktail recipes
cocktails.0.namestringEspresso MartiniName of the cocktail
cocktails.0.glassstringmartiniGlass the cocktail is traditionally served in
cocktails.0.categorystringAfter Dinner CocktailCategory the cocktail belongs to, such as after dinner or pre-dinner
cocktails.0.ingredientsarray[4]Ingredients with their measures
cocktails.0.ingredients.0.unitstringclUnit the measure is given in, such as cl or dash
cocktails.0.ingredients.0.amountnumber5How much of the ingredient to use
cocktails.0.ingredients.0.ingredientstringVodkaName of the ingredient
cocktails.0.ingredientCountnumber4Number of ingredients in the cocktail
cocktails.0.estimatedStrengthPremiumstringmediumAlcohol strength estimate: strong, medium, light, or mocktail
cocktails.0.preparationstringShake and strain into a chilled cocktail glass.How to make the cocktail

Filling a whole column

Both platforms make one batched call for a column rather than one request per cell, and both cost the same — 2 credits per row looked up. How you write it differs, because the two runtimes batch at different points.

Rows 2–100 in one call
=VERVE("cocktail", A2:A100, "count")

In Google Sheets, give the arguments ranges and the answers spill down from the cell you typed in. Custom functions there run synchronously and in isolation, so dragged cells cannot be coalesced — the range form is how a column becomes one call. The field is required here: a per-row two-column table has nowhere to spill. Use a full column per input (A2:A100, not A2) — a single-cell reference is read as row 1 only and the rest of the column comes back blank.

In Excel, type the formula once and fill down — no range form and none needed, because its runtime is asynchronous and the add-in coalesces the calls a fill produces into a single batched request. Do not hand VERVE.CALL a range: Excel flattens it into positional arguments, so A2:A100 arrives as a hundred separate arguments and the cell reads #ERR rather than filling.

Either way, column A holds your name values and the answers land beside them, one row each, blank rows skipped.

When a cell doesn't fill

A failed lookup returns readable text starting with #ERR rather than a spreadsheet error, because Excel cannot show a custom message on a real error — you would get a bare #VALUE! with no reason. The trade-off is that IFERROR() will not catch it; test with LEFT(cell, 4) = "#ERR" instead. Error handling covers the rest.

Cell readsWhat happened
#ERR Not connectedNo API key saved. Open the side panel and connect your account.
#ERR Replace <name> with a cell or valueA preview formula was copied as-is. Swap the placeholder for a cell reference.
#ERR No "x" in cocktailAn option name this source does not take. The message lists the ones it does.
#ERR No data point "…"The field path is not in the response. Check it against the table above.
#PREMIUM(field)The field exists but your plan does not include it.
#ERR Out of creditsThe cycle's credits are spent. Usage resets on your billing date.

Before the formula works

The add-in reads the API key you saved once in the side panel — the key never goes in the formula, so a shared sheet does not leak it and a collaborator without access simply sees the last calculated values.

  1. Install the add-in for Google Sheets or Excel.
  2. Open the side panel and sign in, or paste a key from your dashboard.
  3. Type the formula above into any cell.

Use cases

Bar Inventory Matching
Match available spirits against the ingredient search to show bartenders which drinks they can prepare with current bar stock.
Digital Drink Menus
Hospitality venues display drink preparation instructions and specific glassware recommendations directly on contactless tablet menus for guests.
Drink of the Day
To drive customer engagement, lifestyle apps fetch a random cocktail recipe each morning to feature on their home screen.
Event Menu Planning
Catering planners look up cocktail categories and measured ingredients to calculate supply quantities needed for upcoming wedding receptions.

Other ways to use Cocktail Recipes

Set up Cocktail Recipes on VerveSheets, or reach the same source a different way. Your VerveSheets account and credits work on all of them — one key, one balance.

Call it as a REST APIOne HTTPS endpoint and an x-api-key header, with SDKs for Node, Python and .NET.APIVerve →Reference →
Give it to an AI agentConnect over MCP and your agent calls it as a native tool — Claude, Cursor, ChatGPT.VerveKit →Reference →
Ground an agent on itA cited, machine-checkable fact your model can't produce on its own.VerveContext →Reference →

More in Food:

Was this page helpful?