Racion
App · 11 actions
Plan a week of family meals priced for the store you shop at, with one shopping list rounded up to whole packs, in 22 countries. Set allergies, foods to avoid, a budget and an eating goal; plan a holiday table for any number of guests or price a menu you picked; and search thousands of recipes with nutrition and cost per portion. Prices are estimates from national statistics. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Build a weekly meal plan | Plan seven days of breakfasts, lunches and dinners for your household, priced for the store you shop at, with one shopping list rounded up to whole packs. |
| Get a meal plan | Open a meal plan or holiday table built earlier, with its dishes and shopping list. |
| Get a recipe | Get one recipe in full: ingredients per portion, step-by-step method, nutrition, cooking tips and the estimated cost of a portion in your country. |
| List countries | List the 22 countries Racion prices food for, with each one's currency, typical daily food budget and where the prices come from. |
| List holiday tables | List the celebrations Racion can plan a table for, with the courses each one has and a suggested number of guests. |
| List ingredients | Look up the ingredients Racion knows, with the shop aisle each is in. |
| List recipe collections | List Racion's curated collections, such as quick dinners, high-protein weeks or holiday tables, with the recipes in each. |
| List stores | List the supermarkets and discounters Racion prices in a country, and how each compares with the national average. |
| Plan a holiday table | Build a full menu for a celebration (Christmas, a birthday, Thanksgiving, a picnic) for a number of guests: starters, mains, salads and dessert, with the shopping list and its estimated cost. |
| Price a menu of chosen dishes | Pick the dishes yourself, up to 30, say how many people each one feeds, and get the shopping list and its estimated cost. |
| Search recipes | Search Racion's recipes by name or ingredient, with cooking time, calories and the estimated cost of a portion in your country. |
Build a weekly meal plan
Plan seven days of breakfasts, lunches and dinners for your household, priced for the store you shop at, with one shopping list rounded up to whole packs. Set allergies, foods to avoid, a budget and an eating goal. Prices are estimates from national statistics. No API key required.
Inputs
- Country
countrytextRequired - The country to price the food for. Prices and the currency come from it.
- Store
storetext - Where you shop. Each store is priced from the country's average, so a discounter comes out cheaper than a premium supermarket. Leave empty for the first store in the list.
- Adults
adultsnumber - How many adults eat, 1 to 10.From 1 to 10. Default:
2. - Children's ages
children_ageslist - The age in years of each child who eats with you, 1 to 17, for example 7 and 12. Portions are scaled to their age.
- Meals
mealslist - Which meals to plan each day. Breakfast, lunch and dinner when left empty.One or more of:
breakfast,lunch,dinner,snack. - Kitchen equipment
kitchen_equipmentlist - What your kitchen has, so every dish can be cooked. A stove and an oven when left empty.One or more of:
stove,oven,microwave,airfryer(Air fryer),multicooker,blender,mixer,grill,steamer,meatgrinder(Meat grinder). - Allergies
allergieslist - Dishes containing any of these are never offered.One or more of:
gluten,dairy(Milk),eggs,nuts(Tree nuts),peanuts,fish,seafood(Shellfish),soy. - Food groups to avoid
avoid_food_groupslist - Leave out whole groups, for example meat for a vegetarian.One or more of:
meat,poultry,fish,seafood,offal,spicy(Spicy food). - Ingredients to avoid
avoid_ingredientslist - Specific ingredients nobody will eat, such as mushrooms.
- Ingredients you already have
ingredients_at_homelist - Food already in your kitchen. The planner uses it up and leaves it off the shopping list.
- Goal
goaltext - What the menu should help with.One of:
none(Just tasty),healthy(Eat well),lose(Lose weight),gain(Gain muscle). Default:none. - Budget
budgetnumber - How much to aim to spend, in the country's currency. Leave empty for no limit.At least 0.
- Budget is
budget_periodtext - Whether the budget is per person per day or for the whole week.One of:
per_person_per_day(Per person per day),whole_week(For the whole week). Default:per_person_per_day. - Favour a collection
collectiontext - Prefer dishes from one of Racion's collections, such as quick dinners or high-protein meals.
- Start date
start_datedate - The first day of the plan. Next Monday when left empty.
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
budget_for_plannumber- The budget the planner aimed for, for the whole plan.
budget_per_daynumber- The same budget per person per day.
calories_per_daynumber- Average calories per person per day.
carbs_per_day_gnumber- Average carbohydrates per day, grams.
cook_minutes_totalnumber- Total cooking time across the plan.
cost_of_food_eatennumber- The part of the total actually eaten during the plan; the rest is what is left in opened packs.
country_codetext- The country priced, e.g. 'DE'.
created_attext- When the plan was built (UTC).
currencytext- The currency, e.g. 'EUR'.
currency_symboltext- The currency symbol, e.g. '€'.
day_countnumber- How many days.
dayslist- Each day with its dishes. A table has a single day.
fat_per_day_gnumber- Average fat per day, grams.
goaltext- The eating goal, e.g. 'Eat well'.
guestsnumber- For a table, how many guests it feeds. Empty for a week.
noteslist- Extra remarks from the planner, for example about a baby.
plan_idtext- The plan's id, for Get a meal plan.
plan_urltext- The plan's page on racion.app, with the menu, recipes and a shopping list you can tick off. Share this with people.
portionsnumber- How many adult portions each dish is scaled to; children count as part portions.
price_periodtext- The month the prices are for, e.g. 'August 2026'.
price_regiontext- The region priced, e.g. 'Germany'.
price_sourcetext- Where the price estimates come from, e.g. 'Eurostat: country price level × HICP by group'. Show it next to any amount you share.
protein_per_day_gnumber- Average protein per day, grams.
shopping_listlist- Everything to buy, grouped by aisle.
shopping_list_countnumber- How many items are on the shopping list.
shopping_list_texttext- The shopping list as plain text, one line per item under each aisle, ready to paste into an email or message.
staples_costnumber- Estimated cost of staples you usually already have.
start_datetext- The first day, as YYYY-MM-DD.
storetext- The store priced, e.g. 'Lidl'.
store_codetext- The store's code.
telegram_urltext- A link that sends this shopping list to Racion's Telegram bot, where items can be ticked off.
titletext- The table's name, such as 'Oktoberfest' or 'My table'. Empty for a week.
total_costnumber- Estimated cost of everything on the shopping list.
warningslist- Anything the planner could not satisfy, such as the budget.
Example output
{
"budget_for_plan": 112.0,
"budget_per_day": 8.0,
"calories_per_day": 1466,
"carbs_per_day_g": 113,
"cook_minutes_total": 553,
"cost_of_food_eaten": 62.04,
"country_code": "DE",
"created_at": "2026-10-15T21:34:13Z",
"currency": "EUR",
"currency_symbol": "\u20ac",
"day_count": 7,
"days": [
{
"calories": 1736,
"cook_minutes": 50,
"cost": 6.56,
"date": "2026-10-19",
"dish_count": 1,
"dishes": [
{
"calories": 727,
"carbs_g": 63,
"cook_minutes": 20,
"cooked_for_two_days": false,
"cost_per_portion": 1.23,
"course": null,
"fat_g": 40,
"leftover": false,
"meal": "dinner",
"protein_g": 27,
"recipe_id": "spagetti_al_la_karbonara",
"servings": null,
"title": "Spaghetti alla Carbonara",
"why_chosen": "finishing garlic and bacon \u00b7 under budget"
}
],
"label": "Mon"
}
],
"fat_per_day_g": 79,
"goal": "Just tasty",
"guests": null,
"notes": [],
"plan_id": "b075fdac-9d4d-473f-9a2d-e6b7a38c6e1e",
"plan_url": "https://racion.app/en/plan/b075fdac-9d4d-473f-9a2d-e6b7a38c6e1e",
"portions": 2.0,
"price_period": "August 2026",
"price_region": "Germany",
"price_source": "Eurostat: country price level \u00d7 HICP by group",
"protein_per_day_g": 78,
"shopping_list": [
{
"aisle": "Vegetables and herbs",
"cost": 0.44,
"ingredient_id": "garlic",
"name": "Garlic",
"needed": 46.0,
"pack_size": 100.0,
"to_buy": 50.0,
"unit": "g",
"used_in": [
"Warm Bean and Bacon Salad",
"Spaghetti alla Carbonara"
],
"usually_at_home": false
}
],
"shopping_list_count": 64,
"shopping_list_text": "Vegetables and herbs:\n- Garlic: 50 g, about 0.44 EUR",
"staples_cost": 28.01,
"start_date": "2026-10-19",
"store": "Lidl",
"store_code": "lidl",
"telegram_url": "https://t.me/racionappbot?start=psHX9rJ1NRz-aLea3o4xuHg",
"title": null,
"total_cost": 96.61,
"warnings": []
}Get a meal plan
Open a meal plan or holiday table built earlier, with its dishes and shopping list. Paste its id or its racion.app link. No API key required.
Inputs
- Plan
plan_idtextRequired - The plan's id or its link, for example https://racion.app/plan/b075fdac-9d4d-473f-9a2d-e6b7a38c6e1e.
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
budget_for_plannumber- The budget the planner aimed for, for the whole plan.
budget_per_daynumber- The same budget per person per day.
calories_per_daynumber- Average calories per person per day.
carbs_per_day_gnumber- Average carbohydrates per day, grams.
cook_minutes_totalnumber- Total cooking time across the plan.
cost_of_food_eatennumber- The part of the total actually eaten during the plan; the rest is what is left in opened packs.
country_codetext- The country priced, e.g. 'DE'.
created_attext- When the plan was built (UTC).
currencytext- The currency, e.g. 'EUR'.
currency_symboltext- The currency symbol, e.g. '€'.
day_countnumber- How many days.
dayslist- Each day with its dishes. A table has a single day.
fat_per_day_gnumber- Average fat per day, grams.
goaltext- The eating goal, e.g. 'Eat well'.
guestsnumber- For a table, how many guests it feeds. Empty for a week.
noteslist- Extra remarks from the planner, for example about a baby.
plan_idtext- The plan's id, for Get a meal plan.
plan_urltext- The plan's page on racion.app, with the menu, recipes and a shopping list you can tick off. Share this with people.
portionsnumber- How many adult portions each dish is scaled to; children count as part portions.
price_periodtext- The month the prices are for, e.g. 'August 2026'.
price_regiontext- The region priced, e.g. 'Germany'.
price_sourcetext- Where the price estimates come from, e.g. 'Eurostat: country price level × HICP by group'. Show it next to any amount you share.
protein_per_day_gnumber- Average protein per day, grams.
shopping_listlist- Everything to buy, grouped by aisle.
shopping_list_countnumber- How many items are on the shopping list.
shopping_list_texttext- The shopping list as plain text, one line per item under each aisle, ready to paste into an email or message.
staples_costnumber- Estimated cost of staples you usually already have.
start_datetext- The first day, as YYYY-MM-DD.
storetext- The store priced, e.g. 'Lidl'.
store_codetext- The store's code.
telegram_urltext- A link that sends this shopping list to Racion's Telegram bot, where items can be ticked off.
titletext- The table's name, such as 'Oktoberfest' or 'My table'. Empty for a week.
total_costnumber- Estimated cost of everything on the shopping list.
warningslist- Anything the planner could not satisfy, such as the budget.
Example output
{
"budget_for_plan": 112.0,
"budget_per_day": 8.0,
"calories_per_day": 1466,
"carbs_per_day_g": 113,
"cook_minutes_total": 553,
"cost_of_food_eaten": 62.04,
"country_code": "DE",
"created_at": "2026-10-15T21:34:13Z",
"currency": "EUR",
"currency_symbol": "\u20ac",
"day_count": 7,
"days": [
{
"calories": 1736,
"cook_minutes": 50,
"cost": 6.56,
"date": "2026-10-19",
"dish_count": 1,
"dishes": [
{
"calories": 727,
"carbs_g": 63,
"cook_minutes": 20,
"cooked_for_two_days": false,
"cost_per_portion": 1.23,
"course": null,
"fat_g": 40,
"leftover": false,
"meal": "dinner",
"protein_g": 27,
"recipe_id": "spagetti_al_la_karbonara",
"servings": null,
"title": "Spaghetti alla Carbonara",
"why_chosen": "finishing garlic and bacon \u00b7 under budget"
}
],
"label": "Mon"
}
],
"fat_per_day_g": 79,
"goal": "Just tasty",
"guests": null,
"notes": [],
"plan_id": "b075fdac-9d4d-473f-9a2d-e6b7a38c6e1e",
"plan_url": "https://racion.app/en/plan/b075fdac-9d4d-473f-9a2d-e6b7a38c6e1e",
"portions": 2.0,
"price_period": "August 2026",
"price_region": "Germany",
"price_source": "Eurostat: country price level \u00d7 HICP by group",
"protein_per_day_g": 78,
"shopping_list": [
{
"aisle": "Vegetables and herbs",
"cost": 0.44,
"ingredient_id": "garlic",
"name": "Garlic",
"needed": 46.0,
"pack_size": 100.0,
"to_buy": 50.0,
"unit": "g",
"used_in": [
"Warm Bean and Bacon Salad",
"Spaghetti alla Carbonara"
],
"usually_at_home": false
}
],
"shopping_list_count": 64,
"shopping_list_text": "Vegetables and herbs:\n- Garlic: 50 g, about 0.44 EUR",
"staples_cost": 28.01,
"start_date": "2026-10-19",
"store": "Lidl",
"store_code": "lidl",
"telegram_url": "https://t.me/racionappbot?start=psHX9rJ1NRz-aLea3o4xuHg",
"title": null,
"total_cost": 96.61,
"warnings": []
}Get a recipe
Get one recipe in full: ingredients per portion, step-by-step method, nutrition, cooking tips and the estimated cost of a portion in your country. No API key required.
Inputs
- Recipe
recipe_idtextRequired - The recipe's id from Search recipes, such as 'chicken_cabbage_cutlets', or its racion.app link.
- Country
countrytextRequired - The country to price the food for. Prices and the currency come from it.
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
caloriesnumber- Calories per portion.
carbs_gnumber- Carbohydrates per portion, grams.
cook_minutesnumber- Time to cook it.
cost_per_portionnumber- Estimated cost of one portion.
currencytext- The currency of the cost.
descriptiontext- A short description.
equipmentlist- Kitchen equipment it needs.
fat_gnumber- Fat per portion, grams.
freezes_welltrue/false- True when it can be frozen.
image_urltext- A photo of the dish.
ingredient_countnumber- How many ingredients.
ingredientslist- What goes in, per portion.
keeps_for_daysnumber- How many days it keeps in the fridge.
mealtext- breakfast, lunch, dinner or snack.
protein_gnumber- Protein per portion, grams.
recipe_idtext- The recipe's id.
recipe_urltext- The recipe's page on racion.app.
step_countnumber- How many steps.
stepslist- The method, one step per entry.
tagslist- Racion's tags, such as 'poultry' or 'kids'.
tip_mistakestext- Common mistakes to avoid.
tip_servingtext- What to serve it with.
tip_storagetext- How to store and reheat it.
tip_swapstext- Ingredients you can swap.
tip_why_it_workstext- The key technique and why it matters.
titletext- The dish's name.
Example output
{
"calories": 452,
"carbs_g": 21.2,
"cook_minutes": 40,
"cost_per_portion": 1.53,
"currency": "EUR",
"description": "Tender, kid-friendly cutlets made with ground chicken, shredded cabbage, and semolina. Serve with sour cream.",
"equipment": [
"stove"
],
"fat_g": 27.1,
"freezes_well": true,
"image_url": "https://racion.app/images/recipes/chicken_cabbage_cutlets.webp",
"ingredient_count": 2,
"ingredients": [
{
"amount_per_portion": 120.0,
"ingredient_id": "ground_chicken",
"name": "Ground chicken",
"unit": "g",
"usually_at_home": false
},
{
"amount_per_portion": 10.0,
"ingredient_id": "sunflower_oil",
"name": "Sunflower oil",
"unit": "ml",
"usually_at_home": true
}
],
"keeps_for_days": 3,
"meal": "dinner",
"protein_g": 29.0,
"recipe_id": "chicken_cabbage_cutlets",
"recipe_url": "https://racion.app/en/recipe/chicken_cabbage_cutlets",
"step_count": 2,
"steps": [
"Shred cabbage into thin matchsticks, scald with boiling water for 2 minutes, then drain well; grate onion finely.",
"Serve with sour cream and any side dish."
],
"tags": [
"poultry",
"pp",
"kids",
"needs_side"
],
"tip_mistakes": "Overmixing the filling makes cutlets tough.",
"tip_serving": "Pair with boiled potatoes or mashed carrots.",
"tip_storage": "Store in an airtight container for 2 days.",
"tip_swaps": "Replace semolina with 15g breadcrumbs.",
"tip_why_it_works": "Boil and wring the cabbage to remove bitterness and excess water, which prevents soggy cutlets.",
"title": "Chicken & Cabbage Cutlets"
}List countries
List the 22 countries Racion prices food for, with each one's currency, typical daily food budget and where the prices come from. No API key required.
Inputs
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
countnumber- How many countries.
countrieslist- Every country.
Example output
{
"count": 1,
"countries": [
{
"budget_levels": [
{
"name": "Tight",
"per_person_per_day": 4.0
},
{
"name": "Moderate",
"per_person_per_day": 6.0
},
{
"name": "Relaxed",
"per_person_per_day": 10.0
},
{
"name": "Premium",
"per_person_per_day": 18.0
}
],
"country_code": "DE",
"currency": "EUR",
"currency_symbol": "\u20ac",
"name": "Germany",
"price_period": "August 2026",
"price_source": "Eurostat: country price level \u00d7 HICP by group",
"store_count": 7,
"typical_budget_per_person_per_day": 6.0
}
]
}List holiday tables
List the celebrations Racion can plan a table for, with the courses each one has and a suggested number of guests. No API key required.
Inputs
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
countnumber- How many occasions.
occasionslist- Every holiday table.
Example output
{
"count": 1,
"occasions": [
{
"countries": [
"DE",
"AT",
"CH"
],
"courses": [
"Starters",
"Salads",
"Mains",
"Dessert"
],
"description": "Sausages with braised sauerkraut, caraway roast pork shoulder, warm potato salad with bacon.",
"in_season": true,
"occasion_id": "oktoberfest",
"suggested_guests": 6,
"title": "Oktoberfest"
}
]
}List ingredients
Look up the ingredients Racion knows, with the shop aisle each is in. Use the ids to say what you already have or will not eat when building a plan. No API key required.
Inputs
- Search for
querytext - Part of an ingredient's name, such as 'rice'.
- Aisle
aislelist - Only show ingredients from these aisles.One or more of:
vegetables(Vegetables and herbs),fruits(Fruit and berries),meat(Meat and poultry),fish(Fish and seafood),dairy,eggs,grains(Grains and pasta),bakery(Bread and bakery),canned(Tins and jars),frozen, and 3 more. - Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
countnumber- How many matched.
ingredientslist- Matching ingredients, A to Z.
Example output
{
"count": 1,
"ingredients": [
{
"aisle": "Grains and pasta",
"ingredient_id": "rice_basmati",
"name": "Basmati rice",
"unit": "g",
"usually_at_home": false
}
]
}List recipe collections
List Racion's curated collections, such as quick dinners, high-protein weeks or holiday tables, with the recipes in each. No API key required.
Inputs
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
collectionslist- Every collection.
countnumber- How many collections.
Example output
{
"collections": [
{
"collection_id": "quick20",
"description": "Fast weeknight dinners.",
"name": "Dinners in 20 minutes",
"recipe_count": 1,
"recipe_ids": [
"spagetti_al_la_karbonara"
]
}
],
"count": 1
}List stores
List the supermarkets and discounters Racion prices in a country, and how each compares with the national average. No API key required.
Inputs
- Country
countrytext - Only show stores in this country. Every country when left empty.
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
countnumber- How many stores.
storeslist- The stores, country by country.
Example output
{
"count": 1,
"stores": [
{
"country_code": "DE",
"name": "Lidl",
"price_index": 0.9,
"price_vs_average": "10% cheaper than average",
"store_code": "lidl",
"type": "Discounter"
}
]
}Plan a holiday table
Build a full menu for a celebration (Christmas, a birthday, Thanksgiving, a picnic) for a number of guests: starters, mains, salads and dessert, with the shopping list and its estimated cost. No API key required.
Inputs
- Occasion
occasiontextRequired - The celebration to cook for.
- Guests
guestsnumberRequired - How many people are eating, 1 to 40.From 1 to 40.
- Country
countrytextRequired - The country to price the food for. Prices and the currency come from it.
- Store
storetext - Where you shop. Each store is priced from the country's average, so a discounter comes out cheaper than a premium supermarket. Leave empty for the first store in the list.
- Allergies
allergieslist - Dishes containing any of these are never offered.One or more of:
gluten,dairy(Milk),eggs,nuts(Tree nuts),peanuts,fish,seafood(Shellfish),soy. - Food groups to avoid
avoid_food_groupslist - Leave out whole groups, for example meat for a vegetarian.One or more of:
meat,poultry,fish,seafood,offal,spicy(Spicy food). - Ingredients to avoid
avoid_ingredientslist - Specific ingredients nobody will eat, such as mushrooms.
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
budget_for_plannumber- The budget the planner aimed for, for the whole plan.
budget_per_daynumber- The same budget per person per day.
calories_per_daynumber- Average calories per person per day.
carbs_per_day_gnumber- Average carbohydrates per day, grams.
cook_minutes_totalnumber- Total cooking time across the plan.
cost_of_food_eatennumber- The part of the total actually eaten during the plan; the rest is what is left in opened packs.
country_codetext- The country priced, e.g. 'DE'.
created_attext- When the plan was built (UTC).
currencytext- The currency, e.g. 'EUR'.
currency_symboltext- The currency symbol, e.g. '€'.
day_countnumber- How many days.
dayslist- Each day with its dishes. A table has a single day.
fat_per_day_gnumber- Average fat per day, grams.
goaltext- The eating goal, e.g. 'Eat well'.
guestsnumber- For a table, how many guests it feeds. Empty for a week.
noteslist- Extra remarks from the planner, for example about a baby.
plan_idtext- The plan's id, for Get a meal plan.
plan_urltext- The plan's page on racion.app, with the menu, recipes and a shopping list you can tick off. Share this with people.
portionsnumber- How many adult portions each dish is scaled to; children count as part portions.
price_periodtext- The month the prices are for, e.g. 'August 2026'.
price_regiontext- The region priced, e.g. 'Germany'.
price_sourcetext- Where the price estimates come from, e.g. 'Eurostat: country price level × HICP by group'. Show it next to any amount you share.
protein_per_day_gnumber- Average protein per day, grams.
shopping_listlist- Everything to buy, grouped by aisle.
shopping_list_countnumber- How many items are on the shopping list.
shopping_list_texttext- The shopping list as plain text, one line per item under each aisle, ready to paste into an email or message.
staples_costnumber- Estimated cost of staples you usually already have.
start_datetext- The first day, as YYYY-MM-DD.
storetext- The store priced, e.g. 'Lidl'.
store_codetext- The store's code.
telegram_urltext- A link that sends this shopping list to Racion's Telegram bot, where items can be ticked off.
titletext- The table's name, such as 'Oktoberfest' or 'My table'. Empty for a week.
total_costnumber- Estimated cost of everything on the shopping list.
warningslist- Anything the planner could not satisfy, such as the budget.
Example output
{
"budget_for_plan": 54.2,
"budget_per_day": 9.03,
"calories_per_day": 3111,
"carbs_per_day_g": 292,
"cook_minutes_total": 230,
"cost_of_food_eaten": 41.16,
"country_code": "DE",
"created_at": "2026-10-15T21:34:13Z",
"currency": "EUR",
"currency_symbol": "\u20ac",
"day_count": 1,
"days": [
{
"calories": 3111,
"cook_minutes": 230,
"cost": 41.16,
"date": "2026-10-19",
"dish_count": 1,
"dishes": [
{
"calories": 468,
"carbs_g": 22,
"cook_minutes": 40,
"cooked_for_two_days": false,
"cost_per_portion": 1.24,
"course": "mains",
"fat_g": 35,
"leftover": false,
"meal": "dinner",
"protein_g": 17,
"recipe_id": "sausages_sauerkraut",
"servings": null,
"title": "Sausages with Braised Sauerkraut",
"why_chosen": "Mains"
}
],
"label": "Oktoberfest"
}
],
"fat_per_day_g": 165,
"goal": "Just tasty",
"guests": 6,
"notes": [],
"plan_id": "9aff1468-21f5-4a8a-863b-6853a674d2c1",
"plan_url": "https://racion.app/en/plan/9aff1468-21f5-4a8a-863b-6853a674d2c1",
"portions": 6.0,
"price_period": "August 2026",
"price_region": "Germany",
"price_source": "Eurostat: country price level \u00d7 HICP by group",
"protein_per_day_g": 109,
"shopping_list": [
{
"aisle": "Vegetables and herbs",
"cost": 0.44,
"ingredient_id": "garlic",
"name": "Garlic",
"needed": 46.0,
"pack_size": 100.0,
"to_buy": 50.0,
"unit": "g",
"used_in": [
"Warm Bean and Bacon Salad",
"Spaghetti alla Carbonara"
],
"usually_at_home": false
}
],
"shopping_list_count": 40,
"shopping_list_text": "Vegetables and herbs:\n- Garlic: 50 g, about 0.44 EUR",
"staples_cost": 11.39,
"start_date": "2026-10-19",
"store": "Lidl",
"store_code": "lidl",
"telegram_url": "https://t.me/racionappbot?start=psHX9rJ1NRz-aLea3o4xuHg",
"title": "Oktoberfest",
"total_cost": 54.2,
"warnings": []
}Price a menu of chosen dishes
Pick the dishes yourself, up to 30, say how many people each one feeds, and get the shopping list and its estimated cost. Find dishes with Search recipes. No API key required.
Inputs
- Dishes
disheslistRequired - The dishes to cook: each one's recipe id, from Search recipes, and optionally how many people it feeds (the number of guests when left empty).
- Guests
guestsnumberRequired - How many people are eating, 1 to 40.From 1 to 40.
- Country
countrytextRequired - The country to price the food for. Prices and the currency come from it.
- Store
storetext - Where you shop. Each store is priced from the country's average, so a discounter comes out cheaper than a premium supermarket. Leave empty for the first store in the list.
- Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
budget_for_plannumber- The budget the planner aimed for, for the whole plan.
budget_per_daynumber- The same budget per person per day.
calories_per_daynumber- Average calories per person per day.
carbs_per_day_gnumber- Average carbohydrates per day, grams.
cook_minutes_totalnumber- Total cooking time across the plan.
cost_of_food_eatennumber- The part of the total actually eaten during the plan; the rest is what is left in opened packs.
country_codetext- The country priced, e.g. 'DE'.
created_attext- When the plan was built (UTC).
currencytext- The currency, e.g. 'EUR'.
currency_symboltext- The currency symbol, e.g. '€'.
day_countnumber- How many days.
dayslist- Each day with its dishes. A table has a single day.
fat_per_day_gnumber- Average fat per day, grams.
goaltext- The eating goal, e.g. 'Eat well'.
guestsnumber- For a table, how many guests it feeds. Empty for a week.
noteslist- Extra remarks from the planner, for example about a baby.
plan_idtext- The plan's id, for Get a meal plan.
plan_urltext- The plan's page on racion.app, with the menu, recipes and a shopping list you can tick off. Share this with people.
portionsnumber- How many adult portions each dish is scaled to; children count as part portions.
price_periodtext- The month the prices are for, e.g. 'August 2026'.
price_regiontext- The region priced, e.g. 'Germany'.
price_sourcetext- Where the price estimates come from, e.g. 'Eurostat: country price level × HICP by group'. Show it next to any amount you share.
protein_per_day_gnumber- Average protein per day, grams.
shopping_listlist- Everything to buy, grouped by aisle.
shopping_list_countnumber- How many items are on the shopping list.
shopping_list_texttext- The shopping list as plain text, one line per item under each aisle, ready to paste into an email or message.
staples_costnumber- Estimated cost of staples you usually already have.
start_datetext- The first day, as YYYY-MM-DD.
storetext- The store priced, e.g. 'Lidl'.
store_codetext- The store's code.
telegram_urltext- A link that sends this shopping list to Racion's Telegram bot, where items can be ticked off.
titletext- The table's name, such as 'Oktoberfest' or 'My table'. Empty for a week.
total_costnumber- Estimated cost of everything on the shopping list.
warningslist- Anything the planner could not satisfy, such as the budget.
Example output
{
"budget_for_plan": 112.0,
"budget_per_day": 8.0,
"calories_per_day": 1466,
"carbs_per_day_g": 113,
"cook_minutes_total": 553,
"cost_of_food_eaten": 10.44,
"country_code": "DE",
"created_at": "2026-10-15T21:34:13Z",
"currency": "EUR",
"currency_symbol": "\u20ac",
"day_count": 1,
"days": [
{
"calories": 1736,
"cook_minutes": 50,
"cost": 6.56,
"date": "2026-10-19",
"dish_count": 1,
"dishes": [
{
"calories": 727,
"carbs_g": 63,
"cook_minutes": 20,
"cooked_for_two_days": false,
"cost_per_portion": 1.23,
"course": null,
"fat_g": 40,
"leftover": false,
"meal": "dinner",
"protein_g": 27,
"recipe_id": "spagetti_al_la_karbonara",
"servings": null,
"title": "Spaghetti alla Carbonara",
"why_chosen": "finishing garlic and bacon \u00b7 under budget"
}
],
"label": "Mon"
}
],
"fat_per_day_g": 79,
"goal": "Just tasty",
"guests": 4,
"notes": [],
"plan_id": "4f0f6f86-1d4e-4f43-9d2c-2f3c5d0b7a11",
"plan_url": "https://racion.app/en/plan/4f0f6f86-1d4e-4f43-9d2c-2f3c5d0b7a11",
"portions": 4.0,
"price_period": "August 2026",
"price_region": "Germany",
"price_source": "Eurostat: country price level \u00d7 HICP by group",
"protein_per_day_g": 78,
"shopping_list": [
{
"aisle": "Vegetables and herbs",
"cost": 0.44,
"ingredient_id": "garlic",
"name": "Garlic",
"needed": 46.0,
"pack_size": 100.0,
"to_buy": 50.0,
"unit": "g",
"used_in": [
"Warm Bean and Bacon Salad",
"Spaghetti alla Carbonara"
],
"usually_at_home": false
}
],
"shopping_list_count": 14,
"shopping_list_text": "Vegetables and herbs:\n- Garlic: 50 g, about 0.44 EUR",
"staples_cost": 9.53,
"start_date": "2026-10-19",
"store": "Lidl",
"store_code": "lidl",
"telegram_url": "https://t.me/racionappbot?start=psHX9rJ1NRz-aLea3o4xuHg",
"title": "My table",
"total_cost": 17.89,
"warnings": []
}Search recipes
Search Racion's recipes by name or ingredient, with cooking time, calories and the estimated cost of a portion in your country. No API key required.
Inputs
- Search for
querytext - Words to look for in dish names and ingredients, such as 'chicken' or 'pancakes'. Leave empty to browse.
- Country
countrytextRequired - The country to price the food for. Prices and the currency come from it.
- Meal
mealtext - Only show dishes for this meal.One of:
breakfast,lunch,dinner,snack. - How many
limitnumber - How many recipes to return, 1 to 200.From 1 to 200. Default:
20. - Skip
offsetnumber - How many results to skip, to page through them.At least 0. Default:
0. - Language
languagetext - The language for dish names, steps and the shopping list.One of:
en(English),de(German),fr(French),es(Spanish),it(Italian),pt(Portuguese),nl(Dutch),pl(Polish),cs(Czech),uk(Ukrainian), and 5 more. Default:en.
Outputs
countnumber- How many recipes are in this result.
currencytext- The currency of the costs.
has_moretrue/false- True when more results follow this page.
offsetnumber- How many results were skipped.
recipeslist- The matching recipes.
totalnumber- How many recipes match in all.
Example output
{
"count": 1,
"currency": "EUR",
"has_more": true,
"offset": 0,
"recipes": [
{
"calories": 452,
"cook_minutes": 40,
"cost_per_portion": 1.53,
"currency": "EUR",
"description": "Tender, kid-friendly cutlets made with ground chicken, shredded cabbage, and semolina. Serve with sour cream.",
"for_kids": false,
"image_url": "https://racion.app/images/recipes/chicken_cabbage_cutlets.webp",
"meal": "dinner",
"recipe_id": "chicken_cabbage_cutlets",
"recipe_url": "https://racion.app/en/recipe/chicken_cabbage_cutlets",
"tags": [
"poultry",
"pp",
"kids",
"needs_side"
],
"title": "Chicken & Cabbage Cutlets"
}
],
"total": 364
}