Target
You can get Target results by providing your own URLs to our service. We can return the HTML for any Target page you like. Additionally, we can deliver structured (parsed) output for Target product and search 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": "universal",
"url": "https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab",
"geo_location": "United States",
"render": "html",
"parse": true
}'
import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'universal',
'url': 'https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab',
'geo_location': 'United States',
'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: "universal",
url: "https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab",
geo_location: "United States",
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=universal&url=https%3A%2F%2Fwww.target.com%2Fp%2Fapple-airpods-max%2F-%2FA-82065675%3Fpreselect%3D54191105%23lnk%3Dsametab&geo_location=United%20States&render=html&parse=true&access_token=12345abcde
<?php
$params = array(
'source' => 'universal',
'url' => 'https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab',
'geo_location' => 'United States',
'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": "universal",
"url": "https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab",
"geo_location": "United States",
"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 = "universal",
url = "https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab",
geo_location = "United States",
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", "universal");
jsonObject.put("url", "https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab");
jsonObject.put("geo_location", "United States");
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": "universal",
"url": "https://www.target.com/p/apple-airpods-max/-/A-82065675?preselect=54191105#lnk=sametab",
"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
- mandatory parameter
Please note that you will scrape Target by employing the universal_ecommerce
source. To learn about all the various ways you can fine-tune this source, please visit this page.
Structured data
E-Commerce Scraper API can extract Target product and search pages in either HTML or JSON format, providing structured data on various elements of the page.
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.
Search
HTML example
"content": {
"url": "https://www.target.com/s?searchTerm=iphone&tref=typeahead%7Cterm%7Ciphone%7C%7C%7Chistory",
"results": {
"organic": [
{
"url": "https://www.target.com/p/refurbished-at-38-t-apple-iphone-12-128gb-black-target-certified-refurbished/-/A-90500508#lnk=sametab",
"title": "Refurbished AT&T Apple iPhone 12 (128GB) - Black - Target Certified Refurbished",
"brand_link": "https://www.target.com/b/apple/-/N-5y3ej",
"brand_name": "Apple",
"price_data": {
"price": 380.79,
"currency": "USD",
"comparison_price": 475.99
},
"product_id": "90500508",
"rating_data": {
"count": 0,
"score": 0
},
"shipping_message": "Ships freeExclusions applyGet it by Tue, Jul 9"
},
...
]
},
"parse_status_code": 12000
},
"created_at": "2024-07-03 10:48:01",
"updated_at": "2024-07-03 10:48:32",
"page": 1,
"url": "https://www.target.com/s?searchTerm=iphone&tref=typeahead%7Cterm%7Ciphone%7C%7C%7Chistory",
"job_id": "7214218323129556993",
"status_code": 200,
"parser_type": "target_search",
...
}
JSON structure
The table below presents a detailed list of search results page element we parse, along with its description and data type. The table also includes some metadata.
Last updated