epicurious.com APIepicurious.com ↗
Access Epicurious recipe details, search results, and user reviews via API. Returns ingredients, instructions, ratings, tags, and paginated review data.
curl -X GET 'https://api.parse.bot/scraper/5845300a-1ec6-4b6c-89a0-f68f4d5daba0/search_recipes?page=1&query=pasta' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for recipes on Epicurious. Returns a paginated list of recipes with titles, URLs, descriptions, ratings, and content types. Results may include recipes, articles, galleries, and videos.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search keyword (e.g., 'chicken', 'pasta', 'chocolate cake') |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"query": "string, the search query used",
"results": "array of result objects with title, url, description, rating, review_count, thumbnail, type, and tags",
"total_pages": "integer, total number of pages available",
"total_results": "integer, total number of results matching the query"
},
"sample": {
"data": {
"page": 1,
"query": "chicken",
"results": [
{
"url": "https://www.epicurious.com/recipes/food/views/quick-chicken-piccata",
"tags": [],
"type": "recipe",
"title": "Chicken Piccata",
"rating": 4.63,
"thumbnail": null,
"description": "Chicken piccata is a classic Italian dish made from pounded flat chicken breasts dredged in all-purpose flour, pan-fried, and topped with a lemony white wine and caper sauce.",
"review_count": 26
}
],
"total_pages": 403,
"total_results": 3219
},
"status": "success"
}
}About the epicurious.com API
The Epicurious API exposes 3 endpoints covering recipe search, full recipe details, and user reviews from Epicurious.com. The get_recipe_details endpoint returns structured ingredients, step-by-step instructions, timing information, and a story_id that links directly to the get_recipe_reviews endpoint. Search results from search_recipes include ratings, review counts, content type classification, and thumbnail URLs.
Recipe Search
The search_recipes endpoint accepts a query string (e.g., 'chicken', 'chocolate cake') and an optional page integer for pagination. Each result object in the results array includes title, url, description, rating, review_count, thumbnail, type, and tags. The type field distinguishes between recipes, articles, galleries, and videos, so you can filter to only recipe-type results. The response also exposes total_results and total_pages for building paginated flows.
Recipe Details
Pass any Epicurious recipe URL to get_recipe_details to retrieve the full record. The ingredients field is an array of group objects — each group has a group label and an items array where every item carries text, amount, unit, and item fields, making it straightforward to parse structured ingredient data. The instructions field follows the same grouped structure with steps arrays. Additional fields include times (an object keyed by label such as activeTime and totalTime), yield, images, rating, tags, and description. The response also returns a story_id string required by the reviews endpoint.
User Reviews
The get_recipe_reviews endpoint takes a story_id obtained from get_recipe_details and returns an array of reviews, each with id, body, created_at, rating, likes, and an author object containing name and location. Pagination uses cursor-based navigation: the page_info object exposes has_next_page and end_cursor, and you pass end_cursor as the after parameter to retrieve the next batch. The optional limit parameter controls how many reviews are returned per request.
- Build a recipe recommendation feed filtered by Epicurious rating and tag fields from search results
- Aggregate structured ingredient lists across multiple recipes to generate automated grocery lists
- Analyze user review sentiment and location data from the
authorfield to study regional food preferences - Extract
activeTimeandtotalTimefrom recipe details to surface quick-prep meals under a time threshold - Sync Epicurious recipe tags and descriptions into a personal cookbook or meal planning application
- Track recipe rating changes over time by periodically querying
get_recipe_detailsfor specific URLs - Collect paginated review datasets for training recipe quality or preference models
| 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 | 250 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 Epicurious have an official developer API?+
What does the `get_recipe_details` endpoint return for ingredients, and how are they structured?+
group string label (useful for recipes with sections like 'For the sauce') and an items array. Every item includes text (the full ingredient line), amount, unit, and item as separate parsed fields, so you don't need to parse the ingredient string yourself.How does pagination work in `get_recipe_reviews`?+
page_info object with has_next_page (boolean) and end_cursor (a timestamp string or null). Pass the end_cursor value as the after parameter in your next request to retrieve the following page of reviews.Does the API return nutritional information for recipes?+
get_recipe_details response covers ingredients, instructions, times, tags, ratings, images, and yield, but does not include a nutrition facts field. You can fork this API on Parse and revise it to add a nutritional data endpoint if that field is available on the recipe page.Can I retrieve a list of recipes by category or cuisine tag without a text search?+
search_recipes endpoint requires a query string, so browsing by category or cuisine without a keyword is not directly supported. Search results do include tags on each result object, which you can use to filter client-side. You can fork this API on Parse and revise it to add a category or tag-browse endpoint.