Product
The target_product source is designed to retrieve Target product result pages. We can return the HTML for any Target page you like. Additionally, we can deliver structured (parsed) output for Target product pages.
Request samples
The example below illustrates how you can get a parsed Target product page result.
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "target_product",
"product_id": "91936637",
"render": "html",
"parse": true
}'import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'target_product',
'product_id': '91936637',
'render': 'html',
'parse': True,
}
# 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 the result.
pprint(response.json())const https = require("https");
const username = "USERNAME";
const password = "PASSWORD";
const body = {
source: "target_product",
product_id: "91936637",
render: "html",
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();# The whole string you submit has to be URL-encoded.
https://realtime.oxylabs.io/v1/queries?source=target_product&product_id=91936637&render=html&parse=true&access_token=12345abcde<?php
$params = array(
'source' => 'target_produtc',
'product_id' => '91936637',
'render' => 'html',
'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": "target_product",
"product_id": "91936637",
"render": "html",
"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 = "target_product",
product_id = "91936637",
render = "html",
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", "target_product");
jsonObject.put("product_id", "91936637");
jsonObject.put("render", "html");
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": "target_product",
"product_id": "91936637",
"geo_location": "United States",
"render": "html",
"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
source
Sets the scraper.
universal
product_id
Target product ID.
-
parse
Returns parsed data when set to true.
false
- mandatory parameter
Localization
Adapt results to specific stores, fulfillment types, delivery locations.
fulfillment_type
Set the fulfillment type. Available values are: pickup, delivery, shipping.
String
store_id
Set the store location.
Integer
delivery_zip
Set the shipping to location.
String
Output data dictionary
Product
HTML example

{
"content": {
"url": "https://www.target.com/p/apple-iphone-se-2nd-generation-lte-pre-owned-unlocked-64gb-black/-/A-89278891#lnk=sametab",
"brand": {
"href": "/b/apple/-/N-5y3ej",
"name": "Shop all Apple"
},
"price": 199.99,
"title": "Pre-Owned Apple iPhone SE (2nd Generation) (64GB) Unlocked - Black",
"category": "Unlocked Cell Phones",
"currency": "USD",
"description": "Pre-owned electronics are like new \u2014 just better for the planet and your pocket. <...> And take advantage of feature and security updates in the future.",
"rating_score": 3.6,
"parse_status_code": 12000
},
"created_at": "2024-06-13 10:47:53",
"updated_at": "2024-06-13 10:48:19",
"page": 1,
"url": "https://www.target.com/p/apple-iphone-se-2nd-generation-lte-pre-owned-unlocked-64gb-black/-/A-89278891#lnk=sametab",
"job_id": "7206970531281641473",
"status_code": 200,
"parser_type": "target_product"
}JSON structure
The table below presents a detailed list of each product page element we parse, along with its description and data type. The table also includes some metadata.
url
The URL of the product page.
string
brand
Object containing brand details.
object
brand.href
The URL to the brand's page.
string
brand.name
The name of the brand.
string
price
The price of the product.
float
title
The title of the product.
string
category
The category of the product.
string
currency
The currency in which the price is listed.
string
description
A detailed description of the product.
string
rating_score
The rating score of 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
parser_type
The type of parser used to extract the data.
integer
job_id
The ID of the job associated with the scraping job.
string
Last updated
Was this helpful?

