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

ActionWhat it does
Build a weekly meal planPlan 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 planOpen a meal plan or holiday table built earlier, with its dishes and shopping list.
Get a recipeGet 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 countriesList the 22 countries Racion prices food for, with each one's currency, typical daily food budget and where the prices come from.
List holiday tablesList the celebrations Racion can plan a table for, with the courses each one has and a suggested number of guests.
List ingredientsLook up the ingredients Racion knows, with the shop aisle each is in.
List recipe collectionsList Racion's curated collections, such as quick dinners, high-protein weeks or holiday tables, with the recipes in each.
List storesList the supermarkets and discounters Racion prices in a country, and how each compares with the national average.
Plan a holiday tableBuild 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 dishesPick the dishes yourself, up to 30, say how many people each one feeds, and get the shopping list and its estimated cost.
Search recipesSearch 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

CountrycountrytextRequired
The country to price the food for. Prices and the currency come from it.
Storestoretext
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.
Adultsadultsnumber
How many adults eat, 1 to 10.From 1 to 10. Default: 2.
Children's ageschildren_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.
Mealsmealslist
Which meals to plan each day. Breakfast, lunch and dinner when left empty.One or more of: breakfast, lunch, dinner, snack.
Kitchen equipmentkitchen_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).
Allergiesallergieslist
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 avoidavoid_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 avoidavoid_ingredientslist
Specific ingredients nobody will eat, such as mushrooms.
Ingredients you already haveingredients_at_homelist
Food already in your kitchen. The planner uses it up and leaves it off the shopping list.
Goalgoaltext
What the menu should help with.One of: none (Just tasty), healthy (Eat well), lose (Lose weight), gain (Gain muscle). Default: none.
Budgetbudgetnumber
How much to aim to spend, in the country's currency. Leave empty for no limit.At least 0.
Budget isbudget_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 collectioncollectiontext
Prefer dishes from one of Racion's collections, such as quick dinners or high-protein meals.
Start datestart_datedate
The first day of the plan. Next Monday when left empty.
Languagelanguagetext
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

Planplan_idtextRequired
The plan's id or its link, for example https://racion.app/plan/b075fdac-9d4d-473f-9a2d-e6b7a38c6e1e.
Languagelanguagetext
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

Reciperecipe_idtextRequired
The recipe's id from Search recipes, such as 'chicken_cabbage_cutlets', or its racion.app link.
CountrycountrytextRequired
The country to price the food for. Prices and the currency come from it.
Languagelanguagetext
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

Languagelanguagetext
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

Languagelanguagetext
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 forquerytext
Part of an ingredient's name, such as 'rice'.
Aisleaislelist
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.
Languagelanguagetext
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

Languagelanguagetext
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

Countrycountrytext
Only show stores in this country. Every country when left empty.
Languagelanguagetext
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

OccasionoccasiontextRequired
The celebration to cook for.
GuestsguestsnumberRequired
How many people are eating, 1 to 40.From 1 to 40.
CountrycountrytextRequired
The country to price the food for. Prices and the currency come from it.
Storestoretext
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.
Allergiesallergieslist
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 avoidavoid_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 avoidavoid_ingredientslist
Specific ingredients nobody will eat, such as mushrooms.
Languagelanguagetext
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

DishesdisheslistRequired
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).
GuestsguestsnumberRequired
How many people are eating, 1 to 40.From 1 to 40.
CountrycountrytextRequired
The country to price the food for. Prices and the currency come from it.
Storestoretext
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.
Languagelanguagetext
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 forquerytext
Words to look for in dish names and ingredients, such as 'chicken' or 'pancakes'. Leave empty to browse.
CountrycountrytextRequired
The country to price the food for. Prices and the currency come from it.
Mealmealtext
Only show dishes for this meal.One of: breakfast, lunch, dinner, snack.
How manylimitnumber
How many recipes to return, 1 to 200.From 1 to 200. Default: 20.
Skipoffsetnumber
How many results to skip, to page through them.At least 0. Default: 0.
Languagelanguagetext
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
}

On this page