E-Commerce Price Tracker: Prices, Discounts & Stock
Pricing
from $1.50 / 1,000 product extracteds
E-Commerce Price Tracker: Prices, Discounts & Stock
Scrape product prices, original price, discount %, brand, SKU and in-stock status from Shopify, WooCommerce and schema.org product pages. Pay per product.
Pricing
from $1.50 / 1,000 product extracteds
Rating
0.0
(0)
Developer
Neon Innovation Lab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Scrape product prices, discounts and stock status from online stores into a clean spreadsheet or API feed. Point it at a Shopify, WooCommerce or any storefront that publishes schema.org Product data, and get one row per product: current price, original price, discount percentage, brand, SKU and whether it is in stock.
Use it to watch competitor pricing, build a price-history database, or feed a repricing or alerting workflow (schedule it in Apify and compare runs).
What you get
| Field | Description |
|---|---|
title, url | Product name and page URL |
price, currency | Current price and the currency the store publishes (not converted) |
originalPrice, discountPercentage | Compare-at price and the markdown % when the store shows one |
inStock | true/false from the store's availability data |
brand, sku | When published by the store |
extractedAt | ISO timestamp |
{"title": "Example Product","url": "https://store.example.com/products/example-product","price": 79.99,"currency": "USD","originalPrice": 99.99,"discountPercentage": 20,"inStock": true,"brand": "Example","sku": "EX-001","extractedAt": "2026-10-14T12:00:00.000Z"}
(Illustrative values.)
How it works
- Shopify stores: reads the store's public product feed (
/products.jsonfor a store URL, or/collections/<name>/products.jsonfor a collection URL). If a collection's feed is empty, it falls back to the page crawl below. This is the most reliable path and includes brand, SKU, compare-at price and stock. The feed has no currency, so rows use yourcurrencysetting. - Other stores: reads the
application/ld+jsonproduct data on each page (common on WooCommerce and Magento), with a fallback to common product-card selectors; fallback rows have no original price, brand or SKU. - Follows "next page" links until
maxItemsis reached.
Input
| Field | Default | Notes |
|---|---|---|
startUrls | required | Store, collection or product URLs |
maxItems | 100 | Maximum products to collect and bill |
currency | USD | Used for Shopify feeds and for pages that publish no currency. Prices are not converted |
{ "startUrls": [{ "url": "https://www.allbirds.com" }], "maxItems": 50 }
Pricing (pay per event)
You pay a small fee per Actor start plus a fee per product extracted, shown on the Actor's pricing tab. Set a maximum cost per run in the Apify console; the crawl stops when the cap is reached.
Limits
- Works best on stores with schema.org markup. Sites that render prices only with JavaScript, or that block scrapers, may return few or no rows.
- No currency conversion, discount-code collection or built-in alerts. Schedule runs and compare datasets (or use Apify webhooks) to detect price drops.
- Respect each store's terms of service and applicable law when scraping.
FAQ
How do I track prices over time? Schedule the Actor (daily or hourly) and compare each run's dataset by url or sku.
Why are some fields null? Stores that publish no brand, SKU or compare-at price return null for them.
Something broke? Open an issue from the Issues tab on this Actor's page with the run URL and the store URL.
More from Neon Innovation Lab
- AI Web Search & RAG Scraper: live web search results as clean Markdown for LLM prompts.
- Firecrawl Alternative Web Scraper: pages to clean Markdown for AI agents, over MCP.
- Amazon Reviews Scraper: customer reviews, ratings and sentiment for any Amazon product.
- Google Maps Leads Scraper: businesses from Google Maps with phones, websites and emails found on their sites.