Google Shopping Price Tracker & Seller Monitor
Pricing
from $4.00 / 1,000 google shopping offer delivereds
Google Shopping Price Tracker & Seller Monitor
Track Google Shopping prices, sellers, rankings, MAP violations, and unauthorized merchants across countries. Monitor products on a schedule and detect price, seller, and ranking changes automatically.
Pricing
from $4.00 / 1,000 google shopping offer delivereds
Rating
0.0
(0)
Developer
Furkan Toluç
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Google Shopping Price Monitor & Seller Tracker — MAP Alerts
Turn Google Shopping results into a recurring price and seller monitoring feed—not another generic scraper.
250 products monitored3 new sellers detected2 unauthorized sellers found4 MAP violations17 price changes6 ranking changes
Track exact products by model, SKU, GTIN, or high-specificity keyword across countries. The Actor normalizes merchants, preserves stable offer IDs, compares scheduled runs, and reports meaningful price, seller, MAP, and rank changes in a stable Dataset schema.
What it does
Product/SKU query→ Google Shopping offers→ deterministic product matching→ merchant normalization→ persistent historical comparison→ actionable changes
Every candidate is classified as EXACT, LIKELY, AMBIGUOUS, or REJECTED. High-risk alerts such as MAP violations and unauthorized-seller events require an EXACT match with at least 0.95 confidence.
The monitor detects:
NEW_SELLERandREMOVED_SELLERUNAUTHORIZED_SELLERPRICE_DROPandPRICE_INCREASENEW_LOWEST_PRICEMAP_VIOLATIONandMAP_VIOLATION_RESOLVEDRANK_GAINandRANK_LOSSOFFER_DISAPPEAREDandOFFER_REAPPEARED
This makes the Actor useful as a Google Shopping Price Monitor, Google Shopping Price Tracker, Competitor Price Monitoring feed, MAP Monitoring tool, Unauthorized Seller Detection workflow, Google Shopping Seller Tracker, and Google Shopping Rank Tracker.
Who it is for
- Brands enforcing advertised-price policies
- Ecommerce and marketplace teams tracking competitor prices
- Agencies monitoring seller and ranking changes across client catalogs
- Distributors auditing authorized and unauthorized sellers
- Automation builders using n8n, Make, Zapier, Airtable, Google Sheets, HubSpot, or custom scripts
Quick start
{"products": [{"inputId": "sony-xm5-black","query": "Sony WH-1000XM5 Black","brand": "Sony","model": "WH-1000XM5","gtin": null,"mapPrice": 349.99,"authorizedSellers": ["Amazon", "Best Buy", "Sony"],"condition": "NEW"}],"markets": [{ "country": "us", "language": "en", "currency": "USD" }],"mode": "MONITOR"}
Use exact model numbers and include color or size in the query when variants matter. Keep inputId, market settings, and stateStoreName stable between scheduled runs.
SNAPSHOT and MONITOR
SNAPSHOT collects and normalizes the current Google Shopping observations. It does not read or change monitoring history.
MONITOR loads the prior state from the named Apify key-value store, compares current observations in O(n) maps, emits changes, and saves the new state. The first MONITOR run establishes the baseline. Current high-confidence MAP and authorization conditions are still visible on the baseline; historical deltas begin with the next successful run.
If a request fails or returns an unconfirmed empty parser result, the prior state is preserved. This prevents a temporary block or Google markup change from generating a wave of false seller-disappearance alerts.
Product matching
Matching is deterministic and does not use OpenAI, Claude, Gemini, or another external AI API. Signals include:
- normalized brand and exact model number
- GTIN/EAN when exposed
- color and size tokens inferred from the query
- conflicting model and variant detection
- product condition
- accessory and bundle terms, including common localized terms
- normalized query-token overlap
REJECTED and AMBIGUOUS candidates remain available for audit but are not billed and never generate MAP or unauthorized-seller alerts. LIKELY offers can be delivered as useful observations but do not trigger risky business alerts.
Merchant normalization and authorized sellers
The Actor returns:
merchantmerchantCanonicalmerchantDomainmerchantIdsellerAuthorization:AUTHORIZED,UNAUTHORIZED, orUNKNOWN
An exposed merchant or product domain is the strongest signal. Known aliases such as Amazon/Amazon.com and Best Buy/BestBuy normalize conservatively. Uncertain merchant identities remain UNKNOWN instead of being labeled unauthorized.
MAP monitoring
Set mapPrice in the market's configured currency. For a new, high-confidence exact match:
MAP price: $349.99Observed price: $319.99Violation amount: $30.00Violation percentage: 8.57%
The output includes mapViolation, mapViolationAmount, and mapViolationPercentage. Used/refurbished, ambiguous, likely, and rejected results do not produce MAP alerts.
Dataset output
The default Dataset primarily contains normalized observations. Every row uses schemaVersion: "1.0" and consistently supplies optional fields as null or [].
recordType distinguishes:
OFFER: a currently visible candidateCHANGE: a disappeared/removed offer transitionERROR: a product-market failure that did not stop the rest of the run
Important fields include stable IDs, input/market identity, price/currentPrice, previousPrice, merchant identity, match evidence, authorization, MAP calculations, position/currentPosition, previousPosition, timestamps, and changeTypes. The run summary is also available from the default key-value store record OUTPUT (and alias SUMMARY); structured errors are stored under ERRORS.
Scheduled monitoring
- Run once in
MONITORmode to establish the baseline. - Save the input as an Apify Task.
- Add a daily, twice-daily, or weekly Apify Schedule.
- Trigger a webhook or integration after successful runs.
- Filter Dataset rows where
changeTypesis non-empty,mapViolationistrue, orsellerAuthorizationisUNAUTHORIZED.
Do not change the history store name between scheduled runs. Separate stores can be used to isolate customers, brands, or environments.
API usage
curl -X POST \"https://api.apify.com/v2/acts/herazur~google-shopping-price-seller-monitor/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d @examples/input.json
After the run finishes, read:
- normalized observations from the default Dataset
- summary from key-value store record
OUTPUT - partial-run errors from key-value store record
ERRORS
Make, n8n, Zapier, and Sheets
- Make/Zapier: Run Actor → wait for completion → get Dataset items → filter on
changeTypes. - n8n: Use the Apify node or HTTP Request node, then branch on MAP, price, seller, or rank events.
- Google Sheets/Airtable: Export flat Dataset fields;
inputIdprovides a reliable join key to the source catalog. - HubSpot/custom scripts: Use webhooks and the Dataset API to create tickets, alerts, or account-level monitoring records.
Pricing
Pay per event:
shopping_offer_delivered: $0.004 per successfully delivered usable offer= $4.00 per 1,000 offers
There is no charge for invalid input, request/parser failure, empty output, malformed offers, AMBIGUOUS/REJECTED matches, disappearance/error rows, retries, or duplicate billable observations. Change detection is included in the observation price.
The Actor writes a durable pending billing marker before each PPE delivery. If a run is interrupted during an ambiguous network outcome, it favors under-billing over risking a duplicate charge.
Reliability and performance
- Apify Google SERP Proxy with HTTP extraction; no browser in production
- country-specific proxy sessions plus currency-mismatch rejection for market integrity
- bounded concurrency and exponential retry backoff
- configurable request timeout and offer limit
- one product-market failure does not fail other work
- deterministic request and offer deduplication
- O(n) historical comparison
- named persistent state partitioned by product and market
- graceful SIGTERM/SIGINT handling
- spending-limit detection from Apify PPE charge results
Limitations
- Google Shopping markup and product grouping change without notice. Structured errors and state-preservation guards reduce false alerts, but parser maintenance is an operational requirement.
- Google can aggregate additional sellers behind “& more.” The Actor reports seller offers exposed in the Shopping result markup and does not fabricate hidden sellers.
- Direct merchant/product URLs, GTINs, images, shipping, ratings, and offer IDs are returned only when Google exposes them; otherwise fields are
null. - Google product/session IDs can be volatile. Stable monitoring IDs intentionally rely on input, market, product identity, and normalized merchant identity instead of price or Google session IDs.
- Rankings can legitimately vary by location, time, personalization, inventory, and experiments. The Actor disables personalized search where possible but cannot make Google rankings globally deterministic.
- Title-only matching cannot prove catalog identity in every category. Supply model numbers or GTINs, review
matchReasons, and reserve business enforcement for high-confidence exact results.
Responsible usage
Google's current terms and robots instructions create material platform/compliance risk for automated search access. Apify provides a purpose-built Google SERP Proxy, but that does not eliminate your responsibility to assess Google terms, applicable laws, contract obligations, data rights, MAP-policy enforceability, and acceptable request rates. This Actor is a data-monitoring tool, not legal advice or an automatic enforcement system.
Development
npm installnpm run validate
Local input lives at storage/key_value_stores/default/INPUT.json. Production runs should keep Google SERP Proxy enabled.