sfoln/google-shopping-search · Ecommerce, Lead generation, Automation On request
Search Google Shopping and get one row per product: title, merchant, URL, numeric price and currency, rating, reviews, delivery, offers and product ID, plus min, median and max price per query. $6 per 1,000 result pages of about 40 products.
Google Shopping Scraper searches Google Shopping and returns one clean row per product: title, merchant, product URL, domain, numeric price and ISO currency, rating, reviews count, delivery info, number of offers, image and Google product ID. Each query also gets a summary row with min, median and max price. Built for price monitoring, competitor research, catalog enrichment and shopping assistants.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
Google Shopping credit google-shopping-query
$0.003
$3 / 1,000
Charged per upstream credit consumed. One Google Shopping page (up to ~40 products) uses 2 credits.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~google-shopping-search/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Search Google Shopping in the US for "wireless earbuds" and show the 10 cheapest offers with merchant, price and rating.
Input
Input fields
Enter product searches (one per line). Each query writes one row per product plus one `query_summary` row with price statistics.
Field
Type
Default
Meaning
queries *
array
required
Product queries Product searches as you would type them into Google Shopping, one per line. Accounts on the Apify free plan can process up to 10 queries per run.
country
string
"us"
Country (gl) Two-letter country code for the shopping market, e.g. us, gb, de. It also decides how a bare "$" price is read (CAD in ca, AUD in au...).
language
string
"en"
Language (hl) Language code, e.g. en, de, fr.
location
string
—
Location Optional free-text location for local prices and delivery, e.g. "Chicago, Illinois, United States".
resultsPerQuery
integer
40
Products per query Maximum products per query (1–100). Google Shopping returns up to ~40 products per page, and each page costs 2 google-shopping-query events. Range 1–100.
page
integer
1
Start page Result page to start from. Range 1–50.
maxQueries
integer
1000
Max queries Safety cap on the number of queries processed in this run. Range 1–10000.
concurrency
integer
5
Concurrency How many queries run in parallel. Range 1–10.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified upstream pages to each query_summary row.
Example input
{
"queries": [
"wireless earbuds"
]
}
Output
One record per input item
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string
Input
query
string
Querye.g. "wireless earbuds"
resultType
string
Result type product | query_summary (one per query, not charged itself) e.g. "product"
rank
integer | null
Rank Overall position: (page − 1) × 40 + the product's place on its page.
position
integer | null
Position on page
page
integer | null
Page
title
string | null
Product title
url
string | null
URL Merchant product page.
domain
string | null
Domain
merchant
string | null
Merchant Seller name as shown by Google.
price
string | null
Price (display)e.g. "$104.97"
priceValue
number | null
Price Numeric price parsed from `price`. e.g. 104.97
currency
string | null
Currency ISO 4217 code parsed from `price`. e.g. "USD"
rating
number | null
Rating
ratingCount
integer | null
Reviews count
delivery
string | null
Delivery
freeDelivery
boolean | null
Free delivery true when the delivery text offers free delivery without a condition ("Free shipping over $35" is false).
imageUrl
string | null
Image URL
productId
string | null
Google product ID
offers
string | null
Offers (display)e.g. "10+"
offersCount
integer | null
Offers count Number of sellers ("10+" → 10).
totalProducts
integer | null
Products
pagesFetched
integer | null
Pages fetched
creditsUsed
number | null
Credits used query_summary: upstream credits the query used.
creditsCharged
number | null
Credits charged query_summary: google-shopping-query events charged for the query, before any of its rows was written (equal to creditsUsed unless the maximum cost per run was reached).
merchants
array
Merchants
minPrice
number | null
Min price
maxPrice
number | null
Max price
medianPrice
number | null
Median price
country
string | null
Country query_summary: shopping market (Google gl); a bare "$" is read as this country's dollar.
status
string
Status ok | not_found | error | skipped_budget | skipped_free_plan
charged
boolean
Charged true on a product row covered by the google-shopping-query charge of its results page; the query_summary row is never charged itself (see creditsCharged).
chargedEvent
string
Charged event
chargedCount
integer
Events charged Events actually charged when the charge came back short of the requested count (present only then; a warning explains it).