Workflow pattern / Extraction
Extract product catalogs into structured records
Turn listing and detail pages into validated records with units, currencies, and source links intact.
Advanced / Dataset / Daily
The problem
Catalog data spread across listing pages, detail pages, and variant selectors is inconsistent and breaks whenever a template shifts.
Who it is for
Data teams building comparison, pricing, or availability datasets from public catalogs.
Teams: Data / Merchandising / Engineering
Inputs
- Category or listing URLs
- A product schema with units and currency
- Pagination and variant rules
Conceptual process
01Enumerate
Walk listing pagination to collect detail-page URLs.
02Retrieve
Fetch detail pages, rendering only where the data requires it.
03Extract
Apply the schema per page, capturing currency and unit as fields.
04Validate
Range-check prices, normalize dates, quarantine failures.
05Track
Store per-template extraction rates so drift becomes visible.
Flow diagram
- 01Category URL
- 02Enumerate listings
- 03Fetch detail
- 04Extract schema
- 05Validate
- 06Dataset
Example output
{ "sku": "EX-1042", "name": "Field notebook, ruled", "price": { "amount": 18.5, "currency": "USD" }, "availability": "in_stock", "attributes": { "pages": 128, "binding": "sewn" }, "source_url": "https://example.com/products/ex-1042", "retrieved_at": "2026-09-14T08:15:00Z", "missing": ["dimensions"]}Data-quality considerations
- Currency and unit are fields, never assumptions.
- Promotional price and list price are different fields.
- Sample-review one record per template rather than per product.
Failure modes
- Variant price captured instead of base price.
- Out-of-stock items silently dropped rather than recorded as unavailable.
- Pagination loop ends early because the last page renders differently.
Suggested architecture
- Listing enumerator
- Detail fetcher
- Schema extractor
- Validator with quarantine
- Template drift monitor
What to test first
- 01Extract fifty products and hand-check ten against the live pages.
- 02Confirm an out-of-stock product produces a record, not a gap.
Related reading