# Google Shopping Scraper API - Product Listings, Prices, and Retailers at Scale > Source: https://scrape.do/products/ready-api/google-shopping-scraper/ Scrape Google Shopping product listings with prices, retailers, ratings, delivery info, filters, and categorized results. Structured JSON, worldwide coverage, 40 products per page, no blocks. > Each successful request costs **10 credits**. **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. ![Google Shopping Data from Every Major Retailer at Scale](/uploads/google-shopping-api.svg) ## Highlights ### 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 ### Search Products Search Google Shopping for any query and get up to 40 products with prices, retailers, ratings, delivery info, and discount badges. Response also includes categorized product groups and all available filter options. ![Search Products](/uploads/google-shopping-results.png) **cURL (API mode)** ```bash curl --location --request GET 'https://api.scrape.do/plugin/google/shopping?token=&q=laptop' ``` **Python (API mode)** ```python import requests import json 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)) ``` **Node.js (API mode)** ```javascript const axios = require('axios'); const token = ""; const query = "laptop"; const url = `https://api.scrape.do/plugin/google/shopping?token=${token}&q=${query}`; axios.get(url) .then(response => { console.log(JSON.stringify(response.data, null, 2)); }) .catch(error => { console.error(error); }); ``` *(Go, Ruby, Java, C#, PHP examples are also available on the HTML version.)* **Example response** ```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" } } ``` ## FAQ ### How does this differ from scraping Google Shopping myself? 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. ### How many products do I get per page? 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. ### How do I filter by price, shipping, or sale? 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. ### What's the `shoprs` parameter for? 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. ### Can I target a specific country's Shopping catalog? 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`. ### Are thumbnails and retailer icons URLs or base64? 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 `` without modification. Clients must handle both formats transparently. ### How do I paginate? 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. ### What if I get an empty `shopping_results` on a page that should have data? 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. ### Desktop vs mobile results? `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. ### Can I see used or refurbished products? 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. ### Where can I find the full API reference? The [Google Shopping API documentation](/documentation/google-scraper-api/shopping/search/) covers the full parameter list, response schema (including all `shopping_results[]` fields), filter groups, localization details, and the `shoprs` token mechanics.