Overview
The foundational feature of ValidGraph. Submit any public URL and the engine extracts all JSON-LD blocks from the page, parses them against Schema.org specifications, and returns a detailed validation report with errors, warnings, and recommendations.
How It Works
1. User submits a URL via the dashboard or API
2. ValidGraph fetches the page and extracts all blocks
3. Each block is parsed and validated against Schema.org type definitions
4. A validation report is generated with:
– Detected schema types
– Required properties (present/missing)
– Recommended properties
– Syntax errors
– Nested entity validation
Tier Availability
| Tier | Limit |
|——|——-|
| Free | 5 validations/day |
| Pro | 1,000 validations/month |
| Agency | 10,000 validations/month |
| Enterprise | Unlimited |
API Reference
POST /api/v1/validate
Request:
{
"url": "https://example.com/article"
}
Response:
{
"success": true,
"data": {
"url": "https://example.com/article",
"schemas_found": 2,
"types": ["Article", "BreadcrumbList"],
"score": 85,
"errors": [],
"warnings": [
{
"type": "Article",
"property": "image",
"message": "Recommended property 'image' is missing"
}
]
}
}
Related Features
– JSON-LD Paste Validation: Validate markup directly without a URL
– Schema Completeness Score: Detailed scoring of property coverage
– Validation History: Track all past validations (Pro+)
Quick Start: Validate Your First URL
Step 1: Submit a URL via the API
curl -X POST https://api.validgraph.io/wp-json/validgraph/v1/validate
-H "Authorization: Bearer YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{"data_url": "https://example.com/article"}'
Step 2: Parse the validation response — You’ll receive:
– types: All schema types detected (e.g., [“Article”, “BreadcrumbList”])
– score: Overall completeness score (0-100)
– errors: Critical syntax issues
– warnings: Missing recommended properties
Step 3: Review the report in your dashboard at validgraph.io/validations
Real-world example:
A recipe blog submits https://recipes.example.com/chocolate-cake. The validator finds:
– 1 Recipe schema detected
– Score: 62/100 (missing image, prepTime, cookTime)
– Warning: Image is recommended but missing
– The dashboard suggests adding these properties to improve rich snippet eligibility
Technical Details
Validation Flow
The validation engine processes URLs as follows:
1. Fetch & Extract: Makes HTTP request to the URL and extracts all blocks using regex
2. Parse JSON: Parses each block as valid JSON (returns error if malformed)
3. Type Detection: Identifies @type field; matches against supported types list (Free: 5 types; Pro+: 25+ types)
4. Property Validation: For each detected type, validates:
– Required properties presence and value types (Article requires: headline, author, datePublished)
– Recommended properties (Article recommends: image, description, dateModified, publisher)
– Optional properties (Article optionals: url, mainEntityOfPage, keywords)
– RangeValidator checks value constraints (e.g., Date format, URL validity, Integer ranges)
5. Nested Entity Validation: Recursively validates nested objects (author, publisher, etc.)
6. Scoring: Calculates completeness score: (required_met×3 + recommended_met×2 + optional_met×1) / max_points × 100
Request/Response Example
Request:
{
"data_url": "https://example.com/blog/article-123"
}
Response (Success):
{
"success": true,
"data": {
"url": "https://example.com/blog/article-123",
"validation_id": "val_abc123xyz",
"schemas_found": 1,
"types": ["Article"],
"score": 78,
"completeness": {
"Article": {
"required": {"headline": true, "author": true, "datePublished": true},
"recommended": {"image": false, "description": false, "dateModified": true, "publisher": false},
"optional": {"url": true, "keywords": false}
}
},
"errors": [],
"warnings": [
{
"type": "Article",
"property": "image",
"severity": "medium",
"message": "Recommended property 'image' is missing. Including an image significantly improves rich snippet eligibility."
},
{
"type": "Article",
"property": "publisher",
"severity": "low",
"message": "Optional property 'publisher' is missing."
}
],
"extraction_method": "json_ld"
}
}
Response (Invalid JSON):
{
"success": false,
"error": {
"code": "INVALID_JSON",
"message": "Malformed JSON-LD in script block: Unexpected token } at line 15"
}
}
Tier Behavior
– Free tier: Validates only Article, FAQPage, BreadcrumbList, Organization, WebSite; limited to 5/day
– Pro tier: Validates 25 curated types; 1,000/month allowance
– Agency/Enterprise: Full vocabulary fallback (validates any schema.org type); higher rate limits
References
– Schema.org Article Type: https://schema.org/Article
– Google Rich Results Requirements: https://developers.google.com/search/docs/appearance/structured-data/article
– JSON-LD Specification: https://json-ld.org/
– Schema.org Core Vocabulary: https://schema.org/
– Structured Data Testing Tool: https://search.google.com/test/rich-results