E-Commerce Price Monitor — Track & Compare Prices Across Stores avatar

E-Commerce Price Monitor — Track & Compare Prices Across Stores

Under maintenance

Pricing

Pay per usage

Go to Apify Store
E-Commerce Price Monitor — Track & Compare Prices Across Stores

E-Commerce Price Monitor — Track & Compare Prices Across Stores

Under maintenance

Monitor product prices across Amazon, eBay, Walmart, Target, Best Buy, and any e-commerce site. Extract current prices, discounts, availability, ratings, and reviews using JSON-LD, Open Graph, and platform-specific selectors. Compare prices across multiple stores and track price history. Perfect for

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 minutes ago

Last modified

Categories

Share

E-Commerce Price Monitor

Monitor and compare product prices across Amazon, eBay, Walmart, Target, Best Buy, and thousands of other e-commerce sites. Track price changes over time, find the best deals, and compare prices across multiple stores automatically.

Features

  • Universal Price Extraction — Works on any e-commerce site using JSON-LD (schema.org/Product), Open Graph meta tags, and common CSS selectors
  • Amazon Deep Parsing — Extracts prices from all Amazon price display variants including deals, coupons, Prime savings, and Best Seller rank
  • eBay Full Support — Handles Buy It Now, auctions (bid count, time left), seller info, item condition, and shipping costs
  • Walmart, Target, Best Buy — Store-specific enhancements for fulfillment options, member pricing, open box deals, and circle offers
  • Shopify / WooCommerce / Magento — Automatic detection and optimized extraction for major e-commerce platforms
  • Cross-Store Price Comparison — Searches Google Shopping to find the same product at competing stores with price ranges and best price identification
  • Price History Tracking — Tracks prices across multiple runs to build a price timeline for trend analysis
  • Pay-Per-Event Pricing — Only pay $0.005 per product price checked

Input

FieldTypeDescriptionDefault
productUrlsarrayList of product page URLs to monitor (required)
includeHistorybooleanTrack price changes across runsfalse
compareAcrossStoresbooleanSearch Google Shopping for competing pricesfalse
maxResultsintegerMaximum products to check (0 = unlimited)100
maxConcurrencyintegerParallel requests (1-10, lower = safer)3
proxyobjectApify proxy configuration

Example Input

{
"productUrls": [
{ "url": "https://www.amazon.com/dp/B0BSHF7WHW" },
{ "url": "https://www.ebay.com/itm/123456789" },
{ "url": "https://www.walmart.com/ip/123456789" },
{ "url": "https://www.target.com/p/product-name/-/A-12345678" },
{ "url": "https://www.bestbuy.com/site/product/1234567.p" }
],
"includeHistory": true,
"compareAcrossStores": true,
"maxResults": 100,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

Each product record includes:

FieldTypeDescription
productNamestringProduct title
currentPricenumberCurrent selling price
currencystringISO currency code (USD, EUR, GBP, etc.)
storestringStore name (Amazon, eBay, Walmart, etc.)
originalPricenumberOriginal/list price before discount
discountnumberDiscount percentage
availabilitystringStock status (In Stock, Out of Stock, Low Stock, etc.)
ratingnumberProduct rating (0-5 scale)
reviewsnumberNumber of customer reviews
urlstringProduct page URL
brandstringProduct brand
skustringStore-specific product identifier (ASIN, item number, etc.)
imagestringProduct image URL
priceHistoryarrayHistorical prices from previous runs (when includeHistory is enabled)
competitorsarrayPrices from other stores (when compareAcrossStores is enabled)
scrapedAtstringISO timestamp of extraction

Store-Specific Fields

Amazon: amazonSpecific.prime, amazonSpecific.savings, amazonSpecific.dealBadge, amazonSpecific.coupon, amazonSpecific.bestSellersRank

eBay: ebaySpecific.condition, ebaySpecific.listingType, ebaySpecific.bids, ebaySpecific.timeLeft, ebaySpecific.seller, ebaySpecific.shipping

Walmart: walmartSpecific.savings, walmartSpecific.fulfillment

Target: targetSpecific.circleOffer

Best Buy: bestBuySpecific.openBoxPrice, bestBuySpecific.memberPrice

Example Output

{
"productName": "Apple AirPods Pro (2nd Generation)",
"currentPrice": 189.99,
"currency": "USD",
"store": "Amazon",
"originalPrice": 249.00,
"discount": 23.7,
"availability": "In Stock",
"rating": 4.7,
"reviews": 85432,
"url": "https://www.amazon.com/dp/B0BDHWDR12",
"brand": "Apple",
"sku": "B0BDHWDR12",
"image": "https://m.media-amazon.com/images/I/...",
"amazonSpecific": {
"prime": true,
"savings": "Save 24%",
"dealBadge": "Limited time deal"
},
"priceHistory": [
{ "date": "2026-02-15T10:00:00Z", "price": 199.99, "currency": "USD" },
{ "date": "2026-02-20T10:00:00Z", "price": 189.99, "currency": "USD" }
],
"competitors": [
{ "store": "Best Buy", "price": 199.99, "currency": "USD", "url": "https://..." },
{ "store": "Walmart", "price": 189.00, "currency": "USD", "url": "https://..." },
{ "store": "Target", "price": 189.99, "currency": "USD", "url": "https://..." }
],
"scrapedAt": "2026-03-01T12:00:00Z"
}

Extraction Strategies

The actor uses 5 extraction strategies, applied in order of reliability:

  1. JSON-LD / schema.org — Structured data embedded in <script type="application/ld+json">. Works on thousands of sites that follow schema.org Product markup. Most reliable method.

  2. Amazon-Specific — Deep parsing of Amazon's complex HTML with 15+ price selector variants, deal badges, Prime detection, coupon extraction, and Best Seller rank.

  3. eBay-Specific — Handles both Buy It Now and auction listings, extracts bid count, time remaining, seller info, item condition, and shipping costs.

  4. Generic CSS Selectors — Falls back to common e-commerce CSS patterns (.product-price, [data-price], .price, etc.) that work on Shopify, WooCommerce, Magento, and most custom stores.

  5. Google Shopping — Searches Google Shopping for the product name to find prices from competing stores. Used when compareAcrossStores is enabled.

Use Cases

  • Deal Hunting — Monitor products across multiple stores to find the lowest price
  • Competitive Intelligence — Track competitor pricing strategies over time
  • Dynamic Pricing Research — Analyze how prices change by day, week, or season
  • Dropshipping — Monitor supplier prices to maintain profit margins
  • Price Alert Systems — Feed data into alerting pipelines to notify on price drops
  • Market Research — Compare pricing across brands, categories, and regions

Proxy Recommendations

  • Amazon: Residential proxies strongly recommended (Amazon aggressively blocks datacenter IPs)
  • eBay: Datacenter proxies usually work, residential recommended for high volume
  • Walmart/Target/Best Buy: Residential proxies recommended
  • Shopify stores: Usually work without proxies for low volume
  • Google Shopping: Residential proxies required

Pricing

This actor uses Pay-Per-Event pricing:

  • $0.005 per product price checked
  • Cross-store comparisons count as 1 additional event per product
  • No charge for failed extractions

Limitations

  • CheerioCrawler (HTML only, no JavaScript rendering) — some SPAs may not return full content
  • Anti-bot protection may block requests without proper proxies
  • Google Shopping comparison requires residential proxies
  • Price history requires multiple runs of the same actor with the same URLs

Support

For issues, feature requests, or questions, please open an issue on GitHub.

Integration — Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("sovereigntaylor/price-monitor").call(run_input={
"searchTerm": "example query",
"maxResults": 50
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item.get('title', item.get('name', 'N/A'))}")

Integration — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sovereigntaylor/price-monitor').call({
searchTerm: 'example query',
maxResults: 50
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.title || item.name || 'N/A'));