Shopify Store Scraper - Products, Prices, Apps & Store Leads
Pricing
from $10.00 / 1,000 store analyzeds
Shopify Store Scraper - Products, Prices, Apps & Store Leads
Scrape any Shopify store: full catalog with variants, SKUs and prices, collections, theme, installed apps, plus emails and socials for lead gen. Tracks price drops.
Pricing
from $10.00 / 1,000 store analyzeds
Rating
0.0
(0)
Developer
Boztek LTD
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Shopify Store Scraper — Products, Prices, Apps & Store Leads
Profile any Shopify store from its public endpoints. One run gives you the store's identity, its full catalog with variants and prices, its collections, the theme it runs, the apps it has installed, and the emails and social profiles it publishes.
Point it at a domain. If the site is Shopify, you get everything below. If it is not, it is reported and skipped — and never charged.
What you get
Per store
| Identity | Store name, .myshopify.com domain, shop ID, description |
| Location & money | City, province, country, currency, money format, countries shipped to |
| Catalog size | Products pulled, products published, collection count |
| Pricing | Cheapest, most expensive and average product price; how many are on sale; how many are in stock |
| Merchandising | Top vendors, top product types, newest product date, collection list with product counts |
| Tech | Active theme, recognised Shopify apps (reviews, email, SMS, subscriptions, page builders, pixels, BNPL) |
| Contact | Emails, phone numbers, Instagram / Facebook / TikTok / X / YouTube / Pinterest / LinkedIn handles |
| Payments | Accepted card brands, Shop Pay Installments availability |
Per product
Title, handle, vendor, product type, tags, product URL, image, price range across variants, highest compare-at price, derived discount percentage, stock status, option names, publish/update dates, and every variant with its SKU, price, compare-at price, weight and availability.
Track what changes
Turn on trackChanges and each run is compared against the previous one:
- New products — what just launched, with prices
- Removed products — what was pulled or sold out of the catalog
- Price changes — old price, new price and the percentage move
The first run records a baseline; from the second run on, you get a diff. Schedule it daily and you have competitor price monitoring — or a launch feed for a niche you sell into.
What does it cost?
Pay-per-event. Non-Shopify domains cost nothing.
| Event | Price | When |
|---|---|---|
| Store analyzed | $0.01 | Per confirmed Shopify store profiled |
| Product scraped | $0.0002 | Per product row |
| Contacts & tech extracted | $0.005 | Per store, only with enrichment on |
| Change report | $0.02 | Per store, only from the second run on |
| Actor start | $0.00005 | Once per run |
| Scenario | Cost |
|---|---|
100 stores, profiles + contacts, no products (outputMode: stores) | ~$1.50 |
| One store, full 5,000-product catalog | ~$1.02 |
| Daily price watch, 10 stores × 2,000 products | ~$4.30/day |
Set outputMode to stores for lead generation and you never pay the per-product rate.
Output
Everything lands in one dataset, tagged with recordType so you can split it. The Console ships with a Store profiles view and a Products view. The samples below show the field shape; the numbers are illustrative.
{"recordType": "store","domain": "www.allbirds.com","storeName": "Allbirds","myshopifyDomain": "weareallbirds.myshopify.com","city": "Beverly Hills","province": "California","country": "US","currency": "USD","productCount": 291,"collectionCount": 1345,"priceMin": 60,"priceMax": 160,"priceAvg": 112,"onSaleCount": 34,"availableCount": 251,"topVendors": ["Allbirds"],"newestProductAt": "2026-07-08T18:32:23.000Z","themeName": "allbirds-theme","apps": ["Attentive", "Google Tag Manager", "Yotpo"],"emails": ["help@allbirds.com"],"socialProfiles": ["instagram:allbirds", "facebook:weareallbirds", "tiktok:weareallbirds","twitter:allbirds", "pinterest:weareallbirds"],"changes": { "newProducts": 3, "removedProducts": 1, "priceChanges": 12 }}
{"recordType": "product","domain": "www.allbirds.com","title": "Men's Cruiser - Shadow Blue (Natural White Sole)","vendor": "Allbirds","productType": "Shoes","priceMin": 105,"priceMax": 105,"compareAtMax": null,"discountPercent": null,"currency": "USD","available": true,"variantCount": 13,"productUrl": "https://www.allbirds.com/products/mens-cruiser-shadow-blue-natural-white-sole","variants": [{ "variantId": 41, "title": "8", "sku": "A12856M080", "price": 105, "available": true }]}
compareAtMax and discountPercent are filled in only when the store publishes a compare-at price above the selling price — a stale compare-at that equals or undercuts the price is ignored rather than reported as a fake discount.
Input options
| Option | Type | Default | Description |
|---|---|---|---|
storeUrls | array | required | Domains or URLs. .myshopify.com works too |
outputMode | string | both | both / stores (cheapest) / products |
maxProductsPerStore | integer | 0 | Cap the catalog per store (0 = all) |
includeVariants | boolean | true | Include every variant with SKU and price |
includeDescription | boolean | false | Include product descriptions |
descriptionFormat | string | markdown | markdown / text / html |
includeCollections | boolean | true | List collections on the store row |
extractContacts | boolean | true | Emails, phones, socials, theme and apps |
trackChanges | boolean | false | Diff against the previous run |
stateStoreName | string | shopify-store-intelligence-state | Key-value store holding the baseline |
maxConcurrency | integer | 5 | Parallel requests across stores |
proxyConfiguration | object | off | Optional — not needed |
Use cases
- Agency lead generation — feed a list of domains, keep the ones that are Shopify, and get the merchant's email, socials, catalog size and installed apps in one row. Apps tell you what they already pay for.
- Competitor price monitoring — schedule daily with
trackChangesand get every price move with its percentage. - Product research and dropshipping — spot what a niche is launching, at what price, and what is selling out.
- Market sizing — catalog size, price bands and vendor mix across a whole segment.
- App and theme adoption research — see which apps and themes a cohort of stores actually runs.
How stores are detected
The Actor asks each domain for /meta.json — one small request that also returns the store's name, country, currency and catalog counts. Stores that disable it fall back to /products.json, which every Shopify store serves. Both the apex and the www. host are tried, so gymshark.com and www.allbirds.com both resolve.
Limitations
- Contact extraction only sees server-rendered HTML. Stores whose footer is rendered client-side publish no email or social links in the page source, so those fields come back empty. Gymshark is a real example: its home page has no
mailto:or social links and it serves no/pages/contact. Catalog, pricing, theme and app data are unaffected. themeStoreIdis empty for custom themes. Shopify setstheme_store_idtonullfor themes that did not come from the Theme Store, so the field is genuinely absent rather than missed.- App detection is signature-based. It recognises around 50 widely used apps from their scripts. An app that leaves no trace in the page source will not be listed, so treat the list as "at least these", not an exhaustive audit.
products.jsonreturns published products only. Draft, archived and hidden products are not exposed by Shopify, and neither are inventory quantities — only per-variant availability.- Some stores throttle or disable the public feeds. A store that returns nothing is reported in
RUN_SUMMARYrather than silently dropped. - Prices are as the store serves them — in the store's own default currency and market. Geo-specific pricing is not requested.