Primary email
primary_email
Optional
Find-stores runs with Include contacts on: the public email to use first - an address on the store's own domain when the store shows one, otherwise the first public address found on its homepage or contact page.
Shopify Scraper
Pricing
from $3.00 / 1,000 product results
Shopify products scraper and Shopify store scraper: export any store's products, prices, SKUs, stock and theme. Shopify catalog scraper, Shopify product data scraper, Shopify store catalog, Shopify products JSON. Shopify price monitor, Shopify price tracker, Shopify stock monitor: get only changes.
Theme name
theme_name
Optional
Theme name. Shopify injects Shopify.theme = {...} into every storefront page, so theme_name and theme_id on the store row tell you the theme without any extension or manual source-viewing. Best-effort: if Shopify throttles the storefront page after all IP rotations it comes back empty and the run logs a warning - the /meta.json fields are still present.
Published products count
published_products_count
Optional
The store's TOTAL catalogue size, read from the public /meta.json without scraping it - you learn whether a store has 40 products or 25,000 before paying to scrape the catalogue.
Store currency
store_currency
Optional
The store's base currency from the public /meta.json.
Store country
store_country
Optional
Store country, read from the store's public /meta.json (store row).
Store name
store_name
Optional
Store name, read from the store's public /meta.json (store row).
Record type
record_type
Optional
store on the one extra row per store describing the merchant itself (Include store profile on), read from the store's public /meta.json and storefront; store_lead on every row of a find-stores run (Find stores by niche).
Store
store
Optional
Store base URL - every product/variant row carries it; kith.com, www.kith.com or a full product URL all resolve to the correct store base.
Product
title
Optional
Vendor
vendor
Optional
Straight from the store's feed; empty when the merchant left it blank.
Type
product_type
Optional
Straight from the store's feed; empty when the merchant left it blank.
Min price
price_min
Optional
One row per product (the default): the lowest price among the product's variants, as a number; null when no variant has a parseable price.
Max price
price_max
Optional
One row per product (the default): the highest price among the product's variants, as a number; null when no variant has a parseable price.
In stock
in_stock
Optional
One row per product (the default): true when at least one variant is available, false otherwise. Shopify's public feed carries no stock counts.
Variants count
variants_count
Optional
One row per product (the default): how many variants the product has in the store's feed.
Price
price
Optional
Per-variant price - one row per variant mode only (one row per product summarizes the range as price_min / price_max). Prices are pinned to the chosen market (default US).
Available
available
Optional
Per-variant availability - one row per variant mode. Shopify's public feed carries no stock counts; available / in_stock are true/false only.
URL
url
Optional
Image
image
Optional
First image URL; null for products with no images.
Primary email
primary_email
Optional
Find-stores runs with Include contacts on: the public email to use first - an address on the store's own domain when the store shows one, otherwise the first public address found on its homepage or contact page.
Emails
emails
Optional
Find-stores runs: every public email address found on the store's homepage and /pages/contact (own-domain addresses first, at most 20).
Optional
Instagram handle linked from the storefront (store and store_lead rows); empty when the store links none.
Found by keyword
found_by_keyword
Optional
Find-stores runs: the keyword that found this store - its web address contains the keyword's searched word.
Matched products
matched_products
Optional
Find-stores runs: always empty since 2026-10-27 - the store list the finder searches names no products. Kept so existing exports keep their columns.
CrUX popularity rank
crux_rank
Optional
Find-stores runs: the store's popularity bucket in the Chrome UX Report (CrUX) top-1M list of most-visited sites: 1000 = among the top 1,000, then 5000, 10000, 50000, 100000, 500000 and 1000000. Lower is more popular.
Contact page
contact_page
Optional
Find-stores runs: the store's /pages/contact URL when that page exists.
Myshopify domain
myshopify_domain
Optional
The store's permanent *.myshopify.com domain from its public /meta.json - proof it is a live Shopify store.
Change types
change_types
Optional
onlyChangedProducts runs: why the row was delivered - baseline on a store's first run; later new_product, first_seen (an older product read for the first time), new_variant, price_up, price_down, compare_at_change, back_in_stock or out_of_stock (a product row lists every type of its changed variants).
Changes
changes
Optional
onlyChangedProducts runs, one row per product: the changed variants - variant_id, variant_title, change_types, previous_price, price, previous_available, available.
Previous price
previous_price
Optional
onlyChangedProducts runs, one row per variant: the variant's price on the previous run; null for a new product or variant.
Previous compare-at price
previous_compare_at_price
Optional
onlyChangedProducts runs, one row per variant: the compare-at price on the previous run; null for a new product or variant or when none was set.
Previous available
previous_available
Optional
onlyChangedProducts runs, one row per variant: availability on the previous run; null for a new product or variant.