One shopping list for a week of recipes
Pick your recipes, set the servings, and get one list sorted by aisle.
Meal planners are fun to start. Picking five dinners takes a minute. Then comes the boring part: turning them into one list you can actually shop from.
Two recipes both want onions. One says grams, the other says "2 onions". One serves four, but you're cooking for six. Someone has to add it all up. We figured that someone should be the API.
So /shopping-list takes up to 20 recipes and gives you back one list. Want a recipe scaled? Add :servings after its id:
curl 'https://api.tinyplates.dev/shopping-list?recipes=6a9820a88f8122ec891b680b:6,6a9820e58f8122ec891b68a4' \
-H 'Authorization: Bearer rd_your_api_key'
That's a chicken tikka masala for six, plus some roasted cherry tomatoes as written. Here's part of what comes back:
{
"items": [
{
"category": "dairy",
"display": "1 cup + 3 tbsp pecorino romano",
"name": "pecorino romano",
"quantity": { "value": 1, "unit": "cup" },
"extras": [{ "value": 3, "unit": "tbsp" }],
"recipeIds": ["6a9820e58f8122ec891b68a4"]
},
{
"category": "meat",
"display": "1.2 kg chicken thighs",
"name": "chicken thighs",
"quantity": { "value": 1.2, "unit": "kg" },
"recipeIds": ["6a9820a88f8122ec891b680b", "6a9820e58f8122ec891b68a4"]
}
]
}
A few nice things are going on here. The chicken from both recipes is now one line. When amounts can't be added up neatly, like a cup and three tablespoons, we keep them side by side instead of making up a weird number. Every item has an aisle, like dairy, meat or produce, so you can sort the list the way a shop is laid out. And recipeIds tells you where each item came from. Drop a recipe from the plan and you know exactly which lines to remove.
Scaling and units
The same smarts work on a single recipe. Ask for any number of servings, in metric or imperial:
curl 'https://api.tinyplates.dev/recipes/6a9820a88f8122ec891b680b?servings=2&units=metric' \
-H 'Authorization: Bearer rd_your_api_key'
Amounts come out the way a cook would say them. 0.5 l becomes 500 ml. 1500 g becomes 1.5 kg. Oven temperatures switch too. If we know how heavy a cup of something is, like flour, we turn it into grams. If we don't, we leave the cup alone and tell you in conversion.unweighed. No guessing.
You can also start from the other end. Tell /pantry what's in your fridge:
curl 'https://api.tinyplates.dev/pantry?ingredients=chicken,rice,onion&maxMissing=1' \
-H 'Authorization: Bearer rd_your_api_key'
You get recipes back with what you have and what you're missing. So you can show "you've got everything" next to "you just need cream". We assume you have salt and oil. Set staples=false if you don't want that.
Want to see it in action? We built a little shopping list demo. Pick some recipes and watch the list build itself. Your picks live in the URL, so you can send a list to someone else.
This is a great base for a weekly meal planner, a batch cooking app, or a "what can I cook tonight" screen. You could even send the list straight to a grocery delivery service.
All of this works on the free plan, with 50 requests a day. Grab a key and give it a go.