Starter
25,000 searches
$18.75
$0.75/1K searches
- A side project or an AI agent
- About 830 searches a day for a month
- Credits never expire
Use case · e-commerce · as of October 2026
Watch what shoppers see when they search for your products: who sells them, at what price, with what delivery. Store a daily snapshot and get an alert when a competitor moves.
Quick answer
How can I monitor competitor prices on Google Shopping with an API?
Run one Google Shopping search per product and country each day, store the offers, and compare them with yesterday's. SerpCrypto returns each offer as JSON with merchant, price as a number, currency and delivery line, for one credit per search, from $0.30/1K searches as of October 2026. 500 products in 3 countries checked daily is 45,000 searches a month. No KYC; pay in crypto.
| Engine | google_shopping (offers); google for retailer pages in organic results |
|---|---|
| Price fields | price (as shown), extracted_price (number), currency, delivery |
| Seller field | source (merchant name) |
| Country | gl sets the market and the currency; hl the language |
| Cost | 1 credit per product, country and check; failed searches free |
| Price of credits | 100,000 searches for $56.25; 500,000 searches for $281.25 |
Record one row per offer and day: date, country, product query, merchant, numeric price, currency, delivery line and position. With those eight columns you can answer most pricing questions later without paying for the same search twice.
extracted_price for a product and day.position of your own source name.Search with the words a shopper would use, usually brand plus model, and keep the query fixed from day to day. Then match the offer titles you get back to your catalogue once, by hand or with simple rules, and store the mapping.
Avoid queries that are too broad, such as a category name, because the offers change with every search. Avoid queries that are too narrow, such as an internal SKU, because shoppers never type them and Google may return nothing useful.
import csv
import datetime
import os
import requests
API = "https://serpcrypto.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]}
OUR_STORE = "Example Store"
PRODUCTS = {"garmin forerunner 265": 349.99, "jabra elite 10": 199.00}
today = datetime.date.today().isoformat()
with open("prices.csv", "a", newline="", encoding="utf-8") as fh:
writer = csv.writer(fh)
for query, our_price in PRODUCTS.items():
params = {"engine": "google_shopping", "q": query, "gl": "us", "hl": "en"}
resp = requests.get(API, headers=HEADERS, params=params, timeout=60)
resp.raise_for_status()
for offer in resp.json().get("shopping_results", []):
price = offer.get("extracted_price")
seller = offer.get("source", "")
writer.writerow([today, "us", query, seller, price, offer.get("currency", ""), offer.get("position")])
if price and seller != OUR_STORE and price < our_price:
print("ALERT:", seller, "sells", query, "at", price, "below", our_price)
Daily is enough for most catalogues; twice a day suits sales seasons and fast categories such as electronics. Hourly checks rarely pay off on Google Shopping, because merchants' feeds do not change that often.
A mixed rhythm keeps costs down: check your 50 best sellers twice a day and the rest of the catalogue once a week. Because SerpCrypto credits never expire, a quiet month does not waste a pack, and you can buy ahead of a sales season.
Searches per month for common setups, counted as 30 daily checks or 4 weekly checks.
| Setup | Searches per month | Pack that covers a month |
|---|---|---|
| 100 products, 1 country, daily | 3,000 | 10,000 searches ($7.50) last about 3 months |
| 500 products, 3 countries, daily | 45,000 | 100,000 searches ($56.25) last about 2 months |
| 50 best sellers twice a day + 2,000 products weekly | 11,000 | 25,000 searches ($18.75) last about 2 months |
| 5,000 products, 2 countries, daily | 300,000 | 500,000 searches ($281.25) last about 7 weeks |
Yes. Some shoppers never open the Shopping tab. Run the same product query with engine=google and read organic_results and shopping_results: you see which retailers rank in the main results and whether Google shows a product block there.
That second search costs one more credit. Many teams run it weekly rather than daily, since organic rankings move more slowly than prices.
Small catalogues fit in 25,000 searches; a few hundred products in several countries usually need 100,000 searches or more, as of October 2026. Credits never expire.
25,000 searches
$18.75
$0.75/1K searches
100,000 searches
$56.25
$0.56/1K searches
250,000 searches
$140.63
$0.56/1K searches
500,000 searches
$281.25
$0.56/1K searches
In every plan: Every engine at 1 credit per search · Failed requests not charged · Credits never expire · Country, language, city and device targeting
The API returns the price exactly as Google Shopping shows it in that country, plus the delivery line when Google shows one. Tax display rules differ by country, so compare within one market first.
Yes. Each country edition returns its local currency in the currency field. Convert with your own exchange rates if you need one currency across markets.
The API returns the price Google shows and a link to the offer. Reading the merchant's page is a separate step that you do yourself, under that site's terms.
You get an error code and the failed search is not charged. Retry it later; the errors page shows a retry loop with backoff.
Top up from $25 in BTC, USDT, USDC, ETH, SOL, LTC and buy a pack from your balance. No ID, no selfie and no card are needed.
From $0.30/1K searches · no KYC
Get an API key