- query
- The Vistaprint URL you submitted, echoed on every row so an export covering many products stays separable. On all of our rows this matched
url exactly. - sku_code
- The product code. On both real rows this was identical to
sku, in the form PRD- followed by eight alphanumerics. Two identifier columns, one value - pick either, but check both if you are joining, because they are filled independently in this schema family. - product_url
- Intended to carry the canonical product page. Use
url instead. - name
- The product title as the page states it - "Standard Business Cards" on one of our rows, "VistaPrint® Printed Baseball Cap" on the other. Note the registered-trademark sign: it is in the source and it survives into the cell.
- description
- The page's marketing description, around 150–180 characters on our rows. Worth reading rather than discarding: on the business-cards row the only pricing information anywhere in the record was a phrase inside this text, not a number in a price column.
- parsed_price
- Intended to carry the price as a bare number. See the note below the table.
- price
- Intended to carry the price as displayed.
- currency
- Intended to carry the currency the price is quoted in.
- availability
- Intended to carry stock status. Print-to-order goods do not carry a stock state the way stocked goods do.
- rating
- The average rating, and one of the fields that does come back - "4.7" and "4.3" on our two rows. It arrives as a string, not a number, so cast it before you sort on it.
- reviews
- Intended to carry the number of reviews. Empty on both real rows, even though the product page's own structured data does publish a review count alongside the rating. We are recording that as a gap rather than explaining it away.
- images
- Every image the page carries. On both real rows this was identical to
image. Do not split it on commas - the commas are part of the Cloudinary transform. - brand
- The manufacturer or brand. "Vistaprint" on both of our rows, which is what you would expect from a own-brand print shop; treat a different value as informative rather than as an error.
- sku
- The item number. Identical to
sku_code on both real rows, and the most useful join key in the record - it is the value the product page's structured data publishes as its SKU. - url
- The address the row was produced from. Equal to
query on every row we hold, which tells you these requests were served without redirecting. - image
- The primary image on its own. A Cloudinary URL on
cms.cloudinary.vpsvc.com wrapping a rendered preview from rendering.documents.cimpress.io - the artwork is generated on request rather than stored as a photograph. One of ours ran to 1,697 characters, so a fixed-width column will truncate it. - status
- A per-row flag written by our exporter, not by Vistaprint. Across our eight runs it took four values:
ok, blocked (needs residential proxy), no product data found and http 404. Reconcile on this column rather than on row count.
Why the four price columns are empty, stated plainly. We hold eight runs; two returned real Vistaprint product rows, and on both of them price, parsed_price, currency and availability were empty strings. That is not a scraper defect. Fetching either product page directly returns roughly 745–843 KB of server-rendered HTML whose ld+json holds a Product block with name, description, SKU, MPN and brand - and no offers node and no price of any kind. Vistaprint quotes by quantity, material and finish, so there is no single product price for the page to publish or for us to read. The rating and SKU in that same structured data match our export exactly, which is how we know the rows are genuine rather than a parsing accident. If your work needs Vistaprint pricing, this service will not supply it, and no configuration of it will.