Setting up Recipe Schema Markup for a Website
Recipe Schema is markup for cooking sites that allows recipes to appear in Google Recipe rich results: cards with photo, cooking time, and rating directly in search results.
Recipe Markup
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Classic Ukrainian Borscht",
"description": "Traditional borscht on beef broth with cabbage, beets, and sour cream.",
"image": [
"https://example.ru/images/borsch-1x1.jpg",
"https://example.ru/images/borsch-4x3.jpg",
"https://example.ru/images/borsch-16x9.jpg"
],
"author": {
"@type": "Person",
"name": "Elena Morozova"
},
"datePublished": "2024-02-10",
"prepTime": "PT30M",
"cookTime": "PT1H30M",
"totalTime": "PT2H",
"recipeYield": "6 servings",
"recipeCategory": "First courses",
"recipeCuisine": "Ukrainian",
"keywords": "borscht, beets, beef, classic recipe",
"recipeIngredient": [
"500g beef on bone",
"300g beets",
"300g white cabbage",
"2 medium potatoes",
"1 carrot",
"1 onion",
"3 tbsp tomato paste",
"2 garlic cloves",
"Salt, pepper, bay leaf"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"name": "Cooking broth",
"text": "Pour cold water over meat, bring to boil, skim foam. Simmer 1.5 hours on low heat.",
"timeRequired": "PT1H30M"
},
{
"@type": "HowToStep",
"name": "Preparing vegetables",
"text": "Dice potatoes, shred cabbage, grate beets and carrot on large grater."
},
{
"@type": "HowToStep",
"name": "Sauteing",
"text": "Fry onion until transparent, add carrot and beets. Simmer 10 minutes, add tomato paste."
},
{
"@type": "HowToStep",
"name": "Finishing",
"text": "Add potatoes to boiling broth, after 10 minutes add cabbage, then sauteed vegetables. Simmer 15 more minutes."
}
],
"nutrition": {
"@type": "NutritionInformation",
"calories": "285 kcal",
"fatContent": "12g",
"carbohydrateContent": "22g",
"proteinContent": "18g"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "234"
}
}
Required Fields for Google
Google requires minimum: name, image (at least 3 different aspect ratios), recipeIngredient, recipeInstructions.
Fields prepTime, cookTime, totalTime are specified in ISO 8601 Duration format: PT30M = 30 minutes, PT1H30M = 1 hour 30 minutes.
Recommended Fields
-
nutrition— displayed in extended Google snippet -
aggregateRating— rating stars -
video— link to video recipe (increases chances of appearing in video carousel) -
recipeYield— number of servings
Video in Recipe
"video": {
"@type": "VideoObject",
"name": "How to Cook Borscht",
"description": "Step-by-step video recipe of classic Ukrainian borscht",
"thumbnailUrl": "https://example.ru/video/borsch-thumb.jpg",
"uploadDate": "2024-02-10",
"duration": "PT8M32S",
"contentUrl": "https://example.ru/video/borsch.mp4",
"embedUrl": "https://www.youtube.com/embed/VIDEO_ID"
}
Setup timeline: a few hours for template generation from recipe model.







