API & IntegrationGoogle ShoppingAPIData Extraction

How to Use a Google Shopping API to Extract Prices and Product Data

Google Shopping aggregates prices from thousands of sellers, making it a goldmine for competitive intelligence. This guide shows you how to pull that data programmatically with a Google Shopping API, and how it differs from Google's own Content API.

By Tim Hagebols

Skip the scraping stack. Our Google Shopping Scraper API returns live prices, every seller offer, EAN to Google SKU matches, product variants and reviews from 40+ countries in one JSON call, with no proxies, parsers or browser farms to maintain.

Is there an official Google Shopping API?

This is the first thing to get straight, because the term "Google Shopping API" means two different things.

Google publishes the Content API for Shopping (part of the Merchant API). It is built for merchants to manage their own listings in Merchant Center: uploading products, prices, and inventory to your feed. It does not return other sellers' prices, and it cannot tell you what a competitor charges for a product.

If what you want is to read prices and offers across the market, you need a different kind of API: one that returns the live Google Shopping results for any product, from any seller. That is what ShoppingScraper provides, and the rest of this guide covers it.

Google Content API for ShoppingShoppingScraper Google Shopping API
PurposeManage your own Merchant Center feedRead live prices and offers for any product
Returns competitor pricesNoYes, every seller's offer
Lookup by EAN/GTINYour own products onlyAny product, resolved to the correct Google SKU
Merchant account requiredYesNo
Multi-countryYour feed's targets40+ Google Shopping domains

Why Google Shopping data matters

Google Shopping aggregates pricing information from thousands of online retailers, including independent webshops that never list on major marketplaces like Amazon or Bol.com. This breadth of coverage makes it an indispensable source for competitive intelligence. Retailers who rely solely on marketplace data miss pricing signals from direct-to-consumer brands, niche specialty shops, and regional retailers that collectively influence consumer price expectations. Google Shopping data reveals the true competitive landscape for any product identified by EAN code, exposing the full range of prices consumers encounter during their purchasing research. For brands monitoring MAP compliance, Google Shopping provides visibility into unauthorized sellers and gray-market pricing that marketplace-only monitoring cannot detect.

  • Covers independent webshops, DTC brands, and niche retailers beyond major marketplaces
  • Reveals the full price range consumers encounter during purchase research
  • Detects unauthorized sellers and gray-market pricing for MAP compliance
  • Available across 40+ countries for comprehensive international competitive analysis

Setting up your first API call

ShoppingScraper's /offers endpoint returns every seller offer for a product on Google Shopping by its EAN/GTIN. The API returns structured JSON containing seller names, prices, shipping costs, product conditions, and direct links to each offer. Authentication is a simple api_key query parameter, and responses arrive in a few seconds. To make your first call, register for a ShoppingScraper account, retrieve your API key from the dashboard, and construct a GET request with your EAN and the target Google Shopping site. The site parameter (e.g. shopping.google.nl, shopping.google.de) determines which Google Shopping domain is queried, so you can compare pricing across national markets with the same EAN.

  • Endpoint: GET https://api.shoppingscraper.com/offers
  • Required parameters: site (e.g. shopping.google.nl), ean, api_key
  • Optional: gl (country), hl (language), availability
  • Returns: product title, brand, availability, and an array of offers (seller, price, shipping, total, condition) — 1 credit per call
curl "https://api.shoppingscraper.com/offers?site=shopping.google.nl&ean=8720246689310&api_key=YOUR_API_KEY"
import requests
 
resp = requests.get(
    "https://api.shoppingscraper.com/offers",
    params={
        "site": "shopping.google.nl",
        "ean": "8720246689310",
        "api_key": "YOUR_API_KEY",
    },
)
offers = resp.json()

Parsing and storing results

Each API response includes a list of offers sorted by total price including shipping. Store results in your database with a timestamp for historical tracking, enabling trend analysis over days, weeks, and months. Normalize seller names to handle formatting variations like 'Amazon.de' versus 'Amazon DE' or 'Mediamarkt' versus 'Media Markt' by maintaining a seller alias table. Deduplicate offers from the same seller at different price points, which can occur when a retailer lists both new and refurbished inventory. Parse the shipping cost field separately from the product price because the total landed cost is what consumers compare. Include the product condition field in your storage schema to distinguish new, refurbished, and used offers in your competitive analysis.

  • Store every observation with a UTC timestamp for historical tracking
  • Build a seller alias table to normalize name variations across markets
  • Deduplicate same-seller offers at different price points or conditions
  • Parse shipping costs separately to calculate total landed cost for comparison

Scaling to thousands of products

Use ShoppingScraper's scheduler for recurring catalog-wide monitoring, or fan out concurrent /offers calls for high-volume lookups across your entire product catalog. Rate limits are generous on paid plans, supporting hundreds of thousands of monthly requests. Implement retry logic with exponential backoff and random jitter for transient errors to prevent overwhelming the API during temporary service interruptions. Process results asynchronously using Python's asyncio with httpx and a Semaphore to limit concurrent requests to 25, preventing memory bloat while maintaining high throughput. For catalogs exceeding 10,000 products, tier your monitoring frequency by product importance: hourly checks for top-revenue items, daily for mid-tier, and weekly for long-tail products.

  • Scheduler handles recurring catalog-wide crawls hands-free
  • Asyncio with Semaphore(25) for concurrent /offers request management
  • Tier monitoring frequency by product revenue contribution
  • Exponential backoff with jitter for resilient retry logic

Here is the concurrent pattern in Python, using httpx and an asyncio.Semaphore to cap in-flight requests:

import asyncio
import httpx
 
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.shoppingscraper.com"
 
async def get_offers(client, semaphore, ean, site="shopping.google.nl"):
    async with semaphore:
        resp = await client.get(
            f"{BASE_URL}/offers",
            params={"site": site, "ean": ean, "api_key": API_KEY},
            timeout=httpx.Timeout(connect=5.0, read=60.0, write=5.0, pool=5.0),
        )
        resp.raise_for_status()
        return {"ean": ean, "data": resp.json()}
 
async def scrape_catalog(eans, site="shopping.google.nl"):
    semaphore = asyncio.Semaphore(25)
    async with httpx.AsyncClient() as client:
        tasks = [get_offers(client, semaphore, ean, site) for ean in eans]
        return await asyncio.gather(*tasks, return_exceptions=True)
 
results = asyncio.run(scrape_catalog(["8720246689310", "0194253397052"]))

For a full walkthrough with a production-ready script, see How to Scrape Google Shopping with Python.

Handling multi-country queries

Google Shopping operates across more than 40 country domains, each with its own set of local retailers and pricing dynamics. ShoppingScraper's country parameter lets you query any supported domain, enabling cross-border price comparison from a single API integration. Compare how the same product is priced across Germany, the Netherlands, France, and the UK to identify markets where you hold a competitive advantage or where expansion opportunities exist. Currency conversion is handled automatically in the API response, but store raw local-currency prices alongside converted values to preserve analytical accuracy. For products sold internationally, schedule regular multi-country sweeps to detect pricing disparities that indicate parallel import opportunities or regional promotional activity.

  • Query 40+ Google Shopping country domains with a single API integration
  • Compare cross-border pricing to identify expansion opportunities
  • Store both local-currency and converted prices for analytical accuracy
  • Detect regional promotions and parallel import pricing patterns

Combining Google Shopping with marketplace data

The most complete competitive picture comes from combining Google Shopping data with direct marketplace scraping on Amazon, Bol.com, and other platforms. Cross-reference seller prices on Google Shopping with their marketplace listings to identify pricing inconsistencies that signal arbitrage opportunities or seller-level pricing strategies. A retailer offering the same product at different prices on Google Shopping versus Amazon may be testing price sensitivity or may have forgotten to update one channel. ShoppingScraper enables this cross-platform analysis through its unified API, where the same EAN code queries both Google Shopping and marketplace endpoints, returning comparable structured data. Build a unified price position report that shows your ranking across all channels simultaneously.

Automating alerts and reporting

Set up automated workflows that transform raw API data into actionable business intelligence. Configure threshold-based alerts that notify your pricing team via email, Slack, or webhook whenever a new competitor appears on Google Shopping, a competitor drops their price by more than a defined percentage, or a product that was previously unavailable becomes listed again. Build weekly competitive reports that summarize your price position across Google Shopping markets, highlight products where you moved up or down in the ranking, and identify emerging competitors entering your categories. ShoppingScraper's scheduled monitoring handles the data collection automatically, and most teams connect the output to BI tools like Power BI, Tableau, or Google Sheets for visualization.

  • Threshold alerts for new competitors, price drops, and availability changes
  • Weekly competitive reports summarizing price position across markets
  • Integration with BI tools like Power BI, Tableau, or Google Sheets
  • Scheduled monitoring for hands-free data collection and alerting
TH

CTO & Co-founder

Full-stack engineer specializing in web scraping, API design, and AI applications for e-commerce. Built ShoppingScraper's infrastructure processing 1M+ daily product lookups.

Ready to try ShoppingScraper?

Start with 100 free API calls. No credit card required.