Tiny Plates API
A read API for thousands of recipes scraped from the web and normalized into one model. Every public recipe has structured ingredients, numbered steps, times in seconds, servings, nutrition, media, classification and whether it contains each regulated allergen.
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 50 requests a day — then ask for the most popular recipe.
curl 'https://api.tinyplates.dev/popular?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
/searchSearch recipes by meaning as well as wording, across names, ingredients and descriptions, and return only the fields you need. - GET
/popularThe best-loved recipes in the database, ranked by rating and by how many people rated them, so one five-star review cannot beat a long-loved favourite. - GET
/recipes/{id}Fetch a single recipe by its id, with structured ingredients, numbered steps, times, nutrition and media, scaled to the number of servings you ask for. - GET
/pantryRank recipes by how much of them your pantry already covers, with the missing ingredients listed, so you can see what you can cook right now. - GET
/shopping-listTurn several recipes and their serving counts into one shopping list, grouped by aisle, with the amounts of shared ingredients added together. - GET
/recipesBusiness planBusiness plan only. Page through the whole database, newest first, filtered by cuisine, course, category, diet, ingredient, language or total time. - GET
/substitutionsWhat to use instead of an ingredient, in what amount and how to handle it, and when the swap does not work. An ingredient with no known swap gets no guess. - GET
/ingredientsThe canonical ingredient vocabulary, most used first, with every spelling seen per language, so "tomat", "Tomate" and "tomato" resolve to one id. - GET
/vocabulariesThe closed lists recipes are classified with: cuisines, courses, diets, EU and US regulated allergen features, and units. Fetch them once and cache them.
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, regulated allergen features and units come from closed lists — see filtering and vocabularies.- List endpoints page with
limitandoffset— see pagination.