Google Shopping Price Tracker & Seller Monitor
Pricing
from $9.00 / 1,000 product query checkeds
Google Shopping Price Tracker & Seller Monitor
Track Google Shopping prices and sellers automatically. Schedule product queries and receive verified new-offer and price-change events—no API key required.
Pricing
from $9.00 / 1,000 product query checkeds
Rating
0.0
(0)
Developer
Monkey D. Scraping
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Stop checking Google Shopping prices manually. Add the products you want to monitor, choose a country and language, and schedule automatic checks. The Actor keeps a private baseline and returns clean events only when it verifies a new seller offer or a comparable price change.
No Google account, cookies, seller login, or external API key is required. The Actor observes public Google Shopping results and produces structured data for alerts, spreadsheets, dashboards, and price-intelligence workflows.
What does this Google Shopping price tracker do?
- Monitors one or more exact product or product-family queries.
- Tracks public prices and displayed seller names by country and language preference.
- Establishes a private baseline for each Saved Task.
- Emits
new_offerwhen a previously unknown seller offer is observed. - Emits
price_changedonly when the same canonical offer has two comparable prices. - Suppresses duplicate events caused by normal ranking churn or an unchanged offer reappearing.
- Preserves the last healthy baseline when source quality drops instead of replacing it with incomplete data.
- Supports seller allowlists and blocklists.
- Reports per-query health, coverage, billing, and reconciliation metrics in
SUMMARY.
Why use it?
- Change-focused output — later runs stay empty when nothing verifiable changed.
- Reliable comparisons — product model filtering helps prevent a result for one model from changing the price of another.
- Seller visibility — identify newly observed public resellers without treating every ranking movement as a new seller.
- Monitoring-ready state — Saved Tasks retain known offers between scheduled runs.
- Predictable pricing — pay per successfully checked product query, not per offer or change event.
- Automation-friendly data — connect the dataset and run status to webhooks, Make, n8n, Zapier, Google Sheets, or your own API client.
Quick start
1. Create a Saved Task
Open the Actor's Input tab, add the products you want to monitor, choose market preferences, and save the configuration as a Saved Task. A Saved Task is required for comparisons across runs because it gives the monitor a persistent private baseline.
2. Run the first check
Choose one of these first-run behaviours:
- Return current offers now (
emitCurrent) — returns the offers observed now and establishes the baseline. Recommended for the first test. - Create a quiet baseline (
baseline) — establishes the baseline without writing current offers to the dataset.
3. Verify the result before scheduling
Open SUMMARY in the run’s key-value store and confirm query health and observed offers. An empty dataset can be correct for a quiet baseline or unchanged offers; failed or degraded checks need attention. A healthy check is billed even when it produces no events.
Run the same Saved Task again to check the comparison workflow. An unchanged result should not produce duplicate offers. Changing initialRun does not reset an existing baseline; use resetState only to deliberately start a new history.
4. Schedule the Saved Task
Attach an hourly, daily, or weekly Apify Schedule to the Saved Task. Later healthy runs emit only verified new_offer and price_changed events.
For most catalogues, start with a daily schedule. Increase frequency only when faster detection justifies the additional query checks.
Example input
{"queries": ["Sony WH-1000XM5"],"countryCode": "us","languageCode": "en","initialRun": "emitCurrent"}
What data does it return?
| Field | Description |
|---|---|
eventType | current_offer, new_offer, or price_changed. |
query | Product query that produced the observed offer. |
countryCode / languageCode | Market preferences used for the public Shopping check. |
productTitle | Public product title displayed in the result. |
sellerName | Public seller name displayed in the result. |
priceText | Current price exactly as observed. |
priceAmount / currency | Parsed comparable price and currency when reliably available. |
previousPriceText | Prior observed price for a verified price_changed event. |
previousPriceAmount / previousCurrency | Prior comparable numeric price and currency. |
productUrl | Public offer or comparison URL when exposed; otherwise null. |
observedAt | ISO timestamp of the current observation. |
Illustrative price-change event
The following synthetic example explains the change-event shape; it is not a measured seller price.
{"eventType": "price_changed","query": "Sony WH-1000XM5","countryCode": "IT","languageCode": "it","productTitle": "Sony WH-1000XM5 Cuffie Wireless","sellerName": "Example Shop","productUrl": null,"priceText": "299,00 €","priceAmount": 299,"currency": "€","previousPriceText": "329,00 €","previousPriceAmount": 329,"previousCurrency": "€","previousObservedAt": "2026-08-02T07:30:00.000Z","observedAt": "2026-08-03T07:30:00.000Z"}
Real current-offer excerpt
Reduced record observed in an owner verification run on 16 October 2026 with US/en preferences. Values are retained from that observation; this is not a current price or an endorsement of the offer. The internal comparison key is omitted for readability.
{"eventType": "current_offer","query": "Sony WH-1000XM5","countryCode": "US","languageCode": "en","productTitle": "Sony WH-1000XM5 Noise Canceling Wireless Headphones. 42% OFF. Nearby, 10 mi","sellerName": "Best Buy","productUrl": null,"priceText": "$228.00","priceAmount": 228,"currency": "$","previousPriceText": null,"previousPriceAmount": null,"previousCurrency": null,"previousObservedAt": null,"observedAt": "2026-10-16T15:21:31.404Z"}
current_offer is an initial snapshot, not a detected price change, so the previous-price fields are null. currency preserves the observed symbol; it is not an ISO currency code. A null productUrl means no reliable offer URL was extracted. Product titles are source text and can include promotions or location fragments; inspect the source and SUMMARY before comparing apparently similar offers. The charge is per successfully checked query, not per offer row.
How monitoring state works
| Run | Expected dataset | Reason |
|---|---|---|
First Saved Task run with emitCurrent | Current public offers | Returns a starting snapshot and establishes state. |
First Saved Task run with baseline | Empty | Quietly establishes state. |
| Later run with no verified difference | Empty | No duplicate or speculative event is created. |
| Comparable price differs | price_changed | Includes the previous and current price. |
| Previously unknown seller offer appears | new_offer | Captures the newly observed public offer. |
| Known offer reappears unchanged | Empty | Ranking churn is suppressed. |
| Source quality drops severely | Run is degraded or fails | The last healthy checkpoint is preserved. |
An empty dataset can therefore be a correct, successful outcome. A healthy query check is still billed when it establishes a quiet baseline or finds no changes. The billable unit is a checked query, not a notification. Open the SUMMARY record in the run's key-value store to inspect health status, observed counts, price and seller coverage, baseline status, and billing reconciliation.
Pricing
This Actor uses transparent pay-per-event pricing:
- $0.009 per successfully checked product query (
product-query-checked). - $0.00005 Actor start fee per run at up to 1 GB (one start event per GB, minimum one).
- Platform usage during the run is included. Operations on stored data after the run can have separate platform costs.
- Failed or degraded queries are not charged.
- Offers, new-seller events, and detected price changes have no additional charge.
- A query that successfully retrieves and evaluates Shopping results is charged even when optional seller filters leave no accepted offers.
Examples at the configured tariff, assuming 30 days, one run per scheduled check, all product queries checked successfully in that run, and memory at up to 1 GB. Totals include the Actor start event:
| Monitoring frequency | Runs | Query checks | Total event charges |
|---|---|---|---|
| 1 product checked daily | 30 | 30 | $0.2715 |
| 10 products checked daily | 30 | 300 | $2.7015 |
| 100 products checked daily | 30 | 3,000 | $27.0015 |
| 10 products checked hourly | 720 | 7,200 | $64.8360 |
For a first check of one query, the configured total is $0.00905, whether the healthy check emits offers, creates a quiet baseline or finds no later changes. These are tariff calculations, not guaranteed monthly bills: retries as new runs, extra manual runs, changed inputs and post-run storage operations can change the total. Check the active Pricing tab and set a run spending limit before scheduling.
Customers can set a maximum total charge for every run. Before starting another paid query, the Actor checks the remaining run budget and stops cleanly when the next query cannot be covered. The SUMMARY record exposes billableQueries, chargedQueries, unbilledQueries, queriesSkippedForBudget, and budgetLimitReached for direct reconciliation.
Automate alerts and downstream workflows
- Apify Schedules — run the same Saved Task hourly, daily, or weekly.
- Webhooks — react when a run succeeds or fails and fetch only its change events.
- Make, n8n, and Zapier — route changes to email, Slack, Google Sheets, Airtable, or a database.
- Apify API — start runs and retrieve datasets from any application.
- MCP and AI agents — expose the Actor as a structured monitoring tool through the Apify MCP server.
For change-only notifications, trigger downstream processing on successful runs and continue only when the default dataset contains at least one item.
Use cases
- Competitor and reseller price monitoring.
- Marketplace seller discovery.
- MAP and channel review queues based on publicly observed prices.
- E-commerce catalogue monitoring across countries and languages.
- Price-change alerts for commercial teams.
- Compact change streams for BI tools, spreadsheets, and data warehouses.
Data quality and responsible use
Google Shopping result composition can change because of ranking, localization, availability, consent, rate limits, or source-layout changes. Country and language are result preferences, not guarantees of seller location, shipping coverage, or listing language.
The Actor reports only fields it can observe and verify. Missing values remain null. It does not infer stock, seller removal, delivery promises, product identity, or price changes from incomplete data. A result that stops appearing is not reported as removed because public rankings can change independently of seller availability.
The Actor accesses public results only. It does not use private Google accounts, checkout flows, merchant back offices, or user data. You remain responsible for complying with applicable law and platform terms and for independently validating commercial decisions.
FAQ
Why is a successful run's dataset empty?
After the baseline, an empty dataset normally means no verified new offer or comparable price change was observed. Check SUMMARY to confirm that the queries were healthy.
Do I need a Saved Task?
Yes for monitoring across runs. One-off Actor runs are useful for current snapshots, but Saved Tasks provide the persistent identity used to retain and compare the private baseline.
Are failed searches charged?
The query event is not charged for queries classified as failed or degraded. The Actor start fee still applies to the run. Healthy query checks are charged even when seller filters remove all offers, a quiet baseline is created, or no changes are detected.
Does it report that a seller removed an offer?
No. Absence from a later public result set is not reliable evidence of removal. This avoids false alerts caused by ranking changes.
Does it always return a direct merchant URL?
No. productUrl is returned only when a public result exposes a usable URL. Otherwise it is null; the Actor never invents a destination.
Can I monitor several countries in one Saved Task?
Each task has one country and language configuration. Create separate Saved Tasks for separate markets so baselines and schedules remain clear.
Do I need a Google account or API key?
No. Proxy access and public Shopping retrieval are handled inside the Apify run.
Support
If a query starts returning degraded runs, attach the shared run URL to a new item in the Actor's Issues tab. Include the query, country, language, and expected product family, but do not post credentials or private data.
Feature requests for additional countries, seller matching, notification workflows, and richer public destination links are welcome. If the Actor saves you time, a review helps guide future improvements.