Shopify Store Scraper
Under maintenancePricing
from $0.80 / 1,000 product scrapeds
Shopify Store Scraper
Under maintenanceScrape products from Shopify stores via /products.json API with HTML fallback.
Pricing
from $0.80 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
GhostGrid
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Scrapes product data from Shopify stores with optional price and stock change tracking.
Most Shopify stores expose a /products.json endpoint that returns structured JSON. This actor uses that endpoint by default and falls back to HTML scraping when it's not available.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
storeUrl | string | yes | - | Base URL of the Shopify store |
maxItems | integer | no | 100 | Max products to return |
collection | string | no | - | Collection handle to scrape (e.g. all, frontpage) |
track_changes | boolean | no | false | Enable price/stock change tracking via KV store baseline |
baseline_key | string | no | product-baseline | KV store key for storing the product baseline |
Output
Each product item contains:
title- Product nameurl- Product page URLprice- Price from first variantcompare_at_price- Original price if on salevendor- Brand/vendor nameproduct_type- Product categorytags- List of tagsimages- List of image URLsvariants- List of variant objects (id, title, price, sku, availability)description- HTML description
Change Tracking Records
When track_changes is enabled, additional records are pushed to the dataset:
price_change - When a product's price differs from the baseline:
type,product_url,product_title,old_price,new_price,change_amount,change_percent,crawled_at
stock_change - When a product's availability changes:
type,product_url,product_title,old_available,new_available,crawled_at
new_product - When a product appears that was not in the baseline:
type,product_url,product_title,price,crawled_at
removed_product - When a baseline product is no longer found:
type,product_url,product_title,last_price,crawled_at
Usage
Basic scrape:
{"storeUrl": "https://example.myshopify.com","maxItems": 50,"collection": "all"}
With change tracking:
{"storeUrl": "https://example.myshopify.com","maxItems": 50,"track_changes": true}
How it works
- Tries
GET /products.json(paginated, 250 per page) - If that fails, crawls HTML collection and product pages with BeautifulSoup
- Pushes each product to the Apify dataset
- If
track_changesis enabled, loads the previous baseline from the KV store, compares prices and stock, pushes change records, then saves the new baseline
Running locally
pip install -r requirements.txtAPIFY_TOKEN=your_token python -m shopify_scraper