Shopify Products Scraper
parseforge/shopify-stores-scraper
E-commerceAutomationDeveloper tools
Scrapes product data from any public Shopify storefront. Feed it store, collection, or product URLs and get back a flat row per product with all variants, pricing, images, and stock status.
- Total users
- 11
- Monthly active
- 2
- Total runs
- 744
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
Shopify Products Scraper
Scrape product catalogs from any Shopify store, collection, or product URL, up to a million items per run. Each product row includes its title, price, variants, images, and stock status. No API key or store admin access needed. Export to CSV, JSON, Excel, or XML.
Shopify's storefront API is rate-limited and often requires store owner approval. This actor reads the public product feeds directly from any Shopify-powered store, collection page, or individual product URL. You get a complete, structured catalog in one fixed schema, ready for analysis.
| Who uses it | What they scrape Shopify for |
|---|---|
| E-commerce analysts | Benchmark a competitor's full product catalog and pricing strategy. |
| Dropshippers | Find trending products and monitor supplier stock levels across multiple stores. |
| Brand managers | Monitor how your products are listed and priced by authorized retailers. |
| Market researchers | Track product assortment changes and new arrivals in a specific niche. |
What it does
This Actor collects product data from Shopify storefronts by homepage, collection, or product URL and returns each product as a flat row with its variants, pricing, and images.
- ๐ Keyword search: Filter products by a keyword within a store's catalog to target specific items.
- ๐ฆ Stock filtering: Exclude out-of-stock items to see only products with at least one available variant.
- ๐ Flexible start URLs: Feed it store homepages, collection pages, or individual product URLs, alone or mixed together.
- ๐ Product recommendations: Optionally fetch up to 10 recommended products for each scraped item.
- ๐ Sorted output: Order results by price, title, or recency before they hit your dataset.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Shopify data
๐ Monitor competitor pricing.
An e-commerce analyst scrapes a competitor's entire catalog weekly, sorts by price descending, and flags products where the competitor undercuts their own pricing.
๐๏ธ Build a dropshipping product feed.
A dropshipper scrapes multiple niche Shopify stores, filters out out-of-stock items, and exports the results to CSV for import into their own store backend.
๐ Audit retail partner listings.
A brand manager scrapes authorized dealer storefronts to verify that product titles, images, and MSRPs match the brand's guidelines.
๐ Track product assortment trends.
A market researcher scrapes a set of fashion stores monthly, sorting by newest first, to identify which styles and categories are being added for the upcoming season.
Why choose this scraper
| What you get | |
|---|---|
| No API keys | Scrape any public Shopify store without registration, tokens, or store admin approval. |
| Complete product data | Get title, description, price, compare-at price, variants, images, SKU, vendor, and stock status. |
| Handles large catalogs | Collect up to a million products per run, respecting the store's own pagination limits. |
How it compares
No other Store actor targets Shopify the same way, so the honest comparison is with the alternatives teams actually weigh.
| Shopify Products Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Shopify changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor from store homepages, collection pages, and product URLs, alone or together, and filters run as each product is read so only matches reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{
"startUrls": [
{
"url": "https://allbirds.com"
}
],
"maxItems": 10
}
A larger pull:
{
"startUrls": [
{
"url": "https://allbirds.com"
}
],
"maxItems": 200
}
Pricing
Pay-per-result: $0.01599 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $1.60 |
| 1,000 results | $15.99 |
| 10,000 results | $159.90 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Shopify Products Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Shopify through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/shopify-stores-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the store URL is correct and the store is publicly accessible. If you are using a keyword search, try a broader term or leave it empty to see all products. Also verify that 'Include Out of Stock' is checked if the store has no available inventory.
The actor is only returning a few products from a large store.
Some Shopify stores limit the number of products shown on their public pages. Try using collection page URLs instead of the homepage to access deeper parts of the catalog. The actor respects the store's own pagination limits.
Why are product images missing?
The actor captures the image URLs as provided by the store's theme. If images are lazy-loaded or hosted on a CDN that blocks automated requests, they may not be captured. The main image and all image URLs are included when available.
The keyword search is not finding products I know exist.
The keyword search uses the store's own search endpoint. Try variations of the keyword, check for spelling, and ensure the store's search function works in a regular browser. The search only applies to store homepages, not collection or product URLs.
I am getting a timeout or the run is very slow.
Large catalogs take time. Increase the run's timeout in the actor settings. If scraping many stores, reduce the 'Maximum stores' count or split the URLs across multiple runs.
FAQ
| Question | Answer |
|---|---|
| Can I scrape any Shopify store? | Yes, any store hosted on Shopify with a public storefront can be scraped. You do not need the store owner's permission or an API key. |
| What data do I get for each product? | Each row includes the product title, description, vendor, product type, tags, all variant details (SKU, price, compare-at price, stock status, option values), the main image URL, and all other image URLs. |
| How do I scrape only products that are in stock? | Uncheck the 'Include Out of Stock' option in the input. The actor will then return only products that have at least one variant with available inventory. |
| Can I search for a specific product across a store? | Yes, use the 'Store or product keyword' field. This searches the store's product listings and returns only matching items. It works on store homepages, not on collection or product URLs. |
| How do I scrape multiple stores at once? | Add multiple store URLs to the 'Shopify store URLs' input field. The actor will process them sequentially up to the 'Maximum stores' limit you set. |
| What is the maximum number of products I can scrape? | You can set the 'Maximum stores' input up to 1,000,000. The actual number of products depends on the store's catalog size and its pagination limits. |
| Can I get product recommendations? | Yes, set the 'Recommendations Per Product' field to a number between 1 and 10. The actor will fetch the store's own recommended products for each scraped item. |
| How do I sort the results? | Use the 'Sort By' dropdown to order the output by price, title, or date added before the data is saved to your dataset. |
| Does this work with Shopify Plus stores? | Yes, Shopify Plus stores use the same public storefront structure. The actor scrapes them the same way as any other Shopify store. |
| What format is the export? | You can export your results in CSV, JSON, Excel, or XML formats from the dataset tab after the run completes. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Shopify Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| startUrls required | array | Shopify store, collection, or product URLs. Supports store homepages (all products), collection pages, and individual product pages. | [{"url":"https://allbirds.com"}] |
| maxItems | integer | Maximum number of stores to collect per run. | 10 |
| query | string | Search products by keyword within store URLs. Only applies to store homepages, not collection or product URLs. Leave empty to get all products. | not set |
| includeOutOfStock | boolean | If unchecked, only products with at least one available variant are returned. | true |
| sortBy | string (7 options) | Sort the output results. Default order is as returned by the store. | not set |
| maxRecommendationsPerProduct | integer | Fetch recommended products for each scraped product. Set to 0 to disable. | 0 |
Pricing
from $11.99 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| Actor Start | Charged once when the run starts. | $0.005 |
| Result Item | Charged once per result collected. | $0.01199 to $0.01599 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~shopify-stores-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
