structured-data-extractionlisted
Install: claude install-skill prashant-cr/skills
# Structured data extraction
Most scrapers parse markup that was never intended to be an interface, which is why they break on
every restyling. The same pages usually publish typed, documented data alongside that markup —
JSON-LD for search engines, Open Graph for social previews, and their own application state as
JSON for the frontend. Those exist because breaking them costs the site traffic or functionality,
which is exactly the property you want to depend on.
So look before you select. It is frequently faster, usually more accurate, and it survives the
redesign that would have broken a selector.
## Why this beats selectors
**Stability.** A generated class name like `.css-1x2y3z` changes when anyone edits the styles.
A JSON-LD `Product.offers.price` changes when the site changes its data model, which is rare and
deliberate.
**Accuracy.** Markup holds what was formatted for a human; structured data holds what the site
stores. GitHub's DOM renders a star count as `141k` while the JSON on the same page carries
`141146`. Scraping the text loses three digits and looks perfectly fine doing it. The same gap
produces truncated descriptions, relative timestamps where an ISO datetime exists, and
locale-formatted prices.
**Typing.** `"price": 29.99` with `"priceCurrency": "USD"` needs no parsing. `"$29.99"` scraped
from a span needs currency stripping, locale handling, and a decision about what `"Free"` means.
**Completeness.** Embedded state routinely carries fields the page