Structured Data Validator: Schema & Rich Results avatar

Structured Data Validator: Schema & Rich Results

Pricing

from $3.00 / 1,000 page checkeds

Go to Apify Store
Structured Data Validator: Schema & Rich Results

Structured Data Validator: Schema & Rich Results

Bulk-check pages for Schema.org structured data: JSON-LD (incl. @graph), Microdata and RDFa. Each Product, Review, Article, Breadcrumb, Organization, LocalBusiness, Event, Recipe, JobPosting, Video and Software app item is checked against Google's documented required and recommended properties.

Pricing

from $3.00 / 1,000 page checkeds

Rating

0.0

(0)

Developer

Offera Studio

Offera Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

What does Structured Data Validator do?

Structured Data Validator checks up to 1,000 web pages per run for Schema.org structured data and tells you, item by item, whether it meets Google's documented requirements for rich results. For every page you get:

  • 🔎 every JSON-LD block (including @graph and @id references), Microdata item and basic schema.org RDFa item, and the list of types found
  • ✅ for each Product, Offer, AggregateRating, Review, Article / NewsArticle / BlogPosting, BreadcrumbList, FAQPage, Organization, LocalBusiness, Event, Recipe, JobPosting, VideoObject and SoftwareApplication item: errors (missing required properties, invalid values), warnings (missing recommended properties) and an eligibleForRichResult flag (likely / unlikely) with the reason and a link to Google's documentation
  • 🧯 JSON syntax errors (with the text around the error), invalid dates and durations, prices without currency or with currency symbols, ratings outside the scale and URLs that aren't absolute
  • 📦 the raw extracted data as JSON (up to 20,000 characters per page)
  • 💬 a one-sentence plain-English summary

Paste your URLs, click Start, and download the results as JSON, CSV or Excel, or schedule the check after every release.

Honest scope. The rules are encoded from Google Search Central's structured data documentation (required and recommended properties per feature, checked on 1 October 2026). This Actor is not Google's Rich Results Test and doesn't use it. Google can still decide not to show a rich result (content guidelines, site quality, indexing), and it may accept or reject edge cases differently. Use the results to find and fix problems at scale, then confirm important pages in Google's own tools.

Who is this schema checker for?

  • SEO agencies and consultants: audit a client's product, article or location pages in bulk and hand over a fix list with documentation links.
  • E-commerce teams: make sure every product page has a valid Product with offers.price and currency, ratings that fit the scale and absolute image URLs, before Google Search Console complains.
  • Developers and QA: add a structured data check to your release routine; a broken JSON-LD block or a template change that drops a required property shows up right away.
  • Publishers: check that articles have headline, image, author and valid ISO 8601 dates.
  • Local businesses and franchises: check LocalBusiness markup (address, opening hours, geo coordinates) across all location pages.

What is checked?

TypeGoogle featureRequired (errors when missing)Source
Product (and ProductGroup)Product snippetname; one of review, aggregateRating, offersproduct-snippet
Offer / AggregateOfferProduct snippetOffer: price; AggregateOffer: lowPrice, priceCurrencysame page
Review / AggregateRatingReview snippetauthor, reviewRating.ratingValue / ratingValue, ratingCount or reviewCount; itemReviewed + name when not nestedreview-snippet
Article, NewsArticle, BlogPostingArticlenone (recommended: headline, image, author, dates)article
BreadcrumbListBreadcrumbitemListElement; each ListItem position, name, item (not for the last one)breadcrumb
FAQPageFAQ (retired)mainEntity, Question name, acceptedAnswer.textGoogle changelog
OrganizationOrganizationnone (recommended: name, url, logo, sameAs, …)organization
LocalBusiness and subtypesLocal businessname, addresslocal-business
Event and subtypesEventname, startDate, location, location.addressevent
RecipeRecipename, imagerecipe
JobPostingJob postingtitle, description, datePosted, hiringOrganization, jobLocation (or remote + applicantLocationRequirements)job-posting
VideoObjectVideoname, thumbnailUrl, uploadDatevideo
SoftwareApplication, MobileApplication, WebApplicationSoftware appname, offers.price, aggregateRating or reviewsoftware-app

Also built in from the docs: FAQ rich results were retired by Google on 7 May 2026, so FAQPage items are always unlikely (the markup is still checked); online-only events aren't eligible; VideoGame alone isn't eligible; a remote job needs applicantLocationRequirements; nutrition.calories needs recipeYield; geo coordinates need 5 decimals; review stars aren't shown for self-serving reviews of a business by itself.

eligibleForRichResult is likely when the item has no errors, and unlikely when it has at least one error or the feature was retired. Warnings never change it.

How to check structured data in bulk

  1. Click Try for free and sign in to Apify (the free plan is enough to start).
  2. Paste one or more URLs into Website URLs, or upload a text file with one URL per line.
  3. Optional: set Pages per website to check up to 20 pages per site (the start page plus pages linked from it).
  4. Click Start. The Overview tab shows one row per page; Items shows one row per item with its errors and warnings; Syntax and page issues lists broken JSON-LD blocks.

Input example

{
"startUrls": [{ "url": "https://www.example.com/product/123" }, { "url": "shop.example.org" }],
"maxPagesPerSite": 5
}

Output example

A real row from a run on 1 October 2026 (shortened):

{
"url": "https://apify.com/",
"httpStatus": 200,
"hasStructuredData": true,
"formatsFound": ["json-ld"],
"typesFound": ["Organization", "ImageObject", "PostalAddress", "ContactPoint", "WebSite", "SoftwareApplication", "Offer", "CreativeWork"],
"itemsCount": 2,
"eligibleItemsCount": 1,
"errorsCount": 1,
"richResultsLikely": ["Organization"],
"richResultsUnlikely": ["Software app"],
"summary": "2 rich result items: Organization (likely eligible), SoftwareApplication (unlikely: 1 error). Other types: WebSite.",
"items": [
{
"type": "Organization",
"format": "json-ld",
"feature": "Organization",
"name": "Apify",
"errors": [],
"warnings": [],
"eligibleForRichResult": "likely",
"eligibilityNote": "Organization markup has no required properties; Google uses it to understand your organization (logo, name, contact details), not as a rich result on its own.",
"docsUrl": "https://developers.google.com/search/docs/appearance/structured-data/organization"
},
{
"type": "SoftwareApplication",
"format": "json-ld",
"feature": "Software app",
"name": "Apify",
"errors": ["Missing required property \"aggregateRating or review\" (Software app)."],
"warnings": [],
"missingRequired": ["aggregateRating or review"],
"eligibleForRichResult": "unlikely",
"eligibilityNote": "Fix the 1 error first: Missing required property \"aggregateRating or review\" (Software app).",
"docsUrl": "https://developers.google.com/search/docs/appearance/structured-data/software-app"
}
],
"pageIssues": [],
"jsonLdBlocksCount": 3,
"extractedJson": "{\"jsonLd\":[{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"@id\":\"https://apify.com/#organization\",\"name\":\"Apify\", …"
}

Typical messages on other pages look like offers.price "$19,99" is not a plain number; use a value like 19.99 …, offers.price has no currency: add priceCurrency …, uploadDate "2026-10-32" is not a valid ISO 8601 date …, image "/img/kettle.jpg" is not an absolute URL … or JSON-LD block 2: Expected double-quoted property name in JSON at position 167 (line 6 column 79) Near: "…".

Pages that can't be checked get a row with an error code (invalid-url, blocked-by-robots-txt, http-404, http-403, not-html, request-failed, …) and cost nothing.

How much does it cost?

This Actor uses pay per event. You pay only for pages that were actually checked:

EventPrice
Page checked$0.003 per page (with or without structured data)
Page that failed, was blocked by robots.txt or returned an errorfree
  • 100 pages cost $0.30; 1,000 pages cost $3.
  • Apify also charges a tiny standard start fee per run ($0.00005 per GB of memory, so $0.00005 at the default 1 GB).
  • Apify's free plan includes $5 of monthly usage, enough for over 1,500 checked pages a month.
  • Set Maximum cost per run in the run options and the Actor stops when it is reached.

Limitations

  • Not Google's Rich Results Test. The rules follow Google's public documentation; Google's own parser and policies decide in the end. Content guidelines (e.g. reviews must be visible on the page, no self-serving reviews) can't be fully checked automatically.
  • Static HTML only. Structured data injected by JavaScript after the page loads (some tag managers, client-side apps) isn't seen. Google renders JavaScript, so such markup can still work for Google.
  • Only Google rich result types are checked in depth. Other types (WebSite, WebPage, Person, Book, Movie …) are listed in typesFound but not validated. Merchant listing (Shopping) requirements beyond product snippets are only partly covered (missing image, missing currency).
  • Organization: Google lists about 30 optional properties "if applicable"; only the core ones (name, url, logo, sameAs, description, address, contact) are reported as warnings.
  • RDFa: basic schema.org RDFa (vocab, typeof, property, resource, schema: prefix). Other vocabularies and full RDFa processing are out of scope. Open Graph tags are not structured data for rich results and are ignored.
  • Bot protection. Some large sites block automated visitors (HTTP 403/429); those pages get a free error row. The Actor respects robots.txt, uses no proxy and waits at least one second between requests to the same site.
  • At most 100 items are reported per page (itemsTruncated tells you when there were more), and the extracted JSON is capped at 20,000 characters.

FAQ

Is this the same as Google's Rich Results Test?

No. It applies the required and recommended properties that Google documents for each feature, plus common value checks, to many pages at once. Google's own test and Search Console remain the final word for a single page.

Why is my FAQ markup "unlikely"?

Google stopped showing FAQ rich results on 7 May 2026 and removed the documentation. The Actor still checks the markup, but no FAQ rich result will appear.

Why is an Organization or Article "likely" with no required properties?

Google documents no required properties for them; the markup helps Google understand your organization or article. The warnings list the recommended properties that are missing.

Does it support @graph and @id references?

Yes. Items in @graph are checked one by one, and references like "author": {"@id": "#person"} are followed to the full node on the same page.

Can I check a whole site?

Set Pages per website up to 20 to follow links from each start URL, or paste up to 1,000 URLs (for example from your sitemap) per run.

More tools from the same developer

All pay-per-result, no proxy or login needed, built and maintained by the same developer:

Website audits

Company data and compliance

Media and AI

Market signals

Feedback

Found a false alarm, or missing a type or rule? Open an issue on the Issues tab with the page URL.