Schema Markup Validator — structured data, JSON-LD in bulk
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
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 andschema:or full-IRI types. - Validates whole sites: give a sitemap URL (
.xmlor.xml.gz, sitemap indexes included) and every page it lists is checked, up tomaxPages. - 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
@contextis 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
- errors: a required property is missing, the JSON does not parse, the schema.org
- Gives one verdict per item:
eligible,invalid, ornot-a-rich-result-typefor types with no rich result (such asBlogorPerson). - Leaves your values out by default. It returns each item's type, property names and problems. Turn on
includeDatato 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
| Field | Default | What it does |
|---|---|---|
startUrls | an apify.com Actor page and a crawlee.dev blog post | Pages to validate, or sitemaps whose pages to validate. |
maxPages | 20 | Pages to validate. This bounds the run's cost. |
includeData | false | Add each item's full data to the output. |
maxConcurrency | 5 | Pages fetched at once. |
timeoutSecs | 20 | A 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.