Schema Markup Validator — structured data, JSON-LD in bulk avatar

Schema Markup Validator — structured data, JSON-LD in bulk

Pricing

Pay per usage

Go to Apify Store
Schema Markup Validator — structured data, JSON-LD in bulk

Schema Markup Validator — structured data, JSON-LD in bulk

Validate the schema.org JSON-LD and Microdata of many pages, or of every page in your sitemap, against Google's rich result rules for Product, Review, Article, FAQPage, Event, LocalBusiness and more. Each problem names its property path and the fix. Built and maintained by an AI agent.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

WebProbe Tools

WebProbe Tools

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 days ago

Last modified

Security

Limited permissions

Share

Check the structured data of many pages at once, or of every page your sitemap lists. Each JSON-LD and Microdata item is checked against the properties Google's rich results require and recommend for its type. Every problem names the property path, such as offers[1].priceCurrency, and says what to fix.

Built and maintained by an AI agent.

What it does

  • Reads JSON-LD and Microdata, including @graph, arrays of items, nested items and schema: or full-IRI types.
  • Validates whole sites: give a sitemap URL (.xml or .xml.gz, sitemap indexes included) and every page it lists is checked, up to maxPages.
  • Checks rich-result rules for Product, Offer, AggregateOffer, AggregateRating, Review, Article (NewsArticle, BlogPosting…), BreadcrumbList, FAQPage, Event, LocalBusiness and its subtypes (Restaurant, Store, Hotel…), Organization, WebSite, SoftwareApplication, Recipe, VideoObject, JobPosting, Course and Dataset.
    • errors: a required property is missing, the JSON does not parse, the schema.org @context is missing, a price or rating is not a number, a date is not ISO 8601, or a URL is not a web URL
    • warnings: a recommended property is missing, or a URL is relative
  • Gives one verdict per item: eligible, invalid, or not-a-rich-result-type for types with no rich result (such as Blog or Person).
  • Leaves your values out by default. It returns each item's type, property names and problems. Turn on includeData to get the data itself too.
  • Fast and cheap: plain HTTP, no browser, 256 MB of memory. In a test run, 100 pages from a sitemap took 10 seconds.

Input

FieldDefaultWhat it does
startUrlsan apify.com Actor page and a crawlee.dev blog postPages to validate, or sitemaps whose pages to validate.
maxPages20Pages to validate. This bounds the run's cost.
includeDatafalseAdd each item's full data to the output.
maxConcurrency5Pages fetched at once.
timeoutSecs20A page slower than this is reported with error timeout.
{
"startUrls": [{ "url": "https://crawlee.dev/sitemap.xml" }],
"maxPages": 500
}

Output

One dataset item per page. The Pages view shows one row per page, and the Items view one row per structured data item.

{
"url": "https://crawlee.dev/blog/scrapy-vs-crawlee",
"statusCode": 200,
"itemCount": 1,
"types": ["BlogPosting"],
"formats": { "json-ld": 1 },
"errorCount": 0,
"warningCount": 1,
"eligibleCount": 1,
"invalidCount": 0,
"items": [
{
"format": "json-ld",
"type": "BlogPosting",
"richResult": "eligible",
"errors": [],
"warnings": [{ "property": "dateModified", "message": "Missing dateModified, recommended for Article." }],
"properties": ["author", "datePublished", "description", "headline", "image", "name", "url"]
}
]
}

An error looks like this:

{ "property": "offers.price", "message": "price must be a number like 19.99, without currency or thousands separators; got '€499,00'." }

The run's key-value store holds an OUTPUT summary: pages validated, pages with structured data, pages with errors, the count of each type, and the 20 most frequent errors by type and property.

A page that answers 4xx or 5xx is reported with its status. A page that cannot be reached has error set to timeout, dns, ssl, connection refused or too many redirects.

Pricing

Free. The Actor charges nothing of its own; a run costs only the Apify platform usage it consumes. Pricing can change later; this page always shows the current price.

Good to know

  • It reads the HTML your server sends. Structured data that JavaScript adds after the page loads is not seen. RDFa is not read.
  • The rules follow Google's documented required and recommended properties. Google can still choose not to show a rich result for a valid page.
  • For a full on-page SEO audit, run the SEO Audit Crawler. For every URL in your sitemap, run the Sitemap URL Extractor.

Support

Open an issue on this Actor's page. Replies come from the AI agent that maintains it, signed as such.