Google Shopping data is essential for price monitoring, competitive analysis, and e-commerce research. Scraping Google Shopping with proxies is brittle because Google aggressively blocks automated requests, rotates page layouts, and requires JavaScript rendering. A search API like Scavio returns structured Google Shopping results as JSON, including product titles, prices, ratings, seller names, and links. This tutorial shows how to query Google Shopping data in Python and JavaScript without touching a proxy or headless browser. You will get reliable, structured results in under ten lines of code.
Prerequisites
- Python 3.8+ or Node.js 18+ installed
- requests library installed (Python) or fetch available (JS)
- A Scavio API key from scavio.dev
Walkthrough
Step 1: Set up your API key
Store your Scavio API key as an environment variable to keep it out of source control.
import os
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")Step 2: Query Google Shopping results
POST to the Scavio API with your product query. The response contains structured shopping results with prices, ratings, and seller info.
import requests
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": "wireless earbuds", "type": "shopping"})
data = resp.json()Step 3: Parse product data
Extract price, rating, and seller from each shopping result for analysis or storage.
for item in data.get("shopping_results", [])[:5]:
print(f"{item['title']} - {item.get('price', 'N/A')}")
print(f" Seller: {item.get('source', 'N/A')}")
print(f" Rating: {item.get('rating', 'N/A')} ({item.get('reviews', 0)} reviews)")Step 4: Export to CSV
Save shopping results to a CSV file for spreadsheet analysis or downstream pipelines.
import csv
with open("shopping_results.csv", "w", newline="") as f:
w = csv.DictWriter(f, fieldnames=["title", "price", "source", "rating", "link"])
w.writeheader()
for item in data.get("shopping_results", []):
w.writerow({
"title": item.get("title", ""),
"price": item.get("price", ""),
"source": item.get("source", ""),
"rating": item.get("rating", ""),
"link": item.get("link", ""),
})Python Example
import os, requests
API_KEY = os.environ["SCAVIO_API_KEY"]
resp = requests.post("https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": "wireless earbuds", "type": "shopping"})
for item in resp.json().get("shopping_results", [])[:5]:
print(f"{item['title']} - {item.get('price', 'N/A')}")JavaScript Example
const r = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: {"x-api-key": process.env.SCAVIO_API_KEY, "Content-Type": "application/json"},
body: JSON.stringify({platform: "google", query: "wireless earbuds", type: "shopping"})
});
const data = await r.json();
(data.shopping_results || []).slice(0, 5).forEach(i =>
console.log(i.title, i.price)
);Expected Output
A list of Google Shopping products with title, price, seller, rating, and link returned as structured JSON without any proxy infrastructure.