ServicesAI Audit
← Back to Blog

How to Use NutritionInformation Schema to Win AI Food Searches

Schema MarkupNutritionInformationAI VisibilityFood SEOJSON-LDRecipe SchemaLLM SEOShopify SEO
Close-up of a hand holding a smartphone displaying a food image on its screen, indoors.

Why food and nutrition data is uniquely valuable to AI search engines

When someone asks ChatGPT "what are the best high-protein snacks under 200 calories?" or asks Perplexity "which protein bars have the lowest sugar?", the AI needs structured, machine-readable data to confidently cite a specific product. If your nutrition information lives only inside a paragraph of body copy, or worse, inside an image of a nutrition label, the AI simply cannot extract and use it.

This is where NutritionInformation schema becomes genuinely powerful. It is a schema.org type that lets you mark up precise nutritional values in a format that AI systems can parse, compare, and quote. It is not just about Google rich results. It is about making your food product or recipe the answer to a nutritional query.

Food and nutrition is one of the highest-intent AI search categories right now. People ask AI assistants about macros, allergens, calorie counts, and dietary suitability dozens of times a day. Brands that have properly structured this data are far more likely to be cited. Brands that do not are invisible, regardless of how good their products actually are.

What the NutritionInformation schema type actually covers

The NutritionInformation type is a child of Recipe and is also used within Product markup. It maps directly to the nutritional values you would find on a food label or recipe card. Here are the main properties and what they accept:

  • calories: A string like "250 kcal" or "250 calories". Always specify the unit.
  • servingSize: A plain text description, e.g. "1 bar (45g)" or "100g".
  • fatContent: Total fat in grams, e.g. "8 g".
  • saturatedFatContent: Saturated fat in grams.
  • unsaturatedFatContent: Unsaturated fat in grams.
  • transFatContent: Trans fat in grams.
  • carbohydrateContent: Total carbs in grams.
  • sugarContent: Sugars in grams.
  • fiberContent: Dietary fibre in grams.
  • proteinContent: Protein in grams.
  • sodiumContent: Sodium in milligrams or grams.
  • cholesterolContent: Cholesterol in milligrams.

You do not need to include every single property. Include the ones that are relevant to your product and to the queries your customers are likely to ask. If you sell a high-protein bar, proteinContent and calories are non-negotiable. If you sell a low-sodium soup, sodiumContent is what will make the difference.

Embedding NutritionInformation inside Recipe schema

If you publish recipes, NutritionInformation slots directly into your Recipe JSON-LD as the value of the nutrition property. Here is a clean example:

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "High-Protein Overnight Oats",
  "recipeYield": "1 serving",
  "nutrition": {
    "@type": "NutritionInformation",
    "servingSize": "1 bowl (350g)",
    "calories": "420 kcal",
    "proteinContent": "32 g",
    "carbohydrateContent": "45 g",
    "sugarContent": "12 g",
    "fiberContent": "7 g",
    "fatContent": "9 g",
    "saturatedFatContent": "2 g",
    "sodiumContent": "180 mg"
  }
}

A few things worth noting. The values are strings, not numbers. You include the unit ("g", "mg", "kcal") as part of the string. This is intentional in the schema.org spec. AI systems reading this can extract both the quantity and the unit without ambiguity.

Also make sure your servingSize is specific. "1 serving" is vague and unhelpful. "1 bowl (350g)" gives the AI something concrete to work with when someone asks a question about portion sizes.

Using NutritionInformation inside Product schema

For e-commerce food brands, the more common use case is embedding nutrition data within Product schema. This is slightly less standard than the Recipe use case, but it is supported and increasingly important as AI shopping searches grow.

The way to do this cleanly is to nest NutritionInformation as an additionalProperty or use a subjectOf pattern, but the most practical and widely recognised approach is to use a Product with a linked Recipe or to add the nutrition block directly. Here is a practical example for a product page:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Peanut Butter Protein Bar",
  "description": "A high-protein snack bar with 20g of protein and under 200 calories.",
  "nutrition": {
    "@type": "NutritionInformation",
    "servingSize": "1 bar (45g)",
    "calories": "195 kcal",
    "proteinContent": "20 g",
    "carbohydrateContent": "18 g",
    "sugarContent": "5 g",
    "fiberContent": "3 g",
    "fatContent": "6 g",
    "saturatedFatContent": "1.5 g",
    "sodiumContent": "210 mg"
  }
}

The nutrition property on Product is valid in the schema.org spec. Some validators may flag it as a warning rather than an error because it is less commonly implemented, but AI systems, particularly those trained on schema.org data, will still interpret it correctly.

If you want a deeper look at how product-level schema feeds into AI shopping recommendations, the post on MerchantReturnPolicy schema for AI shopping trust is worth reading alongside this one. Building trust signals across multiple schema types on the same product page compounds the effect.

Serving size: the detail most brands get wrong

This is the single most common mistake with NutritionInformation schema. Brands either leave out servingSize entirely, or write something generic like "per serving".

AI search engines are being asked questions like "how many calories in a serving of X?" and "how much protein per 100g in Y?". If your schema does not include a clear serving size, the AI cannot confidently answer the question or attribute the answer to your brand. It will skip to a source that does provide this detail.

Best practice: include serving size in a format that covers both the unit description and the gram weight. "1 bar (45g)", "2 cookies (30g)", "1 cup (240ml)". If your product is typically compared per 100g (common in European markets), include both: a per-serving value and a per-100g value on different pages or variants if possible.

Combining NutritionInformation with other trust signals

Schema markup works best when multiple types reinforce each other. For food products, the combination that drives the strongest AI citation rate tends to be:

  • Product schema with name, description, brand, and image
  • NutritionInformation nested inside the product
  • AggregateRating to show social proof
  • Offer with price and availability

When an AI is deciding whether to cite your protein bar versus a competitor's, it is comparing the quality and completeness of the structured data available to it. A product with nutrition data, ratings, and availability information is a far safer citation than one with just a name and a price.

The post on using AggregateRating schema to influence AI recommendations goes into detail on how review data interacts with AI citation decisions. It is directly relevant if you sell food products online.

Validating your NutritionInformation markup

Once you have implemented the schema, you need to check it actually works. There are a few tools worth using:

Google's Rich Results Test (search.google.com/test/rich-results) will validate Recipe schema with nutrition data and show you which fields are being read. It will not validate Product-level nutrition directly, but it will confirm your JSON-LD is structurally correct.

Schema.org Validator (validator.schema.org) is more permissive and will check any schema.org type, including NutritionInformation embedded in a Product. This is the more useful tool for e-commerce nutrition markup.

Manual AI testing is something the team at FlinnSchema recommends as a final step. Ask ChatGPT, Perplexity, or Gemini a specific question about your product's nutritional values. If your schema is being indexed and parsed correctly, the AI should be able to answer with your product's specific data. If it cannot, either the schema is missing, malformed, or the page has not been crawled recently enough.

If you want a systematic view of how your pages are performing across AI search engines, our free AI visibility audit is a practical starting point.

Common errors and how to fix them

Missing units in value strings. Writing "proteinContent": "20" instead of "proteinContent": "20 g" is a frequent error. The schema.org spec expects the unit to be part of the string.

Putting nutrition data only in images. A lot of food brands use a photo of the nutrition panel on the back of the pack. AI systems cannot read that image. The data must be in the JSON-LD or at minimum in accessible HTML text on the page.

Inconsistent data between the page and the schema. If your page says "18g protein" but your schema says "proteinContent": "20 g", that inconsistency damages trust with both AI systems and human visitors. Keep them in sync.

Using the wrong parent type. Some developers try to attach NutritionInformation directly to an Organization or WebPage type. It only makes sense inside a Recipe or Product.

Frequently Asked Questions

Does NutritionInformation schema affect Google search rankings?

For Recipe pages, yes. Google uses nutrition data as part of its recipe rich results, which can appear in search with calorie counts displayed directly in the snippet. For product pages, the impact on traditional Google rankings is more indirect, but the schema contributes to overall structured data quality, which matters for crawling and indexing.

Can I use NutritionInformation schema on Shopify product pages?

Yes. You can add JSON-LD directly to your Shopify product template files, typically within the product.liquid or product-template.liquid file. If you are using a theme that does not support custom JSON-LD injection, you can add a script block in the theme's code editor. Some Shopify apps also handle structured data, though most do not include nutrition-specific fields out of the box.

Do AI search engines actually read NutritionInformation schema?

AI systems like ChatGPT Browse, Perplexity, and Google's AI Overviews are trained on and actively index structured data. While the exact mechanics vary by system, schema.org types including NutritionInformation are among the signals they use to understand and compare products. A page with clean, complete nutrition schema is meaningfully more likely to be cited in response to a nutrition-related query than a page without it.

How often should I update my NutritionInformation schema?

Update it any time your product formulation changes. Nutrition values change when recipes are reformulated, when suppliers change, or when serving sizes are adjusted. Stale schema that does not match current label data is both a compliance risk and a trust issue with AI systems. Set a reminder to audit your nutrition schema whenever a product update goes live.

Want to check your AI visibility?

Run a free audit on your website and see how visible you are to ChatGPT, Perplexity, and other AI search engines.

Run Free Audit