Skip to main content
Many online stores publish each product’s price and stock status as schema.org data, so Google can show them in search results. That data sits in the page’s HTML as JSON, which makes it easier and steadier to read than the visible page. This guide shows how to check a store yourself, how to get the data through a product data API, and how often stores really fill each field.

What the data looks like

Run this on any product page to see its schema.org data. It needs only curl and Python. Check the store’s robots.txt and terms first.
On 2026-11-05 that printed:
It’s a sketch for one store’s shape. Other stores nest products in @graph, list several offers, use lowPrice, or leave fields out, and some only add the data with JavaScript. You can also paste a URL into the Schema Markup Validator.

Get it as a price API

Product Data API & Scraper - Prices & Stock handles those shapes and returns one format across stores, so it works as an e-commerce product API or a price API for any store that publishes this data:
It costs $1.50 per 1,000 results plus a small start fee per run. You can also run it from a form without code. To cover a whole catalog, turn on Crawl the website with a start page and a Link pattern such as /products/.

How often stores fill each field

We ran the Actor’s extractor on 16 product pages from 9 online stores on 2026-11-05, counting pages with a product record: Price and currency came back on every page with a record. Stock status is less common: where it is missing, the markup doesn’t publish it, so the field is null rather than a guess. No page in this test published a GTIN. Pages with each field, per store:

Where it doesn’t work

We tried 14 stores and 9 returned records. The other 5:
  • ColourPop: HTTP 429 on every page
  • Kylie Cosmetics: HTTP 429 on every page
  • bol.com: HTTP 403 on every page
  • Brooklinen: no Product markup in the HTML of the 2 pages it served
  • Back Market: connection failed
That was one plain pass from one address with 4 seconds between pages and no retries, honouring robots.txt, and we also hit rate limits on some pages of stores listed above. The Actor retries rate limits, but it doesn’t bypass blocks: what stays blocked comes back as a free error item. Pages that add the data only with JavaScript and pages behind a login aren’t read.

Track prices over time

Each run reads prices as they are now and keeps no history. To track them, schedule a run and compare results by url and price.

Run Product Data API & Scraper - Prices & Stock on Apify

$1.50 per 1,000 results, no subscription. You run it with your own Apify account.