Products

Structured Data API: check the markup, or write it for them

Google retired the API behind its own structured data testing tool and the public validator is rate limited, so there is nowhere to call this from a build pipeline. This endpoint reads the schema.org markup on a page, reports every type it declares and the required fields that are missing, and can write correct markup from a real business record.

POST/v1/schema/validate

200POST /v1/schema/validate
{
  "data": {
    "blocks": 2,
    "types": [
      "Dentist",
      "FAQPage",
      "PostalAddress",
      "Question"
    ],
    "checked_types": [
      "FAQPage",
      "LocalBusiness",
      "Question"
    ],
    "items": [
      {
        "type": "Dentist",
        "checked_against": "LocalBusiness",
        "valid": true,
        "missing_required": [],
        "missing_recommended": [
          "openingHours",
          "image"
        ]
      },
      {
        "type": "FAQPage",
        "checked_against": "FAQPage",
        "valid": true,
        "missing_required": []
      }
    ],
    "errors": [],
    "valid": true
  },
  "meta": {
    "credits_used": 1,
    "source": "websites"
  }
}

What you get

Every field in the response.

FieldMeaning
items[]Every typed object on the page, with the ruleset it was judged against
missing_required, missing_recommendedWhat is absent, named field by field
types, checked_typesWhat the page declares, and what we were able to judge
errors, validBroken JSON, a missing @context, and the one-line verdict
script (on generate)The JSON-LD wrapped in a script tag, ready to paste into a page

How it works

What happens between your request and the response.

Reads what is there

Every JSON-LD block on the page, including @graph documents and nested objects, parsed the way a search engine would.

Judges by the documented rules

Required and recommended fields for the types rich results are documented for. A Dentist is judged as a LocalBusiness, a cafe as a food business.

Writes from real data

Pass a place_id and the generator fills LocalBusiness markup with the real address, coordinates, phone, rating, opening hours and social profiles. No other vendor has that record to hand.

Checks its own output

The generated markup is run back through the validator, so you never paste something that fails.

Pricing

One credit system for every endpoint.

Checking a URL costs one credit; checking HTML or a JSON-LD document you already hold is free. Generating markup costs one credit.

See all plans

Questions

Things people ask about the Schema Validator API.

Will this tell me if I get a rich result?

It tells you whether the markup meets the documented requirements, which is the part that can be checked. Whether a search engine grants a rich result is its decision and no API can promise it.

Can I use it in continuous integration?

That is what it is for. Send the built HTML rather than a URL and the check is free, so a build can fail on missing required fields without spending credits.

What makes the generator different from a template?

It is filled from a live business record: the real address in parts, coordinates, phone in international format, rating with review count, and seven days of opening hours.