Schema.org JSON LD Validator API

Validate JSON LD structured data in one request.

Validate Schema.org JSON LD with a simple API. Send raw schema objects or webpage URL and get clear validation results, detailed error messages, and optional access to the original schema data.

Validate up to 10 schemas per request
URL based schema extraction
Clear error codes
JSON LD

What this API does

10 schemas per request
2 input modes
Validation details with error paths, messages, and programmatic error types

The validator checks syntax, property names, type mismatches, missing context or type, invalid URLs, invalid dates, and email formats. It can also validate schema directly from webpages by extracting JSON LD scripts.

Built for schema workflows.

Use the API for development checks, publishing pipelines, SEO tooling, and live webpage validation.

Schema

Validate schema before publishing

Run a quick check on your JSON LD so you can catch mistakes before a page goes live.

Pre publish check Fast feedback Safe launch
Data

Build a schema checker dashboard

Surface validation results in your own UI with statuses, error counts, and source URLs.

Clean JSON Status output Error mapping
Errors

Debug schema issues faster

Use structured error paths and error types to identify exactly what needs to be fixed.

Error paths Type codes Clear messages
Docs

Validate many schemas at once

Submit up to 10 schemas in a single request and process the results in one pass.

Bulk validation Up to 10 items Batch processing
Logic

Inspect live webpages

Pass a webpage URL and let the API extract and validate all JSON LD blocks found on the page.

URL extraction Script parsing Live pages
Schema

Improve SEO and structured data quality

Use the validator to keep schema markup correct, consistent, and easy for search engines to process.

SEO quality Structured data Markup hygiene

Copy, paste, and run.

Send either direct schema objects or webpage URL.

Validate direct schemas

POST /validate-schema


curl --request POST \
  --url https://structured-data-schema-org-json-ld-validator-api.p.rapidapi.com/api/validate-schema \
  --header 'Content-Type: application/json' \
  --header 'x-rapidapi-host: structured-data-schema-org-json-ld-validator-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY' \
  --data '{
    "schema-code": true,
    "schemas": [
      {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": "Jane Doe",
        "email": "jane@example.com",
        "url": "https://example.com/jane"
      },
      {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": "",
        "email": "not-an-email",
        "url": 12345,
        "birthDate": "invalid-date"
      },
      {
        "@context": "https://schema.org",
        "@graph": [
          {
            "@type": "Organization",
            "name": "Example Corp",
            "url": "https://example.com"
          },
          {
            "@type": "WebSite",
            "url": "https://example.com",
            "name": "Example Site"
          }
        ]
      },
      {
        "@context": "https://schema.org",
        "@graph": [
          {
            "@type": "Organization",
            "name": null,
            "url": "not-a-valid-url"
          }
        ]
      }
    ]
  }'

Success response example

Direct schema validation output

{
  "success": true,
  "results": [
    {
      "inputType": "user_provided",
      "index": 0,
      "source": null,
      "name": "Person",
      "isValid": true,
      "errors": [],
      "schemaCode": {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": "Jane Doe",
        "email": "jane@example.com",
        "url": "https://example.com/jane"
      }
    },
    {
      "inputType": "user_provided",
      "index": 1,
      "source": null,
      "name": "Person",
      "isValid": false,
      "errors": [
        {
          "path": "root.name",
          "message": "Property present but empty",
          "error_type": "EMPTY_PROPERTY"
        },
        {
          "path": "root.email",
          "message": "Invalid email format: 'not-an-email'",
          "error_type": "INVALID_EMAIL"
        },
        {
          "path": "root.url",
          "message": "Invalid URL format: expected string",
          "error_type": "INVALID_URL"
        },
        {
          "path": "root.birthDate",
          "message": "Invalid date format: 'invalid-date'",
          "error_type": "INVALID_DATE_FORMAT"
        }
      ],
      "schemaCode": {
        "@context": "https://schema.org",
        "@type": "Person",
        "name": "",
        "email": "not-an-email",
        "url": 12345,
        "birthDate": "invalid-date"
      }
    },
    {
      "inputType": "user_provided",
      "index": 2,
      "source": null,
      "name": "Graph[Organization, WebSite]",
      "isValid": true,
      "errors": [],
      "schemaCode": {
        "@context": "https://schema.org",
        "@graph": [
          {
            "@type": "Organization",
            "name": "Example Corp",
            "url": "https://example.com"
          },
          {
            "@type": "WebSite",
            "url": "https://example.com",
            "name": "Example Site"
          }
        ]
      }
    },
    {
      "inputType": "user_provided",
      "index": 3,
      "source": null,
      "name": "Graph[Organization]",
      "isValid": false,
      "errors": [
        {
          "path": "root.@graph[0].name",
          "message": "Property cannot be null",
          "error_type": "NULL_VALUE"
        },
        {
          "path": "root.@graph[0].url",
          "message": "Relative URL not allowed or invalid URL format: 'not-a-valid-url'",
          "error_type": "INVALID_URL"
        }
      ],
      "schemaCode": {
        "@context": "https://schema.org",
        "@graph": [
          {
            "@type": "Organization",
            "name": null,
            "url": "not-a-valid-url"
          }
        ]
      }
    }
  ]
}

Validate a webpage URL

Extract ld plus json scripts automatically

curl --request POST \
  --url https://structured-data-schema-org-json-ld-validator-api.p.rapidapi.com/api/validate-schema \
  --header 'Content-Type: application/json' \
  --header 'x-rapidapi-host: structured-data-schema-org-json-ld-validator-api.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY' \
  --data '{
    "schema-code": true,
    "urls": [
      "https://projecthq.site/"
    ]
  }'

URL extraction response example

URL extraction output

{
  "success": true,
  "results": [
    {
      "type": "url_extracted",
      "index": 0,
      "source": "https://projecthq.site/",
      "name": "WebApplication",
      "isValid": true,
      "errors": [],
      "schemaCode": {
        "@context": "https://schema.org",
        "@type": "WebApplication",
        "name": "ProjectHQ",
        "description": "ProjectHQ is a complete business management suite built for solo entrepreneurs and indie developers. It includes SoloFlow (project management), Indie CRM (lightweight CRM), SocialScope (marketing effort tracking), and a (VidyaVault) knowledge base tool — all in one streamlined platform.",
        "url": "https://projecthq.site",
        "applicationCategory": "BusinessApplication",
        "operatingSystem": "Web Browser",
        "offers": {
          "@type": "Offer",
          "availability": "https://schema.org/PreOrder",
          "description": "Coming Soon"
        },
        "creator": {
          "@type": "Organization",
          "name": "ProjectHQ",
          "url": "https://projecthq.site"
        }
      }
    },
    {
      "type": "url_extracted",
      "index": 1,
      "source": "https://projecthq.site/",
      "name": "WebPage",
      "isValid": true,
      "errors": [],
      "schemaCode": {
        "@context": "https://schema.org",
        "@type": "WebPage",
        "name": "ProjectHQ - Solo Business Management Suite",
        "description": "All in one business management platform for solo entrepreneurs and Indie Developers",
        "url": "https://projecthq.site"
      }
    }
  ]
}

Start in a few minutes.

Subscribe via RapidAPI, get your API key, and start validating schema in just a few steps.

1

Subscribe on RapidAPI

Create a RapidAPI account if you do not have one, then subscribe to our API from the RapidAPI marketplace.

2

Start with the free tier

Begin with the free plan. No payment method is required to get started.

3

Get your RapidAPI key

Copy your RapidAPI key from your account and include it in your request headers.

4

Send your first request

Send schemas or URL to the validation endpoint and use the response in your app or workflow.

Frequently asked questions.

Common questions about the validator, the response shape, and how schema handling works.

It validates Schema.org JSON LD data for syntax, type consistency, missing required fields like @context and @type, bad URLs, invalid emails, empty values, invalid dates, and other common structured data problems.

Yes. You can pass direct schema objects in the schemas array, and the API validates them immediately without fetching a webpage.

Yes. Pass a fully qualified webpage URL and the API will extract application ld plus json scripts from the page, then validate each schema it finds.

The API prioritizes the local schemas and ignores the URLs. The response can include a warning field to make that behavior explicit.

Yes. Set schema code to true in the request body or query string and the response can include the original schema data in schemaCode.

Start with the success field and each result item’s isValid value, then inspect the errors array when a schema fails validation.