DEV Community

Cover image for SKU Tracking with Google Shopping: Bulk Price Monitoring at $1.50 per 1,000 Products
Truffle Pig Data
Truffle Pig Data

Posted on

SKU Tracking with Google Shopping: Bulk Price Monitoring at $1.50 per 1,000 Products

Price monitoring is a volume game. Watching one product is trivial; watching five hundred SKUs across every retailer Google Shopping indexes, daily, is where tooling either gets expensive or gets built. I built the Google Shopping Lite API for exactly that middle path: send a batch of search terms, get one flat JSON row per product with price, retailer, rating, delivery, and link, at $1.50 per 1,000 products.

Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.

Is there a Google Shopping API?

Not for reading the marketplace. Google's official shopping APIs exist to manage your own merchant listings, which is the opposite direction: you push your products in, you don't query what everyone else charges. There's no public endpoint for "show me every retailer selling this SKU and their prices." That query is exactly what competitive pricing work needs, so the practical answer is a scraper consumed as an API: search terms in, product rows out.

What the Google Shopping Lite API returns

The Google Shopping Lite API returns one structured row per product: title, price, retailer, rating, delivery info, and the product link.

Field Example Notes
Title Sony WH-1000XM5 Wireless Headphones Product name as listed
Price $328.00 Localized to the country you target
Retailer Best Buy Who's selling at that price
Rating 4.7 Star rating when shown
Delivery Free delivery Shipping line as displayed
Link https://... Route to the offer

Each search term returns roughly 40 to 60 products per page, and maxResultsPerSearch caps how deep each term goes. The "Lite" in the name is the point: no nested page structures, just rows you can load straight into a dataframe or a spreadsheet.

Who this is for

E-commerce operators doing SKU tracking against competitors. Dropshipping researchers scanning what a niche actually sells for before committing inventory. Analysts building price indexes across retailers. And anyone wiring price checks into AI agent workflows, where an agent needs current numbers instead of its training data's memory of them.

The manual way, and where it breaks

Google Shopping in a browser is pleasant; Google Shopping in a script is hostile. Results render through JavaScript, layouts rotate between grid variants, prices arrive in localized formats you have to normalize, and sustained automated traffic gets you a captcha. The real killer for bulk work is multiplication: 500 search terms times retries times proxy rotation is an infrastructure bill and an on-call rotation. For a one-off market check, fine, suffer through it. For monitoring, you want the parser to be someone else's standing problem. Mine, as it happens.

The faster way: run the Google Shopping Lite API

Apify Console

  1. Open the Google Shopping Lite API and click Try for free.
  2. Add your searchTerms list and pick a country.
  3. Run it and export rows as JSON or CSV.

REST

curl -X POST "https://api.apify.com/v2/acts/johnvc~google-shopping-lite-api/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "searchTerms": ["wireless headphones", "noise cancelling earbuds"], "country": "us", "maxResultsPerSearch": 50 }'
Enter fullscreen mode Exit fullscreen mode

Full endpoint reference in the Apify API docs.

Bulk price pulls in Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("johnvc/google-shopping-lite-api").call(
    run_input={
        "searchTerms": ["lego technic 42143", "lego icons 10311"],
        "country": "us",
        "maxResultsPerSearch": 40,
    }
)

for product in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(product.get("price"), product.get("retailer"), product.get("title"))
Enter fullscreen mode Exit fullscreen mode

Search by SKU-specific terms like model numbers and the rows map cleanly onto your catalog.

Monitor competitor prices

The task Monitor competitor prices on Google Shopping is the core commercial setup: your product terms, on repeat, diffed between runs.

Compare prices across retailers

Compare product prices on Google Shopping answers the single-product question, who sells it and for how much, in one run.

Export a whole category

Bulk export Google Shopping prices shows the many-terms pattern that ends in one CSV, useful for market sizing and assortment research.

Track a niche over time

Two hobbyist-flavored examples double as templates for any niche: track game console prices and track LEGO set prices in bulk. Swap the terms and the same tasks track GPUs or sneakers.

For cross-border sellers

Two Chinese-language tasks serve cross-border e-commerce teams: Google Shopping price comparison for product selection and bulk competitor price monitoring, both using the country and language inputs to read a target market from outside it.

Price checks inside AI agent workflows

Over the Model Context Protocol, the Actor becomes a tool for Claude, Claude Code, and Cursor, so "what's the cheapest current price for this model and who sells it" gets answered with live rows mid-conversation. The task Compare product prices in Claude via a shopping MCP has the configuration, and you can read more about Claude at claude.ai.

FAQ about Google Shopping scraping

What does the shopping scraper cost at scale?

$1.50 per 1,000 products, billed per product returned, plus a negligible start fee. A 500-term sweep at 40 products each is 20,000 rows, about $30. maxResultsPerSearch is your budget dial, and free Apify credit covers first experiments.

How is this Lite scraper different from the full Google Shopping API Actor?

Lite trades depth for speed and unit cost: one flat row per product, minimal fields, priced for bulk. The full Google Shopping API covers products, prices, and deals in richer structures when you need more than the price row.

Can Claude call this scraper in an agent workflow?

Yes. Registered through Apify's MCP server it's a callable tool in Claude, Claude Code, and Cursor, which is the cleanest way to give an agent live price data.

How do I schedule the scraper for daily SKU tracking?

Save your term list as a task, attach an Apify schedule, and each run appends dated rows so price history accumulates automatically. Start from the Google Shopping Lite API.

What won't a search-results scraper capture?

Anything deeper than the results page: full spec sheets, seller stock levels, or historical prices Google doesn't display. Matching returned rows to your exact SKUs is also on you, which is why model-number search terms beat generic ones.

More from Truffle Pig Data

Neighboring Actors for commerce data: the full Google Shopping API for deal-level detail, the Google Immersive Product API for Google's immersive product panels, and the Google Local API when the competition is local stores rather than online carts.

Wrapping up

SKU tracking shouldn't cost more than the margin it protects. At $1.50 per 1,000 products, the Google Shopping Lite API makes daily price visibility a rounding error; start with your ten most contested SKUs.

Top comments (0)