- query
- The CDW URL you submitted. On a category run this is the same value on every row the category produced, which is what lets you tell one shelf from another in a combined export. Keep it - with a fan-out, it is the only thing grouping the rows.
- sku_code
- CDW's own part number. Populated on all 24 rows of our category run. It is also the trailing segment of
product_url and the id inside the image URL, so the three agree and you can sanity-check a row against itself. - product_url
- The canonical product page. On a category run this is the row's own product - 24 rows, 24 distinct values - which is what makes the fan-out useful rather than merely long.
- name
- The product title as the listing states it. Expect reseller phrasing with the configuration spelled out: processor, memory and storage tend to be part of the name rather than separate fields.
- description
- Intended to carry the longer product text. A category listing does not print one; a product page might.
- parsed_price
- The price as a bare number. Populated on all 24 rows. This is the one to compute on - and see the note below for why it exists at all, given the page does not serve it.
- price
- The same price as displayed, with symbol and thousands separator. Use it when you need to show a customer exactly what CDW showed; use
parsed_price to do arithmetic. - currency
- The currency the price is quoted in. Populated on all 24 rows. Read it rather than assuming - a reseller with international storefronts will not always answer in the same one.
- availability
- Intended to carry stock status. Treat its absence as the listing not publishing one rather than as the product being unavailable.
- rating
- Intended to carry an average rating. A reseller listing aimed at business buyers generally does not carry consumer ratings.
- reviews
- Intended to carry the review count, with the same caveat as
rating. - images
- Every image the listing carries. Populated on all 24 rows. Worth knowing: the image URL includes a rendering preset, and the preset differed between our category run and our product run - the same product, two different image sizes. Do not treat the URL as a stable identity; the id inside it is the stable part.
- brand
- Intended to carry the manufacturer. If you need to group by brand, parse it from the name.
- sku
- The manufacturer's part number, and a different value from
sku_code. This is the column to match on when you are asking whether another reseller lists the same physical product. - url
- The address the row was produced from. On our category run this equalled
product_url rather than query - the row points at its own product, not at the shelf it came from. - image
- The primary image on its own, so the common case needs no string splitting. Same rendering-preset caveat as
images. - status
- A per-row flag written by our exporter, not by CDW. Across our eight runs it took four values:
ok, blocked (needs residential proxy), no response (proxy) and http 404. Reconcile on this column - especially with a fan-out, where row count alone tells you nothing.
Two things about this table are worth reading before you build against it. First, the prices are real. All 24 rows of our category run carried a number, a formatted price and a currency - this is the one catalogue in this family whose money columns arrive populated. But fetching the same product page directly returns about 57 KB of HTML that contains both part numbers and the product name and no price at all, with no structured-data block to read one from. The figure is rendered in the browser. Our export has it because the service renders the page, and a scraper built on an HTTP library and an HTML parser would come back empty-handed while appearing to work. Second, the schema moved. Our 1 July run carries an eleven-column header - query, name, brand, price, currency, sku, availability, rating, url, image, status - with no parsed_price, sku_code, product_url, description, reviews or images. Everything from 3 July onward is the seventeen-column form above. If you are reconciling against an older export, that is the difference.