auditmysitev2.0.2

Recipe: missing required properties

seo.schema.schema_rule_missing_recipe

Outcome class
Automatic. An automated check that can report a confirmed violation.
Area
SEO, structured data

What the rule checks

Scope. Applies to JSON-LD nodes of type Recipe in the audited document (top level, top-level arrays, @graph entries; full schema.org IRIs count as the short type). Microdata and RDFa are outside this method.

Expectation. Fails when name or image is missing (or recipeYield with nutrition.calories). Required present but recommended missing: needs_review (Google's Rich Results Test reports missing recommended properties as non-critical issues (eligible, but a human should decide whether the data exists)). All present passes. Nested property values (an author Person, a provider Organization) are not nodes of their own and are not assessed; a page without a node of the type is not applicable. A page whose structured-data collection fails is not run for every feature, never clean.

Source. https://developers.google.com/search/docs/appearance/structured-data/recipe (required: name, image; recommended: author, datePublished, description, recipeIngredient, recipeInstructions, recipeYield, totalTime)

Detection: detect_structured_data; needs dom.

Failing example

The check reports a violation here. Corpus case schema_rules_incomplete. The page may contain further findings for other rules.

schema_rules_incomplete.htmlHTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Schema rules corpus — incomplete JSON-LD missing required properties</title>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Product","name":"Bare product"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Only"}]}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"LocalBusiness"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Event"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Recipe"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"VideoObject"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"JobPosting"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ProfilePage"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1}]}
</script>

</head>
<body>
  <h1>Schema rules corpus fixture (incomplete/missing required JSON-LD)</h1>
</body>
</html>

Passing example

The check passes here and reports nothing. Corpus case schema_rules_complete. The page may contain further findings for other rules.

schema_rules_complete.htmlHTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Schema rules corpus — complete/valid JSON-LD for all 17 features</title>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Article","headline":"Example headline","author":{"@type":"Person","name":"Ada"},"datePublished":"2026-01-01","dateModified":"2026-01-02","image":"https://example.com/article.jpg"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Product","name":"Complete product","image":"https://example.com/product.jpg","review":{"@type":"Review","author":{"@type":"Person","name":"Ada"}},"aggregateRating":{"@type":"AggregateRating","ratingValue":4.5,"reviewCount":10},"offers":{"@type":"Offer","price":"19.99","priceCurrency":"USD"}}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://example.com"},{"@type":"ListItem","position":2,"name":"Current"}]}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Organization","name":"Example Inc","url":"https://example.com","logo":"https://example.com/logo.png","address":{"@type":"PostalAddress","streetAddress":"Main Street 1"},"telephone":"+1-555-0100","sameAs":["https://social.example/example"]}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"LocalBusiness","name":"Example Shop","address":{"@type":"PostalAddress","streetAddress":"Main Street 1"},"telephone":"+1-555-0100","url":"https://example.com","openingHoursSpecification":{"@type":"OpeningHoursSpecification","dayOfWeek":"Monday","opens":"09:00","closes":"18:00"},"image":"https://example.com/shop.jpg","priceRange":"$$","geo":{"@type":"GeoCoordinates","latitude":52.5,"longitude":13.4}}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Question 1","acceptedAnswer":{"@type":"Answer","text":"Answer 1"}}]}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Event","name":"Conference","startDate":"2026-09-01","endDate":"2026-09-02","location":{"@type":"Place","name":"Hall","address":"Main Street 1"},"description":"Annual conference","eventStatus":"https://schema.org/EventScheduled","image":"https://example.com/event.jpg","offers":{"@type":"Offer","price":0},"organizer":{"@type":"Organization","name":"Example"},"performer":{"@type":"Person","name":"Speaker"}}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Recipe","name":"Soup","image":"https://example.com/soup.jpg","author":{"@type":"Person","name":"Cook"},"datePublished":"2026-01-01","description":"A soup","recipeIngredient":["water"],"recipeInstructions":["Cook"],"recipeYield":"2 servings","totalTime":"PT30M"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"VideoObject","name":"Demo","thumbnailUrl":"https://example.com/thumb.jpg","uploadDate":"2026-01-01","contentUrl":"https://example.com/video.mp4","description":"Demo video","duration":"PT1M","interactionStatistic":{"userInteractionCount":1},"regionsAllowed":"DE"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"JobPosting","title":"Engineer","datePosted":"2026-01-01","description":"<p>Role</p>","hiringOrganization":{"@type":"Organization","name":"Example"},"jobLocation":{"@type":"Place","address":{"addressCountry":"DE"}},"baseSalary":{"value":50000},"employmentType":"FULL_TIME","identifier":"job-1","validThrough":"2026-12-31"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication","name":"App","offers":{"price":0},"review":{"reviewRating":{"ratingValue":5}},"applicationCategory":"BusinessApplication","operatingSystem":"Web"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ProfilePage","mainEntity":{"@type":"Person","name":"Ada"},"dateCreated":"2026-01-01","dateModified":"2026-02-01"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ItemList","name":"Items","numberOfItems":2,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://example.com/1"},{"@type":"ListItem","position":2,"url":"https://example.com/2"}]}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","name":"About","url":"https://example.com/about","description":"About Example","inLanguage":"en","isPartOf":{"@type":"WebSite","name":"Example"},"author":{"@type":"Organization","name":"Example"},"publisher":{"@type":"Organization","name":"Example"},"image":"https://example.com/about.jpg"}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebSite","name":"Example","url":"https://example.com","inLanguage":"en","publisher":{"@type":"Organization","name":"Example"},"potentialAction":{"@type":"SearchAction"}}
</script>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Person","name":"Ada Example","url":"https://example.com/team/ada","image":"https://example.com/ada.jpg","jobTitle":"Engineer","worksFor":{"@type":"Organization","name":"Example"},"sameAs":["https://social.example/ada"]}
</script>

</head>
<body>
  <h1>Schema rules corpus fixture (complete/valid JSON-LD)</h1>
</body>
</html>

This page is generated from the rule catalogue and the rule contracts; see therule overview for how the outcome classes are derived.