E-Commerce Price Tracker: Prices, Discounts & Stock avatar

E-Commerce Price Tracker: Prices, Discounts & Stock

Pricing

from $1.50 / 1,000 product extracteds

Go to Apify Store
E-Commerce Price Tracker: Prices, Discounts & Stock

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

Neon Innovation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

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

FieldDescription
title, urlProduct name and page URL
price, currencyCurrent price and the currency the store publishes (not converted)
originalPrice, discountPercentageCompare-at price and the markdown % when the store shows one
inStocktrue/false from the store's availability data
brand, skuWhen published by the store
extractedAtISO 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

  1. Shopify stores: reads the store's public product feed (/products.json for a store URL, or /collections/<name>/products.json for 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 your currency setting.
  2. Other stores: reads the application/ld+json product 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.
  3. Follows "next page" links until maxItems is reached.

Input

FieldDefaultNotes
startUrlsrequiredStore, collection or product URLs
maxItems100Maximum products to collect and bill
currencyUSDUsed 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