Schema Markup
Extract every schema.org JSON-LD entity from a live URL, including entities nested inside @graph arrays.
https://api.rankparse.com/v1/schema-markup2 credits (refunded on failure)API keyFetches a public URL at request time and extracts every <script type="application/ld+json"> block into a flat list of schema.org entities. Use it to verify structured data (Organization, Product, FAQPage, Article and so on) after a deploy, or to compare a competitor's markup. Malformed blocks never fail the request: they are skipped and reported one by one. This is a live fetch, not link graph data.
Query parameters
urlstringrequiredFull http:// or https:// URL of the page. The same rules and limits as Page SEO apply: no fragment, public hosts only, 8 second timeout, 2 MB body cap, up to 5 redirects. A missing or invalid value returns 400 invalid_url before any charge.
Response
urlstringThe URL you sent.
dataarrayOne entry per schema.org entity, flattened across blocks and @graph arrays. Empty when the page has no usable JSON-LD.
Show propertiesHide properties
typearray of stringsThe entity's @type, normalized to an array even when the block declared a single string.
idstring | nullThe entity's @id, or null.
block_indexinteger0-based index of the <script> block the entity came from, counting every JSON-LD block on the page, malformed ones included.
sourcestringtop_level for a block's own object or array item, graph for an entity nested inside @graph.
propertiesobjectThe complete parsed JSON-LD object, including @context, @type, @id and every other property.
totalintegerNumber of entities in data.
final_urlstringThe URL after redirects.
status_codeintegerHTTP status the target returned. A 404 page is still parsed and billed.
response_time_msintegerFetch time in milliseconds.
has_schema_markupbooleantrue when at least one entity was extracted.
typesarray of stringsUnique types across all entities, sorted alphabetically.
block_countintegerJSON-LD blocks found on the page.
valid_block_countintegerBlocks that parsed as JSON.
invalid_block_countintegerBlocks that failed to parse.
invalid_blocksarray{ index, error } for each malformed block, where index is its block index and error is the JSON parse message.
credits_usedintegerAlways 2 on success.
credits_remainingintegerYour balance after the charge.
Behavior and limits
- What counts as an entity. An object counts only if it has an
@type. A top-level array is expanded item by item. An object that has both its own@typeand an@graphyields the object itself (source: "top_level") and every graph member (source: "graph"). - Nesting depth. Arrays and
@graphnesting are followed up to 6 levels deep. Entities nested as property values (for example anauthorobject inside anArticle) stay insidepropertiesand are not listed separately. - Valid JSON with no entities. A block that parses but is not an object or array (for example a bare string), or an object with neither an
@typenor an@graph, counts as valid but adds nothing todata. - No JSON-LD. A page without structured data returns
200withdata: [],has_schema_markup: falseandblock_count: 0, not an error. It is billed. - Static HTML only. JSON-LD injected by client-side JavaScript after load is not seen. Microdata and RDFa are not read.
- Credits: 2 per call. Failures after the charge (for example
503 fetch_failed) are refunded. Missing, malformed or private URLs are rejected before billing. No caching: every call fetches the page again. - Rate limit: 60 requests per minute per key. See Rate limiting.
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_url | Missing, malformed or non-http(s) URL; credentials, whitespace or a fragment in the URL. |
| 400 | private_ip | The host, or a redirect target, is private, reserved or local. |
| 400 | response_too_large | The page body exceeded 2 MB. Refunded. |
| 401 | invalid_api_key | Missing, invalid or revoked API key. |
| 402 | insufficient_credits | Balance is lower than 2 credits. |
| 402 | spend_cap_reached | Your monthly spend cap is reached. |
| 429 | rate_limited | More than 60 requests in a minute. |
| 503 | fetch_failed | Target unreachable or redirected too many times. Refunded. |
| 503 | timeout | Target did not respond within 8 seconds. Refunded. |
See Errors for the shared error format.
Related
MCP tool: get_schema_markup (argument url).