Schema Markup Validator: Bulk JSON-LD, Rich Results Checks
Pricing
$3.00 / 1,000 page validateds
Schema Markup Validator: Bulk JSON-LD, Rich Results Checks
Validate the schema.org structured data of many pages at once: broken JSON-LD, missing required and recommended properties for Google rich results (Product, Article, Breadcrumb, Event, Recipe, Job, Local business and more), bad dates, prices and ratings.
Pricing
$3.00 / 1,000 page validateds
Rating
0.0
(0)
Developer
Luigi Fiano
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Validate the schema.org structured data of hundreds of pages in one run. For every page you get the schema types it declares, which Google rich result types it can qualify for, and a plain list of errors and warnings, each one pointing at the entity that has it.
Google's Rich Results Test and the Schema Markup Validator check one URL at a time. This Actor checks a whole list, so you can audit every product, article or location page of a site, and schedule it to catch the template change that broke them all.
What it is for
- SEO audits: see which templates have valid Product, Article, Breadcrumb or Local business markup and which do not.
- E-commerce: catch prices with currency symbols, missing
priceCurrency, invalid availability and ratings out of range before Google drops the rich snippet. - After a release or a CMS/plugin update: confirm the JSON-LD is still there and still parses.
- Monitoring: schedule it weekly with
onlyProblemsand get only the pages that broke.
What it checks
- JSON-LD syntax: invalid JSON, empty blocks, trailing commas (flagged as a warning),
@contextnot schema.org. - Every entity, including those inside
@graph, arrays and nested properties (anOfferinside aProduct, anauthorinside anArticle). - Required and recommended properties for the main Google rich result types, following Google Search Central documentation: Product, Offer, AggregateOffer, AggregateRating, Review, Article (and NewsArticle, BlogPosting...), BreadcrumbList, Organization, LocalBusiness (and Restaurant, Store, Hotel, Dentist...), Event (and its subtypes), FAQPage, Question, Recipe, VideoObject, JobPosting, SoftwareApplication, Course.
- Values: ISO 8601 dates, dates with a time but no timezone, numeric prices, 3-letter currency codes, schema.org availability values,
ratingValueinsideworstRating-bestRating, absolute URLs forurl,image,logoand similar, breadcrumb items with name and URL. - Microdata and RDFa: the types are listed, so you know the markup is there (properties are validated for JSON-LD, the format Google recommends).
richResultsEligiblelists the rich result types whose entities have no errors. It is a strong indicator, not a guarantee: Google also applies content and quality policies.
Input
| Field | What it does | Default |
|---|---|---|
urls | One page URL per line | required |
includeEntities | Add every entity with its own errors and warnings | true |
onlyProblems | Output only pages with errors | false |
concurrency, timeoutSecs, maxRetries | Speed and resilience | 5, 20, 2 |
Example:
{ "urls": ["https://www.example.com/product/red-shoe", "https://www.example.com/blog/post"] }
Output
One row per page:
{"url": "https://www.example.com/product/red-shoe","finalUrl": "https://www.example.com/product/red-shoe","status": 200,"jsonLdBlocks": 2,"types": ["Product", "Offer", "Brand", "BreadcrumbList", "ListItem"],"microdataTypes": [],"rdfaTypes": [],"richResultsEligible": ["Breadcrumb"],"errorCount": 2,"warningCount": 2,"errors": ["Offer (block1.offers): \"price\" must be a number without currency symbols or thousands separators: \"1.299,00 €\"","Offer (block1.offers): \"priceCurrency\" must be a 3-letter ISO 4217 code: \"€\""],"warnings": ["Product (block1): missing recommended \"sku\" or \"gtin\" or \"gtin13\" or \"gtin12\" or \"gtin8\" or \"gtin14\" or \"mpn\"","Offer (block1.offers): missing recommended \"priceValidUntil\""],"entities": [{ "type": "Product", "path": "block1", "errors": [], "warnings": ["missing recommended \"sku\" or ..."] },{ "type": "Offer", "path": "block1.offers", "errors": ["\"price\" must be a number ..."], "warnings": ["missing recommended \"priceValidUntil\""] }],"ok": false,"checkedAt": "2026-10-26T00:00:00.000Z"}
A SUMMARY record in the key-value store counts pages checked, ok, with errors, without structured data, with invalid JSON, and how many pages use each schema type.
Pricing
Pay per result: $0.003 per page delivered to the dataset ($3 per 1,000 pages), plus the small Apify platform usage of the run. With onlyProblems on, pages without errors are not delivered and not charged.
Notes
- It reads only the public HTML of the pages you provide. No login, no cookies, no personal data.
- JSON-LD injected by JavaScript (for example by a tag manager) is not executed: the check sees what is in the raw HTML.
- FAQ rich results are shown by Google only for well-known government and health sites since August 2023; FAQPage markup is still validated and flagged with a note.
- Properties in microdata and RDFa are not validated one by one in this version.