Structured or unstructured data: what is the difference?
Structured data has a defined shape. Every record has the same fields, each field has a type, and a program can read a value and know what it means without interpreting anything. A database table, a CSV with headers, a JSON object matching a schema.
Unstructured data carries meaning that is not encoded in its shape. A paragraph of prose, a PDF, an image, a support email. The information is there, but extracting it requires reading rather than lookup.
| Structured | Unstructured | |
|---|---|---|
| Shape | Defined in advance | Emerges from content |
| Reading it | Field lookup | Interpretation |
| Querying | Direct | Requires processing first |
| Examples | CSV, database rows, JSON with a schema | Web pages, PDFs, images, prose |
Where HTML actually sits
HTML is usually filed as semi-structured, and the label is worth unpacking because it explains the whole job of extraction.
A page has structure: nested elements, attributes, a document tree. But that structure describes presentation, not meaning. A <span class="a7f2">$49.99</span> is structurally well-defined and semantically opaque. Nothing in the markup says this is a price, that it is in dollars, or that it belongs to the product named three elements up.
So HTML is machine-readable without being machine-understandable, and extraction is the process of adding the missing layer: deciding that this span is a price, that number is stock, and both belong to that product.
Why the distinction matters in practice
It sets what you can do downstream. Structured records can be filtered, joined, aggregated and compared across sources. Unstructured text can be searched and summarised, and not much else, until somebody structures it.
It also sets the cost. Structured output from a known layout is cheap and exact. Extracting structure from prose or from a page whose layout you do not control costs a model call, and can be wrong in ways a selector cannot.
The practical middle ground most pipelines land on: keep the structured fields you need for querying, and keep the source text alongside them for the questions you have not thought of yet.
Where Zenrows fits
Extract is the step that moves a page from semi-structured to structured, returning JSON with the fields you described rather than markup you have to interpret. For common page types, Autoparse does it without any schema at all, recognising products, articles and listings and returning their fields directly.
Go deeper on the blog
In the docs
Last updated: Aug 16, 2026