- query
- The search URL you submitted. Every row a search produces repeats it, which is what groups a result set back together after you combine exports. All 85 of our rows carry the same value because all seven runs submitted the same query.
- name
- The listing title as the results page prints it. Populated on all 85 rows. Expect the configuration inside the title - processor, memory, storage and screen size are part of the name rather than separate columns.
- sku
- Best Buy's own product number, and the column to join on. Populated on all 85 rows, 70 distinct values, and it also appears inside
url on every row. Seven SKUs turned up in more than one of our runs, which is how you follow a product across dates. - brand
- The head of the title, not a normalised manufacturer field. Populated on all 85 rows - and on all 85 it is a leading substring of
name. Real makers appear, and so do fragments like "Customer" or a screen size. Normalise it before you group by it. - model
- The manufacturer's model number where the listing prints one - 69 of 85 rows. This is the value that survives a move to another retailer's catalogue, so keep it even though it is the sparser of the two identifiers.
- price
- The price as displayed, with the currency symbol. 78 of 85 rows. There is no separate numeric column in this schema and no currency column, so strip the symbol yourself before doing arithmetic. Our run held values from two figures up to $4,199.98.
- rating
- The average star rating as a string. 81 of 85 rows. Read it together with
reviews: 19 rows carry a rating of 0 alongside a review count of 0, which is a listing nobody has rated yet rather than a listing rated badly. - reviews
- The number of reviews behind that rating. Same 81 rows as
rating, and the same caveat about zeros. Our run ranged from 0 up to 5,929. - image
- The listing thumbnail, served from Best Buy's image host. 84 of 85 rows. One row came back without one, so treat the column as optional in your importer.
- url
- The product page for that listing. Populated on all 85 rows, in one of two shapes -
/product/…/sku/<sku> on 58 rows and /site/-/<sku>.p?skuId=<sku> on 27. Both embed the SKU, so the address is a link rather than an identity. - position
- The rank the listing held on the results page, starting at 1. Populated on all 85 rows; ours ran to 23. This is the column that makes the export a picture of a shelf, and it is only meaningful next to
query and the date you ran it.
Two things to plan around. First, this schema is not the seventeen-column catalogue shape used by our distributor pages: there is no parsed_price, no currency, no availability, no description and - importantly - no per-row status. If you are writing one importer for several sources, this one needs its own branch. Second, depth is not fixed. Seven runs of the identical search URL returned 2, 3, 10, 14, 15, 18 and 23 rows, always starting at position 1. The vendor's own catalogue marks this service Partial with the note -blocked (needs residential proxy). Rows do arrive; how many is not something we will promise from seven runs, and we quote no success rate.