Allrecipes APIallrecipes.com ↗
Access Allrecipes data via API: search recipes by keyword, retrieve ingredients, nutrition, cook times, ratings, and user reviews. 3 endpoints.
What is the Allrecipes API?
The Allrecipes API exposes 3 endpoints for retrieving recipe data from allrecipes.com, including full ingredient lists, step-by-step instructions, nutritional facts, and user reviews. The get_recipe_details endpoint returns over 10 structured fields per recipe — covering prep time, cook time, servings, author, rating, and a full nutrition object. The search_recipes endpoint supports paginated keyword queries, and list_recipes_a_z provides an alphabetical category directory for broad browsing.
curl -X GET 'https://api.parse.bot/scraper/b0dc514a-15e8-4a86-be7a-1745ac3b62c9/search_recipes?query=chicken&offset=0' \ -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 allrecipes-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.
"""AllRecipes SDK — search recipes, get details, browse categories."""
from parse_apis.allrecipes import AllRecipes, RecipeNotFound
client = AllRecipes()
# Search for recipes by keyword — limit= caps total items fetched.
for summary in client.recipesummaries.search(query="lasagna", limit=3):
print(summary.title, summary.url)
# Drill into one recipe for full details via .first()
summary = client.recipesummaries.search(query="chicken parmesan", limit=1).first()
if summary:
recipe = summary.details()
print(recipe.title, recipe.rating, recipe.total_time)
print("Ingredients:", len(recipe.ingredients))
for step in recipe.instructions[:2]:
print(" -", step[:80])
if recipe.nutrition:
print("Calories:", recipe.nutrition.calories)
# Browse all categories from the A-Z directory
for cat in client.categories.list(limit=5):
print(cat.label, cat.url)
# Typed error handling: catch RecipeNotFound for a missing recipe
try:
gone = client.recipes.get(url="https://www.allrecipes.com/recipe/000000/no-such-recipe/")
print(gone.title)
except RecipeNotFound as exc:
print(f"Recipe not found: {exc.url}")
print("Exercised: recipesummaries.search, summary.details, categories.list, recipes.get + RecipeNotFound")
Full-text search over AllRecipes by keyword. Returns up to 24 recipe summaries per page. Pagination is offset-based in increments of 24. Each result contains a title and URL suitable for fetching full details via get_recipe_details.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g. 'chicken', 'lasagna', 'pasta') |
| offset | integer | Results offset for pagination (increments of 24) |
{
"type": "object",
"fields": {
"query": "search keyword echoed back",
"offset": "integer offset used",
"results": "array of recipe summary objects each containing title (string) and url (string)",
"has_next": "boolean indicating whether more results are available"
},
"sample": {
"data": {
"query": "chicken",
"offset": 0,
"results": [
{
"url": "https://www.allrecipes.com/recipe/8858/cream-of-chicken-breasts/",
"title": "Cream of Chicken Breasts"
},
{
"url": "https://www.allrecipes.com/recipe/242342/fiesta-slow-cooker-shredded-chicken-tacos/",
"title": "Slow Cooker Chicken Tacos"
}
],
"has_next": true
},
"status": "success"
}
}About the Allrecipes API
Searching Recipes
The search_recipes endpoint accepts a query string (e.g. 'chicken', 'lasagna') and returns up to 24 results per page as an array of objects, each containing a title and url. Pagination is handled via the offset parameter in increments of 24; the has_next boolean in the response tells you whether additional pages exist. This is the starting point for any workflow that needs to discover recipes by topic.
Recipe Detail Fields
Once you have a recipe URL — either from search results or a known allrecipes.com path — pass it to get_recipe_details. The response includes title, author, rating (as a string like '4.9'), servings, prep_time, cook_time, category (an array of strings), and a nutrition object covering calories, fat, protein, and related values. The reviews array contains per-review fields: author, rating, text, and date, allowing you to analyze community feedback alongside nutritional data.
Category Directory
The list_recipes_a_z endpoint takes no inputs and returns a letters array — each entry has a label (category name) and a url pointing to that category on Allrecipes. This is useful for building category browsers or discovery tools without needing a specific search term.
Limitations and Data Shape
The get_recipe_details response does not currently include raw ingredient quantities as a parsed, structured list — ingredients appear as part of the instructions context. The search_recipes results return titles and URLs only; detailed fields are only available by following up with get_recipe_details. Review volume is not capped in the response spec, but very lightly reviewed recipes may return sparse reviews arrays.
The Allrecipes API is a managed, monitored endpoint for allrecipes.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when allrecipes.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 allrecipes.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 recipe search interface filtered by keyword using
search_recipeswith pagination viaoffset. - Aggregate nutritional data across multiple recipes to compare calorie and protein content using the
nutritionobject. - Display user sentiment for a recipe by surfacing review
text,rating, anddatefromget_recipe_details. - Populate a meal planning app with cook times, prep times, and serving sizes from recipe detail responses.
- Generate a category browsing experience using the alphabetical directory from
list_recipes_a_z. - Track average recipe ratings across a cuisine category by combining search results with per-recipe
ratingfields. - Enrich a food database with structured author attribution and category tags from
get_recipe_details.
| 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 Allrecipes have an official developer API?+
What does `get_recipe_details` return for nutrition data?+
nutrition field is an object containing values such as calories, fat, and protein. The exact sub-fields depend on what Allrecipes publishes for a given recipe — not every recipe has a complete nutrition panel, so some fields may be absent or null for certain entries.Does `search_recipes` return ingredients or instructions directly?+
search_recipes endpoint returns only title and url per result, plus pagination metadata (offset, has_next). To get ingredients, instructions, and nutrition, you need to call get_recipe_details with the URL from the search results.Does the API return a structured, parsed ingredient list (quantities, units, ingredient name separated)?+
get_recipe_details response provides recipe data including instructions and nutrition, but ingredients are not broken into discrete machine-readable fields like quantity, unit, and name. You can fork this API on Parse and revise it to add a structured ingredient parser endpoint.How does pagination work in `search_recipes`, and are there limits on how deep you can paginate?+
offset parameter in increments of 24. The has_next boolean indicates whether another page exists. Allrecipes imposes its own limits on how many results are accessible for a given query, so very high offsets may return empty result sets even when has_next was previously true.