Shopify Store Scraper avatar

Shopify Store Scraper

Under maintenance

Pricing

from $0.80 / 1,000 product scrapeds

Go to Apify Store
Shopify Store Scraper

Shopify Store Scraper

Under maintenance

Scrape 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

GhostGrid

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

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

FieldTypeRequiredDefaultDescription
storeUrlstringyes-Base URL of the Shopify store
maxItemsintegerno100Max products to return
collectionstringno-Collection handle to scrape (e.g. all, frontpage)
track_changesbooleannofalseEnable price/stock change tracking via KV store baseline
baseline_keystringnoproduct-baselineKV store key for storing the product baseline

Output

Each product item contains:

  • title - Product name
  • url - Product page URL
  • price - Price from first variant
  • compare_at_price - Original price if on sale
  • vendor - Brand/vendor name
  • product_type - Product category
  • tags - List of tags
  • images - List of image URLs
  • variants - 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

  1. Tries GET /products.json (paginated, 250 per page)
  2. If that fails, crawls HTML collection and product pages with BeautifulSoup
  3. Pushes each product to the Apify dataset
  4. If track_changes is 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.txt
APIFY_TOKEN=your_token python -m shopify_scraper