Shopping Pricing
The google_shopping_pricing source is designed to retrieve pages containing lists of offers available for a product ID of your choice.
Request samples
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.
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "google_shopping_pricing",
"domain": "com",
"query": "5007040952399054528",
"parse": true
}'import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'google_shopping_pricing',
'domain': 'com',
'query': '5007040952399054528',
'parse': True
}
# Get response.
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('USERNAME', 'PASSWORD'),
json=payload,
)
# Print prettified response to stdout.
pprint(response.json())const https = require("https");
const username = "USERNAME";
const password = "PASSWORD";
const body = {
source: "google_shopping_pricing",
domain: "com",
query: "5007040952399054528",
parse: true,
};
const options = {
hostname: "realtime.oxylabs.io",
path: "/v1/queries",
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization:
"Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
},
};
const request = https.request(options, (response) => {
let data = "";
response.on("data", (chunk) => {
data += chunk;
});
response.on("end", () => {
const responseData = JSON.parse(data);
console.log(JSON.stringify(responseData, null, 2));
});
});
request.on("error", (error) => {
console.error("Error:", error);
});
request.write(JSON.stringify(body));
request.end();https://realtime.oxylabs.io/v1/queries?source=google_shopping_pricing&domain=com&query=5007040952399054528&pages=4&parse=true&access_token=12345abcde<?php
$params = array(
'source' => 'google_shopping_pricing',
'domain' => 'com',
'query' => '5007040952399054528',
'parse' => true
);
$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, "USERNAME" . ":" . "PASSWORD");
$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);package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
const Username = "USERNAME"
const Password = "PASSWORD"
payload := map[string]interface{}{
"source": "google_shopping_pricing",
"domain": "com",
"query": "5007040952399054528",
"parse": true,
}
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))
}
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 = "USERNAME";
const string Password = "PASSWORD";
var parameters = new {
source = "google_shopping_pricing",
domain = "com",
query = "5007040952399054528",
parse = true
};
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 org.example;
import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;
public class Main implements Runnable {
private static final String AUTHORIZATION_HEADER = "Authorization";
public static final String USERNAME = "USERNAME";
public static final String PASSWORD = "PASSWORD";
public void run() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("source", "google_shopping_pricing");
jsonObject.put("domain", "com");
jsonObject.put("query", "5007040952399054528");
jsonObject.put("parse", true);
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)
.readTimeout(180, TimeUnit.SECONDS)
.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()) {
if (response.body() != null) {
try (var responseBody = response.body()) {
System.out.println(responseBody.string());
}
}
} catch (Exception exception) {
System.out.println("Error: " + exception.getMessage());
}
System.exit(0);
}
public static void main(String[] args) {
new Thread(new Main()).start();
}
}{
"source": "google_shopping_pricing",
"domain": "com",
"query": "5007040952399054528",
"parse": true
}We use synchronous Realtime integration method in our examples. If you would like to use Proxy Endpoint or asynchronous Push-Pull integration, refer to the integration methods section.
Request parameter values
Generic
Basic setup and customization for scraping Google Shopping pages with offers for a chosen product ID.
source
Sets the scraper.
google_shopping_pricing
query
UTF-encoded product code.
-
user_agent_type
Device type and browser. The full list can be found here.
desktop
- mandatory parameter
Localization
Adapt results to specific geographical locations, domains, and languages.
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.
-
locale
Accept-Language header value which changes your Google search page web interface language. More info.
-
Pagination
Controls for managing the pagination and retrieval of search results.
start_page
Starting page number.
1
pages
Number of pages to retrieve.
1
Structured data
Below you can find a structured output example for google_shopping_pricing.
Output data dictionary
HTML example

JSON structure
The table below presents a detailed list of each element we parse, along with its description and data type. The table also includes some metadata.
url
The URL to the product page on Google Shopping.
string
title
The title of the product.
string
rating (optional)
The average user rating of the product, typically out of 5.
integer
pricing
An array of objects containing pricing information from different sellers.
array
pricing.price
The price of the product in the specified currency.
integer
pricing.seller
The name of the seller offering the product.
string
pricing.details
Additional details about the purchase, such as delivery and return policies.
string
pricing.currency
The currency code for the product price.
string
pricing.condition
The condition of the product, typically "New" or "Used".
string
pricing.price_tax
The amount of tax applied to the product price.
integer
pricing.price_total
The total price of the product, including tax.
integer
pricing.seller_link
The URL to the seller's page for the product.
string
pricing.price_shipping
The shipping cost for the product.
integer
review_count (optional)
The total number of reviews for the product.
integer
parse_status_code
The status code of the parsing job. You can see the parser status codes described here.
integer
created_at
The timestamp when the scraping job was created.
timestamp
updated_at
The timestamp when the scraping job was finished.
timestamp
status_code
The status code of the scraping job. You can see the scraper status codes described here.
integer
job_id
The ID of the job associated with the scraping job.
string
Last updated
Was this helpful?

