Liquor APIliquor.com ↗
Access liquor.com cocktail recipes, ingredients, ratings, user comments, and editorial articles. Search by keyword or browse by category with 5 endpoints.
What is the Liquor API?
The liquor.com API exposes 5 endpoints covering cocktail recipes, editorial articles, category browsing, full-text search, and user comments. Use get_recipe to retrieve a single cocktail's title, ingredient list, prep and cook times, structured rating data, and an article_id that links directly to the get_recipe_comments endpoint for Disqus-sourced reviews.
curl -X GET 'https://api.parse.bot/scraper/8e72ae31-915d-4350-b89a-49e4878138ce/get_recipe?url_or_slug=recipes%2Fmargarita' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace liquor-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
Liquor.com Recipe API - Search, browse, and explore cocktail recipes.
Get your API key from: https://parse.bot/settings
"""
from parse_apis.liquor.com_api import Liquor, Recipe, RecipeSummary, Comment, Article
# Initialize the client
liquor = Liquor(api_key="YOUR_API_KEY")
# Search for cocktail recipes
for result in liquor.recipes.search(query="margarita"):
print(result.title, result.url)
# Navigate from summary to full recipe details
recipe = result.details()
print(recipe.title, recipe.author, recipe.prep_time)
# Print ingredients
for ingredient in recipe.ingredients:
print(ingredient)
# Print instructions
for step in recipe.instructions:
print(step)
# Access rating info
print(recipe.rating.ratingValue, recipe.rating.ratingCount)
# List user comments on this recipe
for comment in recipe.comments.list():
print(comment.name, comment.text, comment.created_at, comment.upvotes)
break
# Browse recipes by category
for item in liquor.recipes.by_category(category="cocktail-and-other-recipes-4779343"):
print(item.title, item.url, item.thumbnail)
# Fetch an article directly
article = Article(_api=liquor, url="https://www.liquor.com/articles/mojito")
print(article.title, article.author, article.date_published)
Fetch a single cocktail recipe by its URL slug or full URL. Returns structured recipe data including title, ingredients, instructions, ratings, timing, and the article_id needed to retrieve user comments via the comments sub-resource.
| Param | Type | Description |
|---|---|---|
| url_or_slugrequired | string | Recipe URL slug (e.g. 'recipes/margarita') or full URL |
{
"type": "object",
"fields": {
"url": "full URL of the recipe",
"tags": "array of tag strings",
"title": "recipe name",
"yield": "array of yield values",
"author": "recipe author name",
"rating": "object with ratingValue and ratingCount",
"cook_time": "ISO duration",
"prep_time": "ISO duration",
"article_id": "numeric ID for use with get_recipe_comments",
"total_time": "ISO duration",
"description": "recipe description",
"ingredients": "array of ingredient strings",
"instructions": "array of instruction step strings",
"date_modified": "ISO datetime of last modification",
"date_published": "ISO datetime of publication"
},
"sample": {
"data": {
"url": "https://www.liquor.com/recipes/margarita",
"tags": [],
"title": "Margarita",
"yield": [
"1"
],
"author": "Liquor.com",
"rating": {
"ratingCount": "1322",
"ratingValue": "4.3"
},
"cook_time": "PT0M",
"prep_time": "PT3M",
"article_id": "4787239",
"total_time": "PT3M",
"description": "The classic Margarita combines tequila, lime and triple sec.",
"ingredients": [
"2 ounces blanco tequila",
"1/2 ounce orange liqueur"
],
"instructions": [
"Shake until well-chilled.",
"Strain into a rocks glass."
],
"date_modified": "2026-05-05T15:50:42-04:00",
"date_published": "2016-11-01T15:10:40-04:00"
},
"status": "success"
}
}About the Liquor API
Recipe Data
The get_recipe endpoint accepts either a URL slug (e.g. recipes/margarita) or a full URL and returns the recipe's title, author, tags, yield, prep_time, cook_time, and total_time in ISO duration format. The rating object includes both a ratingValue and a ratingCount, giving a quantitative signal of a recipe's popularity. The article_id field in the response is the key for fetching community feedback via get_recipe_comments.
Search and Category Browsing
search_recipes takes a query string and returns a ranked list of matching results, each with a title, url, thumbnail, and category. This works for ingredient-based queries like whiskey sour as well as spirit categories like rum. list_recipes_by_category accepts a category slug or full URL and returns a similar set of result cards, making it straightforward to enumerate all recipes under a given taxonomy node such as cocktail-and-other-recipes-4779343.
Comments and Editorial Content
get_recipe_comments requires the article_id from a get_recipe call and returns a comments array where each entry includes username, name, text, created_at, upvotes, and downvotes. The get_article endpoint handles editorial and guide content — pass an articles/ slug or full URL to get the article's title, author, date_published, and a body string with paragraphs separated by double newlines.
The Liquor API is a managed, monitored endpoint for liquor.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when liquor.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official liquor.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a cocktail recipe database indexed by ingredient using
search_recipeswith spirit-name queries - Aggregate user sentiment for specific drinks by pairing
get_reciperatings withget_recipe_commentsupvote/downvote counts - Enumerate all recipes in a category with
list_recipes_by_categoryto populate a drinks menu app - Extract publication dates and body text from mixology guides via
get_articlefor content research - Track recipe popularity trends over time using
ratingCountandratingValuefromget_recipe - Collect structured cocktail metadata (prep time, yield, tags) for a nutritional or drinks-planning tool
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does liquor.com have an official developer API?+
What does get_recipe_comments return, and how do I connect it to a recipe?+
comments array with per-comment fields: username, name, text, created_at, upvotes, and downvotes, plus a total count. To use it, first call get_recipe with a recipe slug — that response includes an article_id string (e.g. 4787239) which you then pass as the required input to get_recipe_comments.Does the API return a full ingredient list with quantities for each recipe?+
get_recipe endpoint returns ingredients as part of its response, but individual ingredient objects are not currently broken out into separate quantity, unit, and name sub-fields in the documented schema. The API covers title, tags, yield, times, rating, author, and article_id as discrete fields. You can fork this API on Parse and revise it to add structured ingredient parsing if your use case requires normalized quantity and unit data.Does list_recipes_by_category support pagination for large categories?+
total count and a results array but does not expose a page or offset parameter for stepping through large result sets. It covers the recipe cards surfaced for a given category slug. You can fork this API on Parse and revise it to add pagination support if you need to retrieve deeper result pages.