APIHub
Back to Explore

1,000,000+ Recipe and Grocery List API (v2)

The BigOven Recipe and Grocery List API v2 offers REST endpoints to create, retrieve, update, and delete recipes (including steps, photos, notes, and scans), manage recipe collections, handle user reviews and replies, and maintain grocery lists, along with search and autocomplete capabilities for recipes.

Uncategorized
apiKeyHeader
HTTPS
CORS: Unknown
Description enriched
Visit official documentation

Latency

835ms p95

Uptime

100.0% 30d

Playground

Verified

live

Endpoints

REST · JSON
GET

/recipe/photos/pending

Gets the pending by user.

POST

/recipe/post/step

Stores recipe step number and returns saved step data

  • userName (query, required)
  • recipeId (query, required)
  • stepId (query, required)
DELETE

/recipe/review/replies/{replyId}

DELETE a reply to a given review. Authenticated user must be the one who originally posted the reply.

  • replyId (path, required)
PUT

/recipe/review/replies/{replyId}

Update (PUT) a reply to a given review. Authenticated user must be the original one that posted the reply.

  • replyId (path, required)
GET

/recipe/review/{reviewId}

Get a given review by string-style ID. This will return a payload with FeaturedReply, ReplyCount. Recommended display is to list top-level reviews with one featured reply underneath. Currently, the FeaturedReply is the most recent one for that rating.

  • reviewId (path, required)
PUT

/recipe/review/{reviewId}

Update a given top-level review.

  • reviewId (path, required)
GET

/recipe/review/{reviewId}/replies

Get a paged list of replies for a given review.

  • reviewId (path, required)
  • pg (query) — the page (int), starting with 1
  • rpp (query) — results per page (int)
POST

/recipe/review/{reviewId}/replies

POST a reply to a given review. The date will be set by server. Note that replies no longer have star ratings, only top-level reviews do.

  • reviewId (path, required)
GET

/collection/{id}

Gets a recipe collection. A recipe collection is a curated set of recipes.

  • id (path, required) — the collection identifier
  • rpp (query) — results per page
  • pg (query) — page number (starting with 1)
  • test (query)
  • sessionForLogging (query)
GET

/collection/{id}/meta

Gets a recipe collection metadata. A recipe collection is a curated set of recipes.

  • id (path, required) — the collection identifier
GET

/collections

Get the list of current, seasonal recipe collections. From here, you can use the /collection/{id} endpoint to retrieve the recipes in those collections.

  • test (query)
DELETE

/grocerylist

Delete all the items on a grocery list; faster operation than a sync with deleted items.

GET

/grocerylist

Get the user's grocery list. User is determined by Basic Authentication.

POST

/grocerylist/clearcheckedlines

Clears the checked lines.

POST

/grocerylist/department

Departmentalize a list of strings -- used for ad-hoc grocery list item addition

POST

/grocerylist/item

Add a single line item to the grocery list

DELETE

/grocerylist/item/{guid}

/grocerylist/item/{guid} DELETE will delete this item assuming you own it.

  • guid (path, required)
PUT

/grocerylist/item/{guid}

Update a grocery item by GUID

  • guid (path, required)
POST

/grocerylist/line

Add a single line item to the grocery list

POST

/grocerylist/recipe

Add a Recipe to the grocery list. In the request data, pass in recipeId, scale (scale=1.0 says to keep the recipe the same size as originally posted), markAsPending (true/false) to indicate that the lines in the recipe should be marked in a "pending" (unconfirmed by user) state.

POST

/grocerylist/sync

Synchronize the grocery list. Call this with a POST to /grocerylist/sync

POST

/image/avatar

POST: /image/avatar Testing with Postman (validated 11/20/2015): 1) Remove the Content-Type header; add authentication information 2) On the request, click Body and choose "form-data", then add a line item with "key" column set to "file" and on the right, change the type of the input from Text to File. Browse and choose a JPG.

GET

/me

Indexes this instance.

PUT

/me

Puts me.

PUT

/me/personal

Puts me personal.

PUT

/me/preferences

Puts me preferences.

GET

/me/preferences/options

Gets the options.

PUT

/me/profile

Puts me.

GET

/me/skinny

Skinnies this instance.

POST

/recipe

Add a new recipe

PUT

/recipe

Update a recipe

GET

/recipe/autocomplete

Given a query, return recipe titles starting with query. Query must be at least 3 chars in length.

  • query (query, required)
  • limit (query, limit)
GET

/recipe/autocomplete/all

Automatics the complete all recipes.

  • query (query, required) — The query.
  • limit (query, required, limit) — The limit.
GET

/recipe/autocomplete/mine

Automatics the complete my recipes.

  • query (query, required) — The query.
  • limit (query, required, limit) — The limit.
GET

/recipe/categories

Get a list of recipe categories (the ID field can be used for include_cat in search parameters)

GET

/recipe/get/active/recipe

Returns last active recipe for the user

  • userName (query, required)
POST

/recipe/get/saved/step

Gets recipe single step as text

  • userName (query, required)
  • recipeId (query, required)
  • stepId (query, required)
POST

/recipe/get/step/number

Returns stored step number and number of steps in recipe

  • userName (query, required)
  • recipeId (query, required)
POST

/recipe/scan

POST an image as a new RecipeScan request 1) Fetch the filename -- DONE 2) Copy it to the pics/scan folder - ENSURE NO NAMING COLLISIONS -- DONE 3) Create 120 thumbnail size in pics/scan/120 -- DONE 4) Insert the CloudTasks record 5) Create the HIT 6) Update the CloudTasks record with the HIT ID 7) Email the requesing user 8) Call out to www.bigoven.com to fetch the image and re-create the thumbnail

  • test (query)
  • devicetype (query)
  • lat (query)
  • lng (query)
GET

/recipe/steps/{id}

Return full Recipe detail with steps. Returns 403 if the recipe is owned by someone else.

  • id (path, required) — the Recipe ID to retrieve
  • prefetch (query)
DELETE

/recipe/{id}

Delete a Recipe (you must be authenticated as an owner of the recipe)

  • id (path, required)
GET

/recipe/{id}

Return full Recipe detail. Returns 403 if the recipe is owned by someone else.

  • id (path, required) — The Recipe ID to retrieve
  • prefetch (query) — The prefetch.
GET

/recipe/{id}/zap

Zaps the recipe.

  • id (path, required) — The identifier.
POST

/recipe/{recipeId}/feedback

Feedback on a Recipe -- for internal BigOven editors

  • recipeId (path, required)
POST

/recipe/{recipeId}/image

POST: /recipe/{recipeId}/image?lat=42&lng=21&caption=this%20is%20my%20caption Note that caption, lng and lat are all optional, but must go on the request URI as params because this endpoint needs a multipart/mime content header and will not parse JSON in the body along with it. Testing with Postman (validated 11/20/2015): 1) Remove the Content-Type header; add authentication information 2) On the request, click Body and choose "form-data", then add a line item with "key" column set to "file" and on the right, change the type of the input from Text to File. Browse and choose a JPG.

  • recipeId (path, required)
  • caption (query)
  • lat (query)
  • lng (query)
GET

/recipe/{recipeId}/images

Get all the images for a recipe. DEPRECATED. Please use /recipe/{recipeId}/photos.

  • recipeId (path, required) — Recipe ID (required)
POST

/recipe/{recipeId}/note

HTTP POST a new note into the system.

  • recipeId (path, required) — recipeId (int)
DELETE

/recipe/{recipeId}/note/{noteId}

Delete a review do a DELETE Http request of /note/{ID}

  • recipeId (path, required) — recipeId (int)
  • noteId (path, required) — noteId (int)
GET

/recipe/{recipeId}/note/{noteId}

Get a given note. Make sure you're passing authentication information in the header for the user who owns the note.

  • recipeId (path, required) — recipe identifier (integer)
  • noteId (path, required) — The note ID (note -- it's not the RecipeID)
PUT

/recipe/{recipeId}/note/{noteId}

HTTP PUT (update) a Recipe note (RecipeNote).

  • recipeId (path, required)
  • noteId (path, required)
GET

/recipe/{recipeId}/notes

recipe/100/notes

  • recipeId (path, required) — recipeId (int)
  • pg (query) — page (int, starting from 1)
  • rpp (query) — recipeId
GET

/recipe/{recipeId}/photos

Get all the photos for a recipe

  • recipeId (path, required) — Recipe ID (required)
  • pg (query)
  • rpp (query)
GET

/recipe/{recipeId}/related

Get recipes related to the given recipeId

  • recipeId (path, required) — The recipe id
  • pg (query) — The page
  • rpp (query) — The results per page
GET

/recipe/{recipeId}/review

Get *my* review for the recipe {recipeId}, where "me" is determined by standard authentication headers

  • recipeId (path, required)
POST

/recipe/{recipeId}/review

Add a new review. Only one review can be provided per {userId, recipeId} pair. Otherwise your review will be updated.

  • recipeId (path, required)
DELETE

/recipe/{recipeId}/review/{reviewId}

DEPRECATED! - Deletes a review by recipeId and reviewId. Please use recipe/review/{reviewId} instead.

  • recipeId (path, required)
  • reviewId (path, required)
GET

/recipe/{recipeId}/review/{reviewId}

Get a given review - DEPRECATED. See recipe/review/{reviewId} for the current usage. Beginning in January 2017, BigOven moded from an integer-based ID system to a GUID-style string-based ID system for reviews and replies. We are also supporting more of a "Google Play" style model for Reviews and Replies. That is, there are top-level Reviews and then an unlimited list of replies (which do not carry star ratings) underneath existing reviews. Also, a given user can only have one review per recipe. Existing legacy endpoints will continue to work, but we strongly recommend you migrate to using the newer endpoints listed which do NOT carry the "DEPRECATED" flag.

  • reviewId (path, required) — int
  • recipeId (path, required) — int
PUT

/recipe/{recipeId}/review/{reviewId}

HTTP PUT (update) a recipe review. DEPRECATED. Please see recipe/review/{reviewId} PUT for the new endpoint. We are moving to a string-based primary key system, no longer integers, for reviews and replies.

  • reviewId (path, required) — reviewId (int)
  • recipeId (path, required) — recipeId (int)
GET

/recipe/{recipeId}/reviews

Get paged list of reviews for a recipe. Each review will have at most one FeaturedReply, as well as a ReplyCount.

  • recipeId (path, required) — recipe id (int)
  • pg (query) — the page (int), starting with 1
  • rpp (query) — results per page (int)
GET

/recipe/{recipeId}/scans

Gets a list of RecipeScan images for the recipe. There will be at most 3 per recipe.

  • recipeId (path, required) — the recipe identifier (int)
GET

/recipes

Search for recipes. There are many parameters that you can apply. Starting with the most common, use title_kw to search within a title. Use any_kw to search across the entire recipe. If you'd like to limit by course, set the parameter "include_primarycat" to one of (appetizers,bread,breakfast,dessert,drinks,maindish,salad,sidedish,soup,marinades,other). If you'd like to exclude a category, set exclude_cat to one or more (comma-separated) list of those categories to exclude. If you'd like to include a category, set include_cat to one or more (comma-separated) of those categories to include. To explicitly include an ingredient in your search, set the parameter "include_ing" to a CSV of up to three ingredients, e.g.:include_ing=mustard,chicken,beef%20tips To explicitly exclude an ingredient in your search, set the parameter "exclude_ing" to a CSV of up to three ingredients. All searches must contain the paging parameters pg and rpp, which are integers, and represent the page number (1-based) and results per page (rpp). So, to get the third page of a result set paged with 25 recipes per page, you'd pass pg=3&rpp=25 If you'd like to target searches to just a single target user's recipes, set userId=the target userId (number). Or, you can set username=theirusername vtn;vgn;chs;glf;ntf;dyf;sff;slf;tnf;wmf;rmf;cps cuisine photos filter=added,try,favorites,myrecipes\r\n\r\n folder=FolderNameCaseSensitive coll=ID of Collection

  • any_kw (query) — Search anywhere in the recipe for the keyword
  • folder (query) — Search in a specific folder name for the authenticated user
  • coll (query) — Limit to a collection ID number
  • filter (query) — optionally set to either "myrecipes", "try", "favorites","added" to filter to just the authenticated user's recipe set
  • title_kw (query) — Search just in the recipe title for the keyword
  • userId (query) — Set the target userid to search their public recipes
  • username (query) — Set the target username to search their public recipes
  • token (query)
  • photos (query) — if set to true, limit search results to photos only
  • boostmine (query) — if set to true, boost my own recipes in my folders so they show up high in the list (at the expense of other sort orders)
  • include_cat (query) — integer of the subcategory you'd like to limit searches to (see the /recipe/categories endpoint for available id numbers). For instance, 58 is "Main Dish > Casseroles".
  • exclude_cat (query) — like include_cat, set this to an integer to exclude a specific category
  • include_primarycat (query) — csv indicating up to three top-level categories -- valid values are [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other]
  • exclude_primarycat (query) — csv indicating integer values for up to 3 top-level categories -- valid values are 1...11 [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other]
  • include_ing (query) — A CSV representing up to 3 ingredients to include, e.g., tomatoes,corn%20%starch,chicken
  • exclude_ing (query) — A CSV representing up to 3 ingredients to exclude (Powersearch-capable plan required)
  • cuisine (query) — Limit to a specific cuisine. Cooks can enter anything free-form, but the few dozen preconfigured values are Afghan,African,American,American-South,Asian,Australian,Brazilian,Cajun,Canadian,Caribbean,Chinese,Croatian,Cuban,Dessert,Eastern European,English,French,German,Greek,Hawaiian,Hungarian,India,Indian,Irish,Italian,Japanese,Jewish,Korean,Latin,Mediterranean,Mexican,Middle Eastern,Moroccan,Polish,Russian,Scandanavian,Seafood,Southern,Southwestern,Spanish,Tex-Mex,Thai,Vegan,Vegetarian,Vietnamese
  • db (query)
  • userset (query) — If set to a given username, it'll force the search to filter to just that username
  • servingsMin (query) — Limit to yield of a given number size or greater. Note that cooks usually enter recipes by Servings, but sometimes they are posted by "dozen", etc. This parameter simply specifies the minimum number for that value entered in "yield."
  • totalMins (query) — Optional. If supplied, will restrict results to recipes that can be made in {totalMins} or less. (Convert "1 hour, 15 minutes" to 75 before passing in.)
  • maxIngredients (query) — Optional. If supplied, will restrict results to recipes that can be made with {maxIngredients} ingredients or less
  • minIngredients (query) — Optional. If supplied, will restrict results to recipes that have at least {minIngredients}
  • rpp (query) — integer; results per page
  • pg (query) — integer: the page number
  • vtn (query) — when set to 1, limit to vegetarian (Powersearch-capable plan required)
  • vgn (query) — when set to 1, limit to vegan (Powersearch-capable plan required)
  • chs (query) — when set to 1, limit to contains-cheese (Powersearch-capable plan required)
  • glf (query) — when set to 1, limit to gluten-free (Powersearch-capable plan required)
  • ntf (query) — when set to 1, limit to nut-free (Powersearch-capable plan required)
  • dyf (query) — when set to 1, limit to dairy-free (Powersearch-capable plan required)
  • sff (query) — when set to 1, limit to seafood-free (Powersearch-capable plan required)
  • slf (query) — when set to 1, limit to shellfish-free (Powersearch-capable plan required)
  • tnf (query) — when set to 1, limit to tree-nut free (Powersearch-capable plan required)
  • wmf (query) — when set to 1, limit to white-meat free (Powersearch-capable plan required)
  • rmf (query) — when set to 1, limit to red-meat free (Powersearch-capable plan required)
  • cps (query) — when set to 1, recipe contains pasta, set to 0 means contains no pasta (Powersearch-capable plan required)
  • champion (query) — optional. When set to 1, this will limit search results to "best of" recipes as determined by various internal editorial and programmatic algorithms. For the most comprehensive results, don't include this parameter.
  • synonyms (query) — optional, default is false. When set to true, BigOven will attempt to apply synonyms in search (e.g., excluding pork will also exclude bacon)
GET

/recipes/random

Get a random, home-page-quality Recipe.

GET

/recipes/raves

Get the recipe/comment tuples for those recipes with 4 or 5 star ratings

  • pg (query) — page, starting with 1
  • rpp (query) — results per page
GET

/recipes/recentviews

Get a list of recipes that the authenticated user has most recently viewed

  • pg (query) — Page number starting with 1
  • rpp (query) — results per page
GET

/recipes/top25random

Search for recipes. There are many parameters that you can apply. Starting with the most common, use title_kw to search within a title. Use any_kw to search across the entire recipe. If you'd like to limit by course, set the parameter "include_primarycat" to one of (appetizers,bread,breakfast,dessert,drinks,maindish,salad,sidedish,soup,marinades,other). If you'd like to exclude a category, set exclude_cat to one or more (comma-separated) list of those categories to exclude. If you'd like to include a category, set include_cat to one or more (comma-separated) of those categories to include. To explicitly include an ingredient in your search, set the parameter "include_ing" to a CSV of up to three ingredients, e.g.:include_ing=mustard,chicken,beef%20tips To explicitly exclude an ingredient in your search, set the parameter "exclude_ing" to a CSV of up to three ingredients. All searches must contain the paging parameters pg and rpp, which are integers, and represent the page number (1-based) and results per page (rpp). So, to get the third page of a result set paged with 25 recipes per page, you'd pass pg=3&rpp=25 If you'd like to target searches to just a single target user's recipes, set userId=the target userId (number). Or, you can set username=theirusername vtn;vgn;chs;glf;ntf;dyf;sff;slf;tnf;wmf;rmf;cps cuisine photos filter=added,try,favorites,myrecipes\r\n\r\n folder=FolderNameCaseSensitive coll=ID of Collection

  • any_kw (query) — Search anywhere in the recipe for the keyword
  • folder (query) — Search in a specific folder name for the authenticated user
  • coll (query) — Limit to a collection ID number
  • filter (query) — optionally set to either "myrecipes", "try", "favorites","added" to filter to just the authenticated user's recipe set
  • title_kw (query) — Search just in the recipe title for the keyword
  • userId (query) — Set the target userid to search their public recipes
  • username (query) — Set the target username to search their public recipes
  • token (query)
  • photos (query) — if set to true, limit search results to photos only
  • boostmine (query) — if set to true, boost my own recipes in my folders so they show up high in the list (at the expense of other sort orders)
  • include_cat (query) — integer of the subcategory you'd like to limit searches to (see the /recipe/categories endpoint for available id numbers). For instance, 58 is "Main Dish > Casseroles".
  • exclude_cat (query) — like include_cat, set this to an integer to exclude a specific category
  • include_primarycat (query) — csv indicating up to three top-level categories -- valid values are [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other]
  • exclude_primarycat (query) — csv indicating integer values for up to 3 top-level categories -- valid values are 1...11 [appetizers,bread,breakfast,desserts,drinks,maindish,salads,sidedish,soups,marinades,other]
  • include_ing (query) — A CSV representing up to 3 ingredients to include, e.g., tomatoes,corn%20%starch,chicken
  • exclude_ing (query) — A CSV representing up to 3 ingredients to exclude (Powersearch-capable plan required)
  • cuisine (query) — Limit to a specific cuisine. Cooks can enter anything free-form, but the few dozen preconfigured values are Afghan,African,American,American-South,Asian,Australian,Brazilian,Cajun,Canadian,Caribbean,Chinese,Croatian,Cuban,Dessert,Eastern European,English,French,German,Greek,Hawaiian,Hungarian,India,Indian,Irish,Italian,Japanese,Jewish,Korean,Latin,Mediterranean,Mexican,Middle Eastern,Moroccan,Polish,Russian,Scandanavian,Seafood,Southern,Southwestern,Spanish,Tex-Mex,Thai,Vegan,Vegetarian,Vietnamese
  • db (query)
  • userset (query) — If set to a given username, it'll force the search to filter to just that username
  • servingsMin (query) — Limit to yield of a given number size or greater. Note that cooks usually enter recipes by Servings, but sometimes they are posted by "dozen", etc. This parameter simply specifies the minimum number for that value entered in "yield."
  • totalMins (query) — Optional. If supplied, will restrict results to recipes that can be made in {totalMins} or less. (Convert "1 hour, 15 minutes" to 75 before passing in.)
  • maxIngredients (query) — Optional. If supplied, will restrict results to recipes that can be made with {maxIngredients} ingredients or less
  • minIngredients (query) — Optional. If supplied, will restrict results to recipes that have at least {minIngredients}
  • vtn (query) — when set to 1, limit to vegetarian (Powersearch-capable plan required)
  • vgn (query) — when set to 1, limit to vegan (Powersearch-capable plan required)
  • chs (query) — when set to 1, limit to contains-cheese (Powersearch-capable plan required)
  • glf (query) — when set to 1, limit to gluten-free (Powersearch-capable plan required)
  • ntf (query) — when set to 1, limit to nut-free (Powersearch-capable plan required)
  • dyf (query) — when set to 1, limit to dairy-free (Powersearch-capable plan required)
  • sff (query) — when set to 1, limit to seafood-free (Powersearch-capable plan required)
  • slf (query) — when set to 1, limit to shellfish-free (Powersearch-capable plan required)
  • tnf (query) — when set to 1, limit to tree-nut free (Powersearch-capable plan required)
  • wmf (query) — when set to 1, limit to white-meat free (Powersearch-capable plan required)
  • rmf (query) — when set to 1, limit to red-meat free (Powersearch-capable plan required)
  • cps (query) — when set to 1, recipe contains pasta, set to 0 means contains no pasta (Powersearch-capable plan required)
  • champion (query) — optional. When set to 1, this will limit search results to "best of" recipes as determined by various internal editorial and programmatic algorithms. For the most comprehensive results, don't include this parameter.
  • synonyms (query) — optional, default is false. When set to true, BigOven will attempt to apply synonyms in search (e.g., excluding pork will also exclude bacon)
GET

/recipes/{id}

Same as GET recipe but also includes the recipe videos (if any)

  • id (path, required) — The Recipe ID to retrieve
  • prefetch (query) — The prefetch.

66 endpoints auto-detected

Authentication

This API uses an API key, passed in the "X-BigOven-API-Key" header. No OAuth required.

curl -X GET \
  "https://api2.bigoven.com/recipe/photos/pending" \
  -H "X-BigOven-API-Key: YOUR_API_KEY"

api2.bigoven.com · HTTPS only