Shopify Store Product & Price Extractor
Pricing
from $0.50 / 1,000 product rows
Shopify Store Product & Price Extractor
Extract every product, variant, SKU and price from any public Shopify store. One row per variant, CSV or JSON.
Pricing
from $0.50 / 1,000 product rows
Rating
0.0
(0)
Developer
Nicolas
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Pull the entire public catalogue of any Shopify store — every product, every variant, every SKU, every price — into a spreadsheet you can open in Excel or push into your own database.
Give it a store address. Get back one row per variant.
What people use it for
Watch a competitor's prices. Run it on a schedule and you have a price history: what they
charge, what they discount, what they mark as sold out, and when any of that changes. The
compare_at_price column tells you the sticker price they are discounting from, so you can
see the real depth of a promotion instead of guessing.
Check your own catalogue. Missing SKUs, products with no image, variants that quietly went out of stock, price typos with a stray zero. Easier to spot in a spreadsheet of 4,000 rows than in the Shopify admin.
Size up a market before entering it. Run it across 30 stores in a niche and you have a picture of the price bands, the product types, and how deep each brand's range goes.
Build a supplier or dropshipping catalogue. Product titles, handles, images, weights and prices in one file, ready to map into your own store.
Feed a comparison site or a deal alert. Fresh prices every morning, no manual copying.
What you get back
One row per variant by default. Here are five rows from a real run, trimmed to fit:
| store_domain | product_title | variant_title | sku | price | compare_at_price | available |
|---|---|---|---|---|---|---|
| trailhead.com | Merino Runner | US 9 / Grey | TR-MR-9-GY | 128.00 | 148.00 | true |
| trailhead.com | Merino Runner | US 10 / Grey | TR-MR-10-GY | 128.00 | false | |
| trailhead.com | Merino Runner | US 11 / Black | TR-MR-11-BK | 128.00 | 148.00 | true |
| trailhead.com | Trail Cap | Default Title | TR-CAP | 32.00 | true | |
| trailhead.com | Alpine Shell | S / Storm | TR-AS-S-ST | 245.00 | 245.00 | true |
Full field list:
| Field | What it is |
|---|---|
store_domain | The store the row came from. Lets you run many stores into one file. |
product_id, product_title, handle | Shopify's own product identifiers and name. |
product_url | Direct link to the product page. |
vendor, product_type, tags | How the store itself classifies the product. |
variant_id, variant_title, sku | The specific size / colour / option and its stock code. |
price | Current selling price. |
compare_at_price | The "was" price. Empty when the item is not on sale. |
available | true / false — whether that exact variant is in stock right now. |
grams | Shipping weight, when the store publishes it. |
image_url | First product image. |
product_published_at, variant_updated_at | When it went live and when it last changed. |
source_url, collected_at, collection_method, record_hash | Where each row came from, when, and a stable fingerprint so you can dedupe against your own data. |
Download as CSV, JSON, Excel or XML, or pull it straight from the Apify API.
A note on currency: Shopify's public catalogue does not publish a currency code, so prices come back as plain numbers in the store's own currency. If you are comparing across countries, set the currency per store on your side.
Settings
| Setting | Default | What it does |
|---|---|---|
| Shopify store URLs | — | One or more store addresses. Paste the homepage, custom domains included. |
| One row per variant | On | Off gives you one row per product instead, using the first variant's price. |
| Only items in stock | Off | On drops sold-out variants. |
| Max products per store | 1000 | 0 means the whole catalogue. This is your cost dial. |
| Requests per second | 1 | Polite by default and works everywhere. There is rarely a reason to raise it. |
What it costs
Pay per event — you pay for what a run actually produces, not for time:
| Event | Price |
|---|---|
| Run started | $0.01 |
| Store processed | $0.02 |
| Row returned | $0.0005 |
A 2,000-row catalogue from one store costs about $1.03. Ten stores at 500 rows each is about $2.71. A run that finds nothing costs a cent.
Good to know
- This reads public data only. It uses the same public product endpoint your browser hits when it loads a store's collection page. Nothing behind a login, no customer data, no orders.
- It respects
robots.txt. If a store asks crawlers to stay out, this actor stays out and tells you which store it skipped, rather than pretending the store has no products. - Sites that are not on Shopify are reported, not hidden. Add a URL you are unsure about;
it comes back in the run's
SKIPPEDrecord with the reason. - Rate limited on purpose. One request per second per store by default.
- It is cheap to run because it is simple. No headless browser, so no browser-sized bill.
Questions or a broken run?
Open an issue on the actor and I answer within 12 hours. If you need this shaped differently — a specific set of stores on a weekly schedule, delivered as a file to your inbox or a Google Sheet — that is what I do: rowcrate.com.