Tiny Plates API
A read API for thousands of recipes scraped from the web and normalized into one model. Every recipe has structured ingredients, numbered steps, times in seconds, servings, nutrition, media and classification — whatever shape the site it came from published.
Base URL
Every endpoint hangs off one host. There is no version prefix in the path; the current model is version 2 and is described by the OpenAPI document.
https://api.tinyplates.devYour first request
Create a key — it takes a minute and comes with 500 requests a day — then ask for a recipe.
curl 'https://api.tinyplates.dev/recipes?limit=1' \
-H 'Authorization: Bearer rd_your_api_key'The quickstart walks through a real request and its response, in curl, JavaScript and Python.
Endpoints
9 endpoints, all GET, none of which take a request body.
- GET
/recipesPage through the recipe database, newest first, filtered by cuisine, course, category, diet, ingredient, language or total time. - GET
/recipes/{id}Fetch a single recipe by its id, with structured ingredients, numbered steps, times, nutrition and media. - GET
/searchSearch recipes by meaning as well as wording, across names, ingredients and descriptions, and return only the fields you need. - GET
/pantryRank recipes by how much of them your pantry already covers, with the missing ingredients listed. - GET
/shopping-listTurn several recipes and their serving counts into one list, grouped by aisle. - GET
/popularThe best-loved recipes in the database, ranked by rating and by how many people rated them. - GET
/substitutionsWhat to use instead of an ingredient, in what amount, and when not to. - GET
/ingredientsThe canonical ingredient vocabulary, most used first, with every spelling seen per language. - GET
/vocabulariesThe closed lists recipes are classified with: cuisines, courses, diets, allergens and units.
Conventions
- Responses are JSON. Errors are always
{ error: { message } }— see errors. - Durations are seconds, never formatted strings. Timestamps are ISO 8601.
- A field that is absent is unknown, not empty. The API omits what a source did not publish rather than guessing at it.
cuisines,courses, diets, allergens and units come from closed lists — see filtering and vocabularies.- List endpoints page with
limitandoffset— see pagination.