Blue Apron APIblueapron.com ↗
Access Blue Apron's weekly menu, full cookbook, and detailed recipes with ingredients, nutrition, and step-by-step instructions via a simple REST API.
What is the Blue Apron API?
The Blue Apron API covers 4 endpoints that expose the current weekly menu, the full cookbook catalog, and per-recipe detail including ingredients, step-by-step instructions, and nutrition facts. Use get_recipe_detail to retrieve structured data like calories, protein, fiber, and an ordered instruction list for any recipe slug sourced from the menu or cookbook listings.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/d4d12e0f-c4d5-4fb6-b5c4-7b119447b448/get_menu' \ -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 blueapron-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.
"""Blue Apron Recipe API — browse menus, search recipes, get cooking details."""
from parse_apis.blue_apron_recipe_api import BlueApron, RecipeNotFound
client = BlueApron()
# Browse this week's menu offerings by category
for item in client.menus.list(limit=5):
print(item.title, "|", item.category, "|", item.price_per_serving)
# Search the cookbook for salmon recipes
for recipe in client.cookbooks.search(query="salmon", limit=3):
print(recipe.title, "-", recipe.subtitle)
# Get full recipe details including ingredients and instructions
try:
detail = client.cookbooks.get(slug="honey-glazed-salmon-with-smoky-habanero-corn-barley", recipe_type="standard-meal-kit")
print(detail.title, "|", detail.description)
print(f"Cook time: {detail.active_cook_time}m active, {detail.total_cook_time}m total")
print(f"Nutrition: {detail.nutrition.calories} cal, {detail.nutrition.protein}g protein, {detail.nutrition.fiber}g fiber")
for ing in detail.ingredients[:3]:
print(f" {ing.quantity} {ing.name}")
for step in detail.instructions[:2]:
print(f" Step {step.step_number}: {step.title}")
except RecipeNotFound as exc:
print(f"Recipe not found: {exc.slug}")
# Browse full cookbook listing
for recipe in client.cookbooks.list(limit=3):
print(recipe.title, "|", recipe.cook_time, "min |", recipe.tags)
print("exercised: menus.list / cookbooks.search / cookbooks.get / cookbooks.list")
Returns the current week's available meal offerings from Blue Apron, grouped by category (Meal Kits, Dish by Blue Apron, Assemble & Bake, etc.). Results change weekly as new meals rotate in. Each item includes basic metadata; use get_recipe_detail with the slug for full instructions.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of menu item objects with id, title, subtitle, category, image_url, cook_time, calories, price_per_serving, tags"
},
"sample": {
"data": {
"items": [
{
"id": "fb20802c-cbaa-4f0d-8f4f-4ef18bbfa0fd",
"tags": [
"Customer Favorite"
],
"title": "Salmon Sushi Rice Bowls",
"calories": null,
"category": "Meal Kits",
"subtitle": "with Avocado, Spicy Mayo & Chili Crisp",
"cook_time": 25,
"image_url": "https://ba-image.wonder.com/image/origin/blueapron/4e4b3644-62d2-4edc-91ac-28879152b4f8.jpg",
"price_per_serving": "$13.59/serv"
}
]
},
"status": "success"
}
}About the Blue Apron API
Menu and Cookbook Access
The get_menu endpoint returns this week's orderable meal offerings grouped by category — Meal Kits, Dish by Blue Apron, Assemble & Bake, and similar rotation groups. Each item includes id, title, subtitle, cook_time, calories, price_per_serving, and tags. The menu refreshes weekly, so results will differ from call to call as meals rotate out. The get_cookbook_listing endpoint returns the full historical recipe catalog as a single, unpaginated array of summary objects sharing the same metadata shape.
Recipe Detail
For full data, pass a recipe slug to get_recipe_detail. The response includes a structured ingredients array (each entry carries name, quantity, and an optional image_url), an instructions array with step_number, title, body, and optional image_url per step, and a nutrition object with calories, protein, and fiber. The optional recipe_type parameter (e.g. '15-minute-meal-kit', 'seasonal-meal-kit') refines URL construction when the recipe belongs to a non-standard category. Slugs are available from both get_menu and get_cookbook_listing response items.
Search
The search_recipes endpoint accepts a query string and returns matching recipe summaries from the full cookbook. Matching is against title and subtitle fields. Results are returned as a flat array with no pagination; an empty array means no matches. There is no filter-by-category or filter-by-nutrition option at the search layer — those fields are available only after fetching individual recipe detail.
The Blue Apron API is a managed, monitored endpoint for blueapron.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when blueapron.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 blueapron.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 meal planning app that surfaces the current week's Blue Apron menu with cook times and calorie counts.
- Index the full cookbook catalog to build a searchable recipe database with title and tag filtering.
- Pull structured ingredient lists from
get_recipe_detailto auto-generate grocery shopping lists. - Extract step-by-step instructions for display in a smart kitchen display or voice assistant.
- Compare nutrition fields (calories, protein, fiber) across cookbook recipes to recommend meals by dietary goal.
- Monitor weekly menu rotations over time to track which meal categories and tags appear most frequently.
- Use
search_recipeswith ingredient keywords to find recipes that match what a user has on hand.
| 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 Blue Apron have an official public developer API?+
What does `get_menu` return and how often does it change?+
get_menu returns the meals currently available to order for the upcoming week, grouped by category. Each item includes id, title, subtitle, category, cook_time, calories, price_per_serving, and tags. The data changes weekly as Blue Apron rotates its offerings, so repeated calls will return different meals over time.Does `get_recipe_detail` return allergen or dietary-restriction information?+
tags (badge labels like 'Calorie Smart' or 'Vegetarian'), a nutrition object with calories, protein, and fiber, and a structured ingredients array. Explicit allergen fields (e.g. contains gluten, tree nuts) are not part of the current response shape. You can fork this API on Parse and revise it to add an allergen-parsing endpoint if that data is present on the recipe page.Can I filter the cookbook listing by category, cook time, or nutrition range?+
get_cookbook_listing returns the full catalog as a flat array with no server-side filtering. The search_recipes endpoint matches against title and subtitle only. Category and nutrition filtering would need to be applied client-side against the returned fields, or you can fork this API on Parse and revise it to add a filtered-listing endpoint.Is there pagination for the cookbook listing or search results?+
get_cookbook_listing nor search_recipes uses pagination — both return all matching results in a single response array. For the cookbook this means the full catalog is returned in one call, which may be a large payload depending on how many recipes are in the catalog at the time of the request.