Website Structured Data Extraction Api
Pricing
from $5.00 / 1,000 result returneds
Website Structured Data Extraction Api
Automation teams need to extract and validate embedded structured markup from HTML they already possess without maintaining selectors, running browsers, invoking AI models, or crawling third-party websites.
Pricing
from $5.00 / 1,000 result returneds
Rating
0.0
(0)
Developer
Jordan Nabbe
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
Extracts and validates structured markup that already exists in HTML you supply: JSON-LD, Microdata, RDFa, Open Graph and Twitter Card. It never fetches URLs, runs no browser, executes no scripts and uses no AI, so results are deterministic and every value keeps its source format and location.
Input
Provide exactly one of: html, text (treated as HTML), records (objects with html or content, optional id), json (a record object, or an object with a records array), csv (header row with an html or content column, optional id), or base64Documents (objects with contentBase64 UTF-8 HTML, optional id).
Options: vocabularies (array of jsonld, microdata, rdfa, opengraph, twitter, no duplicates; default all five; unsupported values are rejected by the Actor code), validationLevel (none, basic, recommended; default basic), includeRaw (default true), deduplicate (default true), maxDocumentBytes (default 2097152, range 1024 to 10485760).
Output
One dataset row per document that produced structured data, with documentId (your id or document-N), status (ok or partial), entities (format, type, data, optional raw, source path and UTF-16 start offset), metadata (sorted Open Graph and Twitter maps), warnings, duplicates, coverage and stats. Documents that failed are listed in OUTPUT.failedDocuments and are not charged. The OUTPUT record holds outcome, counts plus the delivered rows (capped at 1000 rows, with rowsTruncated set when capped; the dataset always has all rows). stats.processingMs is always 0 so output stays reproducible.
Pricing
Pay per event. The main charge is per document with structured data; everything else listed below is free.
| Event | Price (USD) | Charged when |
|---|---|---|
Run start (apify-actor-start) | $0.005 | once per run; the default 512 MB memory is one event |
Document with structured data (apify-default-dataset-item) | $0.005 | per document delivered to the dataset |
Not charged:
- documents that could not be processed (listed in OUTPUT.failedDocuments)
- the run summary
Examples (default 512 MB memory, one start event):
- Audit of 200 product pages: $0.005 start + 200 × $0.005 = $1.005
- One page: $0.005 start + 1 × $0.005 = $0.01
Spending limit: when you set a maximum cost per run, the Actor stops before it would exceed it, keeps every document with structured data it already delivered and reports limitReached in the OUTPUT record. It never delivers results beyond the limit.
The Store's Pricing tab shows the prices in force. If this section and the Pricing tab ever differ, the Pricing tab applies.
Limits
Max 10,000 documents and 100 MB total input per run; 1,000 entities per document; 100 keys per object; microdata/RDFa nesting depth 8; JSON-LD depth 32, 20,000 nodes and 1 MB per block; 200,000 elements and nesting 512 per document. Documents are processed sequentially. Validation uses bundled rules for a few common schema.org types only, with no registry lookups. Microdata itemref and full RDFa processing (prefix expansion, chaining) are not supported.
Failure behaviour
The run fails (non-zero exit, nothing stored) on invalid input: zero or multiple modes, unknown keys, out-of-range values, unsupported vocabularies, malformed CSV, unsupported record shapes, or exceeded run limits. Per-document problems (invalid base64, non-UTF-8 bytes, oversized or too complex documents) are reported in OUTPUT.failedDocuments and the batch continues; when no document produced data the run ends as failed after saving OUTPUT. Malformed JSON-LD gives a partial row with machine-readable warnings while other markup is still extracted. Submitted content is never logged; you are responsible for having permission to process it and for the retention of your Apify storages.


