← ClaudeAtlas

structured-data-extractionlisted

Extracts data from web pages without writing CSS selectors or XPath, by reading the machine-readable structures a page already publishes — JSON-LD, schema.org microdata, Open Graph tags, embedded __NEXT_DATA__ and application/json state blobs, HTML tables and RSS feeds — and locating a value by name so you get a JSON path instead of guessing at DOM structure. Use this whenever someone is writing selectors to scrape a page, asks how to get product prices, article metadata, listings, ratings or tables off a site, wants extraction that survives redesigns, is tired of selectors breaking, or is about to reach for BeautifulSoup, parsel or a headless browser to pull fields out of HTML.
prashant-cr/skills · ★ 1 · Data & Documents · score 75
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