Collect product prices without losing the context
A price is only useful when you know the product, currency, stock status and source it belongs to.

A row containing only “51.77” is not a product record. It has no currency, product identity or source. It also gives you no way to tell a genuine change from a different product variant, delivery location or parsing mistake.
Define the record before writing the collector. A small, repeatable set of fields is easier to validate than a page full of text.
Start with a real product page
The A Light in the Attic product page on Books to Scrape is a useful public practice page. When checked on 22 October 2026, it listed a £51.77 price and “In stock (22 available).” This is also the source used in the Crawlhub collection visual.
The displayed values can change. The point of keeping a source URL is that you can return to the page and check the value you collected, rather than treating a copied number as a permanent fact.
Use a stable record shape
{
"product_title": "A Light in the Attic",
"price": "51.77",
"currency": "GBP",
"availability": "In stock",
"available_quantity": 22,
"source_url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
}Keep the amount and currency in separate fields. Retain the original availability text as well as any normalized value your application uses. Add a retrieval timestamp when the request completes, so the record has a clear collection time.
Separate retrieval from extraction
The connection retrieves the page. A parser identifies the product title, price and stock fields. Storage keeps the resulting record and its source. Treat those as separate steps with separate errors.
A successful HTTP response can still be the wrong page: a consent prompt, a region selector or an empty product container. Validate the required fields before accepting the record. If a price is missing, keep it missing and flag the record instead of converting the failure to a zero price.
Compare the same product in the same market
A price-monitoring job needs a stable product key. Use a SKU, a store identifier or another durable value where one is available. A title alone can change when a retailer edits its copy.
Keep location and variant choices with the request. Comparing a small blue item in one country with a large black item in another country will create noise, even when both prices were extracted correctly.
Make change detection explainable
Store the previous value, current value, currency, retrieval time and source together. When an alert fires, a person should be able to see what changed and which page produced it. A stock change and a price change are different events; keep them separate.
Begin with a small catalog and inspect several records manually. Then expand the target list while monitoring missing-field rates and request failures. That gives you a collection you can reason about before it becomes a larger pipeline.
Explore page collection with the Web Scraping API or choose a connection for your own scraper.