Google Shopping
There are various page types we can scrape and parse on Google Shopping. You can either provide us with a full URL or a few input parameters via specifically built data sources (e.g. Search, Product, Product Pricing) so we can form the URL on our end.

Overview

Below is a quick overview of all the available data source values we support with Google Shopping.
Source
Description
Structured data
google
Submit any Google Shopping URL you like.
Depends on the URL.
google_shopping_search
Search results for a search term of your choice.
Yes.
google_shopping_product
Product page of a product ID of your choice.
Yes.
google_shopping_pricing
List of offers available for a product ID of your choice.
Yes.
You can jump to your preferred Google Shopping page type by selecting its name on the right-hand-side menu. Each page contains the parameter table as well as code examples to help you get started with your query.

URL

The google source is designed to retrieve content from various Google Shopping URLs. Instead of sending multiple parameters and letting us form and scrape Google Shopping URLs, you can provide us with a URL to the required Google Shopping page. We do not strip any parameters or alter your URLs in any other way.
This data source also supports parsed data (structured data in JSON format), as long as the URL submitted links to a page that we can parse.

Query parameters

Parameter
Description
Default Value
source
Data source. More info.
google
url
Direct URL (link) to Google page
-
user_agent_type
Device type and browser. The full list can be found here.
desktop
render
Enables JavaScript rendering. More info.
callback_url
URL to your callback endpoint. More info.
-
geo_location
The geographical location that the result should be adapted for. Using this parameter correctly is extremely important to get the right data. For more information, read about our suggested geo_location parameter structures here.
-
parse
true will return parsed data, as long as the URL submitted is for Google Search.
-
- required parameter

Code examples

In this example, we make a request to retrieve a Google Shopping Search result for keyword adidas, as seen in New York, USA.
JSON
cURL
Python
PHP
HTTP
{
"source": "google",
"url": "https://www.google.com/search?tbm=shop&q=adidas&hl=en",
"geo_location": "New York,New York,United States",
"parse": true
}
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json"
-d '{"source": "google", "url": "https://www.google.com/search?tbm=shop&q=adidas&hl=en", "geo_location": "New York,New York,United States"}'
import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'google',
'url': 'https://www.google.com/search?tbm=shop&q=adidas&hl=en',
'geo_location': 'New York,New York,United States'
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('user', 'pass1'),
json=payload,
)
# Instead of response with job status and results url, this will return the
# JSON response with results.
pprint(response.json())
<?php
$params = array(
'source' => 'google',
'url' => 'https://www.google.com/search?tbm=shop&q=adidas&hl=en',
'geo_location' => 'New York,New York,United States',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://data.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "user" . ":" . "pass1");
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
?>
# Parameters have to be encoded to escape special characters:
# URL: https://www.google.com/search?tbm=shop&q=adidas&hl=en
# geo_location: New York,New York,United States
# Encoded URL: https%3A%2F%2Fwww.google.com%2Fsearch%3Ftbm%3Dshop%26q%3Dadidas%26hl%3Den
# Encoded geo_location: New%20York%2CNew%20York%2CUnited%20States
https://realtime.oxylabs.io/v1/queries?source=google&url=https%3A%2F%2Fwww.google.com%2Fsearch%3Ftbm%3Dshop%26q%3Dadidas%26hl%3Den&geo_location=New%20York%2CNew%20York%2CUnited%20States&access_token=12345abcde
The example above uses the Realtime integration method. If you would like to use some other integration method in your query (e.g. Push-Pull or Proxy Endpoint), refer to the integration methods section.
The google_shopping_search source is designed to retrieve Google Shopping search results.

Query parameters

Parameter
Description
Default Value
source
Data source. More info.
google_shopping_search
domain
Domain localization
com
query
UTF-encoded keyword
-
start_page
Starting page number
1
pages
Number of pages to retrieve
1
locale
Accept-Language header value which changes your Google Shopping page web interface language. More info.
-
results_language
Results language. List of supported Google languages can be found here.
-
geo_location
The geographical location that the result should be adapted for. Using this parameter correctly is extremely important to get the right data. For more information, read about our suggested geo_location parameter structures here.
-
user_agent_type
Device type and browser. The full list can be found here.
desktop
render
Enables JavaScript rendering. More info.
-
callback_url
URL to your callback endpoint. More info.
-
parse
true will return parsed data. See Structured Data for more information.
-
context: nfpr
true will turn off spelling auto-correction.
false
context: sort_by
Sort product list by a given criteria. r applies default Google sorting, rv - by review score, p - by price ascending, pd - by price descending
r
context: min_price
Minimum price of products to filter
-
context: max_price
Maximum price of products to filter
-
- required parameter

Code examples

In this example, we make a request to retrieve the first 4 pages of Google Shopping search for the search term adidas, sorted by descending price and minimum price of $20.
JSON
cURL
Python
PHP
HTTP
{
"source": "google_shopping_search",
"domain": "com",
"query": "adidas",
"pages": 4,
"parse": true,
"context": [
{
"key": "sort_by",
"value": "pd"
},
{
"key": "min_price",
"value": 20
}]
}
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json"
-d '{"source": "google_shopping_search", "domain": "com", "query": "adidas", "pages": 4, "context": [{"key": "sort_by", "value": "pd"}, {"key": "min_price", "value": 20}]}'
import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'google_shopping_search',
'domain': 'com',
'query': 'adidas',
'pages': 4,
'context': [
{'key': 'sort_by', 'value': 'pd'},
{'key': 'min_price', 'value': 20},
],
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('user', 'pass1'),
json=payload,
)
# Print prettified response to stdout.
pprint(response.json())
<?php
$params = array(
'source' => 'google_shopping_search',
'domain' => 'com',
'query' => 'adidas',
'pages' => 4,
'context' => array(
'key' => 'sort_by','value' => 'pd',
'key' => 'min_price', 'value': 20
)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "user" . ":" . "pass1");
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
?>
https://realtime.oxylabs.io/v1/queries?source=google_shopping_search&domain=com&query=adidas&pages=4&context[0][key]=sort_by&context[0][value]=pd&context[1][key]=min_price&context[1][value]=20&access_token=12345abcde
The example above uses the Realtime integration method. If you would like to use some other integration method in your query (e.g. Push-Pull or Proxy Endpoint), refer to the integration methods section.

Shopping Product

The google_shopping_product source is designed to retrieve Google Shopping product page for a specified product.

Query parameters

Parameter
Description
Default Value
source
Data source. More info.
google_shopping_product
domain
Domain localization
com
query
UTF-encoded product code
-
locale
Accept-Language header value which changes your Google Shopping page web interface language. More info.
-
results_language
Results language. List of supported Google languages can be found here.
-
geo_location
The geographical location that the result should be adapted for. Using this parameter correctly is extremely important to get the right data. For more information, read about our suggested geo_location parameter structures here.
-
user_agent_type
Device type and browser. The full list can be found here.
desktop
render
Enables JavaScript rendering. More info.
callback_url
URL to your callback endpoint. More info.
-
parse
true will return parsed data. See Structured Data for more information.
-
- required parameter

Code examples

In the code example below, we make a request to retrieve the product page for product ID 5007040952399054528 from Google Shopping on com domain.
JSON
cURL
Python
PHP
HTTP
{
"source": "google_shopping_product",
"domain": "com",
"query": "5007040952399054528",
"parse": true
}
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json"
-d '{"source": "google_shopping_product", "domain": "com", "query": "5007040952399054528"}'
import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'google_shopping_product',
'domain': 'com',
'query': '5007040952399054528',
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('user', 'pass1'),
json=payload,
)
# Print prettified response to stdout.
pprint(response.json())
<?php
$params = array(
'source' => 'google_shopping_product',
'domain' => 'com',
'query' => '5007040952399054528',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "user" . ":" . "pass1");
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
?>
https://realtime.oxylabs.io/v1/queries?source=google_shopping_product&domain=com&query=5007040952399054528&pages=4&access_token=12345abcde
The example above uses the Realtime integration method. If you would like to use some other integration method in your query (e.g. Push-Pull or Proxy Endpoint), refer to the integration methods section.

Product Pricing

The google_shopping_pricing source is designed to retrieve pages containing lists of offers available for a product ID of your choice.

Query parameters

Parameter
Description
Default Value
source
Data source. More info.
google_shopping_pricing
domain
Domain localization
com
query
UTF-encoded product code
-
start_page
Starting page number
1
pages
Number of pages to retrieve
1
locale
Accept-Language header value which changes your Google Shopping page web interface language. More info.
-
results_language
Results language. List of supported Google languages can be found here.
-
geo_location
The geographical location that the result should be adapted for. Using this parameter correctly is extremely important to get the right data. For more information, read about our suggested geo_location parameter structures here.
-
user_agent_type
Device type and browser. The full list can be found here.
desktop
render
Enables JavaScript rendering. More info.
callback_url
URL to your callback endpoint. More info.
-
parse
true will return parsed data. See Structured Data for more information.
-
- required parameter

Code examples

In the code example below, we make a request to retrieve the product pricing page for product ID 5007040952399054528 from Google Shopping on google.com.
JSON
cURL
Python
PHP
HTTP
{
"source": "google_shopping_pricing",
"domain": "com",
"query": "5007040952399054528",
"parse": true
}
curl --user user:pass1 'https://realtime.oxylabs.io/v1/queries' -H "Content-Type: application/json"
-d '{"source": "google_shopping_pricing", "domain": "com", "query": "5007040952399054528"}'
import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'google_shopping_pricing',
'domain': 'com',
'query': '5007040952399054528',
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('user', 'pass1'),
json=payload,
)
# Print prettified response to stdout.
pprint(response.json())
<?php
$params = array(
'source' => 'google_shopping_pricing',
'domain' => 'com',
'query' => '5007040952399054528',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "user" . ":" . "pass1");
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);
?>
https://realtime.oxylabs.io/v1/queries?source=google_shopping_pricing&domain=com&query=5007040952399054528&pages=4&access_token=12345abcde
The example above uses the Realtime integration method. If you would like to use some other integration method in your query (e.g. Push-Pull or Proxy Endpoint), refer to the integration methods section.
Copy link
On this page
Overview
URL
Shopping Search
Shopping Product
Product Pricing