Google Shopping Scraper API
Google Shopping Data from
Every Major Retailer at Scale
Google Shopping Data from Every Major Retailer at Scale
Scrape Google Shopping product listings with prices, retailers, ratings, delivery info, filters, and categorized groupings. 40 products per page, 18+ filter groups per query, worldwide coverage. No dynamic loading, no hidden parameters, no retailer-by-retailer scraping.
Start scraping today with 1000 free credits. No Credit Card Required
40 Products Per Page, 18+ Filter Groups
Every query returns up to 40 products plus Google's editorial category groupings (e.g., Gaming laptops, Ultraportable laptops) with their own product lists, not just a flat result set.
Every response carries 18+ filter groups (Features, Screen Size, Price, Brand, CPU, RAM, Condition, Seller, etc.). Apply any filter on the next call via the opaque `shoprs` token, or use first-class `min_price` / `max_price` / `sort_by` / `free_shipping` / `on_sale` parameters.
Worldwide Coverage with Location-Level Targeting
Target any Shopping market with 84 Google domains, 240+ countries, 150+ languages. Pricing currency, retailer mix, and shipping options all shift with `gl`. US prices in USD, Turkish in TL, German in EUR.
Use `location=Austin,Texas,United States` or a pre-encoded `uule` for city-level geo-targeting, which is critical for local-inventory queries, Nearby deals, and regional pricing.
How It Works
Select a Target

Send API Request
import requests
import json
token = "<SDO-token>"
query = "laptop"
url = f"https://api.scrape.do/plugin/google/shopping?token={token}&q={query}"
response = requests.request("GET", url)
print(json.dumps(response.json(), indent=2))Get Structured JSON
{
"search_parameters": {
"engine": "google_shopping",
"q": "laptop",
"google_domain": "google.com",
"hl": "en",
"gl": "us",
"device": "desktop",
"start": 0
},
"search_information": {
"page_title": "laptop - Google Shopping",
"query_displayed": "laptop",
"shopping_results_state": "Results for exact spelling"
},
"shopping_results": [
{
"position": 1,
"title": "Lenovo IdeaPad Slim 3 Chromebook FHD",
"product_id": "7000474567848623813",
"product_link": "https://www.google.com/search?ibp=oshop&...",
"source": "Best Buy",
"price": "$189.00",
"extracted_price": 189,
"old_price": "$399",
"extracted_old_price": 399,
"rating": 4.6,
"reviews": 4800,
"snippet": "Performs well (720 user reviews)",
"extensions": ["52% OFF"],
"thumbnail": "https://encrypted-tbn2.gstatic.com/shopping?...",
"delivery": "15-day returns",
"tag": "52% OFF",
"multiple_sources": true
}
],
"filters": [
{
"input_type": "link",
"type": "Features",
"options": [
{ "text": "For Gaming", "shoprs": "CAEYASoGbGFwdG9w..." },
{ "text": "Touchscreen", "shoprs": "CAEYASoGbGFwdG9w..." }
]
},
{
"input_type": "link",
"type": "Price",
"options": [
{ "text": "Under $500", "shoprs": "CAESESoPCMakPhIJ..." },
{ "text": "$500 - $1,000", "shoprs": "CAESGioYCMakPhIS..." }
]
}
],
"categorized_shopping_results": [
{
"title": "Gaming laptops",
"shopping_results": [
{ "position": 1, "title": "Acer Nitro V 15", "price": "$699", "source": "Acer" }
]
},
{
"title": "Ultraportable work laptops",
"shopping_results": [
{ "position": 1, "title": "Apple MacBook Air M3", "price": "$1,099", "source": "Apple" }
]
}
],
"pagination": {
"current": 0,
"next": "/plugin/google/shopping?q=laptop&start=10"
}
}
Scrape.do has been a game-changer with powerful scraping tools, but what truly sets them apart is their excellent customer support.

CTO
Average Response Time
No tickets connect with expert engineers.
Success rate
Proxies
Faster gateway than the closest competitor.
Reliable, Scalable,Unstoppable Web Scraping
Frequently Asked Questions
Google Shopping loads results through async AJAX calls, requires hidden backend parameters for full detail extraction, and has aggressive bot detection that blocks requests-level HTTP clients. Scraping it directly means headless browsers, session management, parameter reverse-engineering, and proxy rotation. This API handles all of that and returns parsed JSON. 40 products per page with prices, retailers, ratings, delivery info, and filters, ready to use.
Up to 40 products in shopping_results, plus Google's editorial category groupings in categorized_shopping_results (each with its own product list). A typical q=laptop response returns 40 main products + 5 category groups of 4-5 products each = ~60-65 total products per request.
First-class parameters for the common cases: min_price=500&max_price=1500, sort_by=1 (low-to-high) or sort_by=2 (high-to-low), free_shipping=true, on_sale=true. They combine freely and take precedence over the opaque shoprs token when both are set.
Every response returns 18+ filter groups in filters[] (Features, Screen Size, Price, Brand, CPU, RAM, Storage, OS, Condition, Seller, etc.), plus horizontal filter chips in carousel_filters[]. Each option carries an opaque shoprs token. Pass that token back as the shoprs query parameter to apply that filter on the next call. Chain filters by reading fresh shoprs values from each response.
Yes. gl=de&google_domain=google.de&hl=de pulls from the German Shopping catalog with German retailers, EUR pricing, and German UI. Same pattern works for 240+ country codes and 84 Google domains. For city-level targeting (e.g., local-inventory results), add location=Berlin,Berlin,Germany or a pre-encoded uule.
Either. The response carries thumbnail and source_icon as a valid image source, which may be a base64 data URI (data:image/webp;base64,...) or a regular URL (https://...). Both render directly in an <img src> without modification. Clients must handle both formats transparently.
The response includes pagination.next, a relative path like /plugin/google/shopping?q=laptop&start=10. Follow the link, appending your token. Keep going until pagination is absent. The top-level shopping_results carries up to 40 items per page, but the next link advances start by 10. Follow the returned value rather than assuming a fixed increment.
These are transient. Google occasionally returns an empty data shell on deeper paginated pages. Retry the same request once and it almost always succeeds. Only treat repeated empty responses as the actual end of the result set.
device=desktop (default) returns the desktop Shopping layout; device=mobile returns mobile. Mobile has a slightly different filter set and smaller thumbnails. Useful if you're tracking how listings appear across devices for the same query.
Yes. Queries that include "used" or "refurbished" surface second-hand items automatically, and those results carry a second_hand_condition field with one of "Refurbished", "Used", or "Renewed". You can also apply a Condition filter from the filters[] array.
The Google Shopping API documentation covers the full parameter list, response schema (including all shopping_results[] fields), filter groups, localization details, and the shoprs token mechanics.


