Schema Markup Validator: Bulk JSON-LD, Rich Results Checks avatar

Schema Markup Validator: Bulk JSON-LD, Rich Results Checks

Pricing

$3.00 / 1,000 page validateds

Go to Apify Store
Schema Markup Validator: Bulk JSON-LD, Rich Results Checks

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

Luigi Fiano

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 onlyProblems and get only the pages that broke.

What it checks

  • JSON-LD syntax: invalid JSON, empty blocks, trailing commas (flagged as a warning), @context not schema.org.
  • Every entity, including those inside @graph, arrays and nested properties (an Offer inside a Product, an author inside an Article).
  • 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, ratingValue inside worstRating-bestRating, absolute URLs for url, image, logo and 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).
  • richResultsEligible lists 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

FieldWhat it doesDefault
urlsOne page URL per linerequired
includeEntitiesAdd every entity with its own errors and warningstrue
onlyProblemsOutput only pages with errorsfalse
concurrency, timeoutSecs, maxRetriesSpeed and resilience5, 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.