Google Shopping API | Google Shopping Products, Prices & Deals avatar

Google Shopping API | Google Shopping Products, Prices & Deals

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Google Shopping API | Google Shopping Products, Prices & Deals

Google Shopping API | Google Shopping Products, Prices & Deals

Scrape Google Shopping results: extract product listings, prices, ratings, sellers, delivery info, and discount tags. Filter by location, price range, sort order, free shipping, and sale items. Supports multi-page scraping. Extract product listings, prices, ratings, sellers, and delivery info.

Pricing

from $0.01 / 1,000 results

Rating

5.0

(3)

Developer

John

John

Maintained by Community

Actor stats

7

Bookmarked

73

Total users

38

Monthly active users

6 hours ago

Last modified

Share

Google Shopping | Scrape Google Shopping Products, Prices & Deals

Scrape Google Shopping like an API. Extract product listings, prices, ratings, sellers, delivery info, and discount tags for any search query. Filter by location, price range, sort order, free shipping, and sale items. Multi-page and international search supported. Use it for Google Shopping scraping at scale, from price tracking to ecommerce intelligence.

🔗 View on Apify Store


Quickstart

  1. Click Try for free on the Apify Store page
  2. Enter a search query in the q field (e.g., wireless headphones)
  3. Click Start - results appear in the Output tab within seconds

Or call it directly via the API:

{
"q": "wireless headphones",
"gl": "us",
"hl": "en",
"max_pages": 1
}

Getting Started with the API

Prefer to call it yourself? Run the actor over the Apify API and get results back as JSON in a single request:

curl -X POST "https://api.apify.com/v2/acts/johnvc~google-shopping-api-google-shopping-products-prices-deals/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"q": "wireless headphones", "gl": "us", "hl": "en", "max_pages": 1}'

For a Python quick-start and a step-by-step MCP setup walkthrough, see the example repo on GitHub.


What This Actor Does

The Google Shopping Search Scraper retrieves product listings from Google Shopping for any search query. For each product it returns:

  • Title and product ID
  • Price (display and extracted numeric value)
  • Old price / original price (for sale items)
  • Source (seller/retailer name)
  • Rating and review count
  • Snippet description
  • Extensions (badges like "Sponsored", sale labels)
  • Delivery information
  • Thumbnail image URL
  • Product link
  • Installment payment details (where available)
  • Second-hand condition (for used/refurbished listings)
  • Multiple sources (when a product is available from several sellers)

You can filter results by price range, sort by price, and restrict to free-shipping or on-sale items only.


Use Cases

  • Price monitoring: Track prices for products across retailers over time
  • Competitive analysis: See what sellers are offering a product and at what price
  • Market research: Identify trending products, discount patterns, and seller landscape
  • E-commerce intelligence: Monitor competitor pricing and promotions
  • Price comparison tools: Build tools that compare prices from different sources
  • Deal finding: Automatically find on-sale or free-shipping products

🔌 Integrations: Automate Google Shopping Scraping and Price Monitoring

A single run answers one question ("what does this product cost right now?"). The real value comes from running this Google Shopping API on a schedule, so fresh prices, sellers, and deals land in your stack every day. That is how a one-off lookup becomes ongoing Google Shopping monitoring: price tracking, deal alerts, and an ecommerce intelligence feed. See the full list of Apify platform integrations.

Tasks and Schedules (the core recipe). Save one task per thing you watch (a product query like dyson airwrap, or a filtered on_sale search), then attach a schedule from the actor's Actions, then Schedule menu. Useful cron strings: 0 7 * * * (daily 7 AM), 0 */6 * * * (every 6 hours), 0 9 * * 1 (Mondays), 0 8 * * 1-5 (weekday mornings). One schedule can trigger many tasks at once, so a whole watchlist refreshes in a single tick.

Store the price history (Supabase). Send each run's rows into a table so a price history of Google Shopping data builds up over time and you can chart the drops. No-code: the n8n Actor node, then a Supabase node. Or in Python, reading the real output fields (q, shopping_results, and each result's title, extracted_price, source, extracted_old_price, product_link):

from apify_client import ApifyClient
from supabase import create_client
apify = ApifyClient("YOUR_APIFY_TOKEN")
supabase = create_client("YOUR_SUPABASE_URL", "YOUR_SUPABASE_KEY")
run = apify.actor("johnvc/google-shopping-api-google-shopping-products-prices-deals").call(run_input={
"q": "wireless headphones",
"gl": "us",
"max_pages": 1,
})
rows = []
for page in apify.dataset(run.default_dataset_id).iterate_items():
for product in page.get("shopping_results", []):
rows.append({
"query": page["search_parameters"]["q"],
"title": product.get("title"),
"price": product.get("extracted_price"),
"seller": product.get("source"),
"old_price": product.get("extracted_old_price"),
"link": product.get("product_link"),
"captured_at": page.get("search_timestamp"),
})
supabase.table("shopping_prices").insert(rows).execute()

n8n. This API ships an n8n community node (see the n8n integration section below). A four-step price monitor: Schedule Trigger, then the Google Shopping API node, then a Filter on on_sale or a price threshold, then Slack or email.

Make and Zapier. The same pattern works no-code with Make and Zapier: trigger on a schedule, run the actor, route the new prices where you need them.

MCP and AI agents. Add this API as a tool in Claude or Cursor through the Apify MCP server so an agent can pull live prices and deals on request (see the Use with AI Agents section below).

Webhooks. For anything custom, fire an Apify webhook on ACTOR.RUN.SUCCEEDED to push each run's dataset into your own service.


Input Parameters

ParameterTypeRequiredDefaultDescription
qstringYes-Search query (e.g., "wireless headphones")
locationstringNo-Geographic location (e.g., "Austin, Texas, United States")
glstringNo-Country code (e.g., "us", "uk", "de")
hlstringNo-Language code (e.g., "en", "es", "de")
google_domainstringNogoogle.comGoogle domain (e.g., "google.co.uk")
devicestringNodesktopDevice type: desktop, tablet, mobile
min_pricenumberNo-Minimum price filter
max_pricenumberNo-Maximum price filter
sort_byintegerNo-1 = price low to high, 2 = price high to low
free_shippingbooleanNofalseOnly return free-shipping results
on_salebooleanNofalseOnly return on-sale results
max_pagesintegerNo1Pages to fetch. 0 = no limit.
output_filestringNo-Optional filename to save results locally

Example Input

Basic search:

{
"q": "wireless headphones",
"gl": "us",
"hl": "en",
"max_pages": 1
}

Price-filtered search:

{
"q": "laptop",
"min_price": 500,
"max_price": 1200,
"sort_by": 1,
"gl": "us",
"max_pages": 2
}

Sale items with free shipping:

{
"q": "running shoes",
"free_shipping": true,
"on_sale": true,
"gl": "us",
"hl": "en",
"max_pages": 1
}

UK market search:

{
"q": "coffee machine",
"location": "London, England, United Kingdom",
"gl": "uk",
"hl": "en",
"google_domain": "google.co.uk",
"max_pages": 1
}

Example Output

Each dataset item represents one page of results:

{
"search_parameters": {
"q": "wireless headphones",
"gl": "us",
"hl": "en",
"max_pages": 1
},
"search_metadata": {
"results_count": 40,
"pages_processed": 1,
"max_pages_set": 1,
"pagination_limit_reached": true
},
"search_timestamp": "2026-05-07T14:30:00.123456",
"page_number": 1,
"shopping_results": [
{
"position": 1,
"title": "Sony WH-1000XM5 Wireless Headphones",
"product_id": "1234567890",
"product_link": "https://www.example.com/product/12345",
"source": "Best Buy",
"price": "$279.99",
"extracted_price": 279.99,
"old_price": "$349.99",
"extracted_old_price": 349.99,
"rating": 4.7,
"reviews": 12483,
"snippet": "Industry-leading noise cancellation with 30-hour battery life...",
"extensions": ["20% off"],
"delivery": "Free delivery",
"tag": "Sale"
}
],
"filters": [...]
}

Pricing

This Actor uses pay-per-event billing:

EventCostWhen charged
Setup$0.02Once per run
Page processed$0.02Per page of results (~40 products/page)

Example costs:

  • 1 page (~40 results): $0.04 total
  • 5 pages (~200 results): $0.12 total
  • 10 pages (~400 results): $0.22 total

Pagination

Google Shopping returns approximately 40 products per page. Use max_pages to control how many pages are fetched:

  • max_pages: 1 - fetch the first page only (default)
  • max_pages: 5 - fetch up to 5 pages (~200 results)
  • max_pages: 0 - fetch all available pages

The Actor stops automatically when no more results are available.


Notes

  • Results are localized based on location, gl, and hl parameters. For accurate local pricing, set all three.
  • The filters array is only included in the first page's dataset item.
  • Price filters (min_price, max_price) use the local currency of the targeted country.
  • The sort_by parameter changes the ordering but does not affect what products are available.

Use with AI Agents (MCP)

This Actor is available to any AI agent connected to the Apify MCP server. Once connected, the agent discovers and calls it automatically - no API client code required.

Setup video

Step-by-step: connect Apify to Claude, Cursor, VS Code, Cline, Windsurf, and more.

Also see: Integrate 5,000+ Apify Actors into Claude (full walkthrough)

Connect in 2 steps

Step 1 - Add the MCP server to your client

For Claude Desktop, Cursor, Windsurf, VS Code, or any client that accepts JSON MCP config:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/mcp-server"],
"env": {
"APIFY_TOKEN": "your_apify_token_here"
}
}
}
}

Or connect via the hosted endpoint (no install needed):

https://mcp.apify.com/sse?token=YOUR_APIFY_TOKEN

Get your API token at apify.com/account/integrations.

Step 2 - Ask the agent to search Google Shopping

The agent calls search-actors to find this Actor, reads its input schema via fetch-actor-details, then runs it with the right parameters. On supported clients (Cursor, VS Code, Cline, Windsurf), it is registered as a named tool for the rest of the session.

Example agent prompts

"Search Google Shopping for wireless headphones under $200, US only, sorted cheapest first."

"Find running shoes on sale with free shipping in the UK."

"Get the top 3 pages of results for 'standing desk' on google.de."

"Compare laptop prices on Google Shopping across US and UK markets."

Supported clients

ClientRegistered as named tool
Claude Code (free trial)Yes
CursorYes
VS Code (Copilot)Yes
ClineYes
WindsurfYes
GlamaYes
Kilo CodeYes
Claude DesktopNo - calls on demand
ChatGPTNo - calls on demand

Full compatibility list: github.com/apify/mcp-client-capabilities


Building a product-price or ecommerce intelligence pipeline? These tools from the same catalog pair well with Google Shopping data:

  • Google Shopping Lite API: a lighter, lower-cost variant for quick product-price lookups when you do not need every filter and field.
  • Google Immersive Product API: pull the detailed immersive product page for a listing, with richer specs and seller detail than a search row.
  • Google Images API: fetch clean product image URLs to enrich the catalog you build from shopping results.

Other Google Shopping scrapers exist, such as codingfrontend/google-shopping-scraper, but it sees only single-digit adoption, carries no user rating, and ships a bare README with no example output or integration recipes. This API is actively maintained, returns documented structured JSON, and comes with published tasks, an example repo, an n8n node, and MCP support.


FAQ

How many results does each page return?

Approximately 40 products per page. Use max_pages: 5 to get ~200 results.

Can I search in other countries?

Yes. Set gl (country code), hl (language code), location, and google_domain together for accurate local results. Example: gl: "uk", hl: "en", google_domain: "google.co.uk".

What does max_pages: 0 do?

Fetches all available pages until Google Shopping has no more results. Use with caution - some queries have hundreds of pages.

Why do some products have an old_price field?

Google Shopping shows the original price alongside the discounted price for sale items. The old_price and extracted_old_price fields capture this.

Can I filter to only show items on sale?

Yes - set on_sale: true. This filters to items Google Shopping has tagged as discounted.

Why does the filters array only appear on the first page?

Google Shopping returns available filters (brand, price range, condition, etc.) with the first result page only. They are included in the first dataset item.

Can I schedule this Google Shopping scraper?

Yes, and this is where the tool earns its keep. Any run can be automated on a schedule: create a saved task with your query and filters, then attach a schedule from the actor's Actions, then Schedule menu. Handy cron strings are 0 7 * * * (daily at 7 AM), 0 */6 * * * (every six hours), and 0 9 * * 1 (Monday mornings). One schedule can trigger many tasks at once, so an entire watchlist of products refreshes in a single tick. See the Integrations section above for the full Tasks-and-Schedules recipe and a Supabase price-history snippet.

Should I use an API or a web scraper for Google Shopping?

Both, and this actor is both. A plain web scraper you build yourself has to fight page changes, proxies, and parsing, while an official retail API is usually rate limited and gated. This actor gives you the clean, structured result of a purpose-built API: send a query, get back product listings, prices, sellers, and deals as JSON, with no quotas to manage.

Can I use the Google Shopping API programmatically?

Yes. The Apify API runs the actor, schedules it, and fetches datasets, and the apify-client package exists for both Node.js and Python. See the Getting Started with the API section above, or the actor's API tab.

Can I use Google Shopping data through an MCP server?

Yes. Add it as a tool in any MCP client (Claude, Cursor, and others) through the hosted Apify MCP server with the actor-specific URL https://mcp.apify.com/?tools=actors,docs,johnvc/google-shopping-api-google-shopping-products-prices-deals. In Claude Code (free trial) or Claude Desktop your agent can then answer questions like "what is the cheapest wireless headphone on Google Shopping right now?" with live data. See the Apify MCP docs.

Can I integrate this scraper with other apps?

Yes. It connects to almost any cloud service through Apify integrations: Make, Zapier, Slack, the n8n community node, and webhooks on ACTOR.RUN.SUCCEEDED for custom actions. See the Integrations section above for full recipes.

Can I use Google Shopping data for market research and competitive analysis?

Yes. Because every run returns sellers, prices, ratings, and sale tags as structured rows, the output feeds straight into market research, competitive analysis, and repricing models. Run it on a schedule to track how prices and deals move across retailers over time.

How else can I track product prices across retailers?

Pair this API with related tools in the same catalog: the Google Shopping Lite API for lightweight price checks, the Google Immersive Product API for detailed product pages, and the Google Images API for product images. Google Shopping itself lives at shopping.google.com.


n8n integration

Available as an n8n community node, n8n-nodes-google-shopping-api. In n8n: Settings, Community Nodes, install n8n-nodes-google-shopping-api, then use it in any workflow (it also works as an AI Agent tool).


Ready-to-run examples that show this API solving a specific problem. Each opens its own setup so you can run it on your account in one click.

Product prices and deals

Developer and integrations

Shopping use cases

By country

中文 (Chinese)

Last Updated: 2026.07.11