Oxylabs Documentation
English
Search
K

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.
-
- 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
C#
Golang
Java
Node.js
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);
?>
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
namespace OxyApi
{
class Program
{
static async Task Main()
{
const string Username = "YOUR_USERNAME";
const string Password = "YOUR_PASSWORD";
var parameters = new Dictionary<string, string>()
{
{ "source", "google_shopping_pricing" },
{ "domain", "com" },
{ "query", "5007040952399054528" },
};
var client = new HttpClient();
Uri baseUri = new Uri("https://realtime.oxylabs.io");
client.BaseAddress = baseUri;
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
requestMessage.Content = JsonContent.Create(parameters);
var authenticationString = $"{Username}:{Password}";
var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);
var response = await client.SendAsync(requestMessage);
var contents = await response.Content.ReadAsStringAsync();
Console.WriteLine(contents);
}
}
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
const Username = "YOUR_USERNAME"
const Password = "YOUR_PASSWORD"
payload := map[string]string{
"source": "google_shopping_pricing",
"domain": "com",
"query": "5007040952399054528",
}
jsonValue, _ := json.Marshal(payload)
client := &http.Client{}
request, _ := http.NewRequest("POST",
"https://realtime.oxylabs.io/v1/queries",
bytes.NewBuffer(jsonValue),
)
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(responseText))
}
package org.example;
import okhttp3.*;
import org.json.JSONObject;
public class Main implements Runnable {
private static final String AUTHORIZATION_HEADER = "Authorization";
public static final String USERNAME = "YOUR_USERNAME";
public static final String PASSWORD = "YOUR_PASSWORD";
public void run() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("source", "google_shopping_pricing");
jsonObject.put("domain", "com");
jsonObject.put("query", "5007040952399054528");
Authenticator authenticator = (route, response) -> {
String credential = Credentials.basic(USERNAME, PASSWORD);
return response
.request()
.newBuilder()
.header(AUTHORIZATION_HEADER, credential)
.build();
};
var client = new OkHttpClient.Builder()
.authenticator(authenticator)
.build();
var mediaType = MediaType.parse("application/json; charset=utf-8");
var body = RequestBody.create(jsonObject.toString(), mediaType);
var request = new Request.Builder()
.url("https://realtime.oxylabs.io/v1/queries")
.post(body)
.build();
try (var response = client.newCall(request).execute()) {
assert response.body() != null;
System.out.println(response.body().string());
} catch (Exception exception) {
System.out.println("Error: " + exception.getMessage());
}
System.exit(0);
}
public static void main(String[] args) {
new Thread(new Main()).start();
}
}
import fetch from 'node-fetch';
const username = 'YOUR_USERNAME';
const password = 'YOUR_PASSWORD';
const body = {
'source': 'google_shopping_pricing',
'domain': 'com',
'query': '5007040952399054528'
};
const response = await fetch('https://realtime.oxylabs.io/v1/queries', {
method: 'post',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'),
}
});
console.log(await response.json());
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.

Output example

Below you can find a structured output example for google_shopping_pricing.
google_shopping_pricing structured output
{
"results": [
{
"content": {
"url": "https://www.google.com/shopping/product/6151552437452191901/offers?uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
"title": "Mikasa BQ1100 Basketball Official",
"rating": 4.5,
"pricing": [
{
"price": 40.59,
"seller": "Epic Sports",
"details": "$10.76 delivery by Thu, May 1230-day returnsSave $10 on purchase of $100",
"currency": "USD",
"condition": "New",
"price_tax": 4.56,
"price_total": 55.91,
"seller_link": "/url?q=https://basketball.epicsports.com/prod/4090/mikasa-nfhs-bq-series-competition-29-5-basketball.html%3Ftrk%3D1600085031&sa=U&ved=0ahUKEwj7_4-C7NH3AhXr_rsIHUO-B5oQ2ykIJA&usg=AOvVaw31h8nkZdCHWHkzNbRVm58u",
"price_shipping": 10.76
},
{
"price": 44.99,
"seller": "School Specialty",
"details": "Spend $49 for free delivery30-day returns",
"currency": "USD",
"condition": "New",
"price_total": 59.82,
"seller_link": "/url?q=https://www.schoolspecialty.com/mikasa-official-composite-covered-basketball-orange-2019891%3Futm_source%3Dgoogle%26utm_medium%3Dorganic%26utm_campaign%3Dsurfaces&sa=U&ved=0ahUKEwj7_4-C7NH3AhXr_rsIHUO-B5oQ2ykIMw&usg=AOvVaw0TKR5fDKqFhURqr9y9qAHX",
"price_shipping": 4.88
},
{
"price": 52.28,
"details": "Free delivery",
"currency": "USD",
"condition": "New",
"price_tax": 4.64,
"price_total": 56.92,
"seller_link": "/url?q=https://www.discountbandit.com/mikasa-official-composite-covered-basketball-29-5-inch-2019891.html%3Fgs%3D1&sa=U&ved=0ahUKEwj7_4-C7NH3AhXr_rsIHUO-B5oQ2ykIOA&usg=AOvVaw0PcAVnSmsx2ZmH_6ZBNDDo",
"seller_shop": "Discount Bandit",
"seller_seller": "Home Accents",
"price_shipping": 0
},
{
"price": 54.88,
"seller": "myperfectbuy.com",
"details": "Free delivery by Wed, May 18Apply SAVE22",
"currency": "USD",
"condition": "New",
"price_tax": 4.68,
"price_total": 59.56,
"seller_link": "/url?q=https://myperfectbuy.com/products/mikasa-official-composite-covered-basketball-29-5-inch%3Fcurrency%3DUSD%26variant%3D41362244862148%26utm_medium%3Dcpc%26utm_source%3Dgoogle%26utm_campaign%3DGoogle%2520Shopping%26srsltid%3DAWLEVJwM0L_F4lJ46wfNwnvxZC8gQWMGnk3OxYEDt4Y3gWjTpycu592SRA4&sa=U&ved=0ahUKEwj7_4-C7NH3AhXr_rsIHUO-B5oQ2ykIOw&usg=AOvVaw1G5wfOLgBr82qqVaiFEkdt",
"price_shipping": 0
}
],
"review_count": 0,
"parse_status_code": 12000
},
"created_at": "2022-05-09 06:59:32",
"updated_at": "2022-05-09 06:59:38",
"page": 1,
"url": "https://www.google.com/shopping/product/6151552437452191901/offers?uule=w+CAIQICINdW5pdGVkIHN0YXRlcw&gl=us&hl=en",
"job_id": "6929323960567862273",
"status_code": 200,
"parser_type": ""
}
]
}