Oxylabs Documentation



You can get Walmart results by providing your own URLs to our service. We can return the HTML for any Walmart page you like. Additionally, we can deliver structured (parsed) output for Walmart product, search, and offer listing pages.
Please note that you will scrape Walmart by employing the universal_ecommerce source. To learn about all the various ways you can fine-tune this source, please visit this page.


The example below illustrates how you can get a parsed Walmart product page result.
"source": "universal_ecommerce",
"url": "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462",
"geo_location": "United States",
"parse": true
curl --user user:pass \
'https://realtime.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \
-d '{"source": "universal_ecommerce", "url": "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462", "geo_location": "United States","parse": true}'
import requests
from pprint import pprint
# Structure payload.
payload = {
'source': 'universal_ecommerce',
'url': 'https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462',
'geo_location': 'United States',
'parse': True,
# Get response.
response = requests.request(
auth=('user', 'pass1'),
# Instead of response with job status and results url, this will return the
# JSON response with the result.
$params = [
'source' => 'universal_ecommerce',
'url' => 'https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462',
'geo_location' => 'United States',
'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, "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", "universal_ecommerce" },
{ "url", "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462" },
{ "geo_location" : "United States" },
{ "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();
package main
import (
func main() {
const Username = "YOUR_USERNAME"
const Password = "YOUR_PASSWORD"
payload := map[string]string{
"source": "universal_ecommerce",
"url": "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462",
"geo_location": "United States",
"parse": true,
jsonValue, _ := json.Marshal(payload)
client := &http.Client{}
request, _ := http.NewRequest("POST",
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
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", "universal_ecommerce");
jsonObject.put("url", "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462");
jsonObject.put("geo_location", "United States");
jsonObject.put("parse", true);
Authenticator authenticator = (route, response) -> {
String credential = Credentials.basic(USERNAME, PASSWORD);
return response
.header(AUTHORIZATION_HEADER, credential)
var client = new OkHttpClient.Builder()
var mediaType = MediaType.parse("application/json; charset=utf-8");
var body = RequestBody.create(jsonObject.toString(), mediaType);
var request = new Request.Builder()
try (var response = client.newCall(request).execute()) {
assert response.body() != null;
} catch (Exception exception) {
System.out.println("Error: " + exception.getMessage());
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': 'universal_ecommerce',
'url': 'https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462',
'geo_location': 'United States',
'parse': true
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());
# The whole string you submit has to be URL-encoded.
The example 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.


After executing the code example above, you can expect to get an output similar to this:
"results": [
"content": {
"url": "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462",
"meta": {
"sku": "710726462",
"gtin": null
"price": 8.12,
"title": "Adidas Moves Body Spray for Men, 2.5 Oz",
"rating": {
"count": 0,
"rating": 0
"currency": "USD",
"_warnings": [
"Could not determine if shipping is free. Perhaps no product variant is selected.",
"Could not parse seller info. Perhaps no product variant is selected."
"breadcrumbs": [
"Travel Size Beauty",
"Travel Size Fragrance",
"Travel Size Body Spray"
"description": "<p>Adidas Moves for Him is an energetic, aromatic Fougere fragrance. It is invigorating, stimulating, and crisp for all the ways you play. Top notes of the men's fragrance include fresh green apple, anise, Italian parsley, peppermint, mandarin and black peppercorn. Heart notes include cedarwood, musk, lavender, and jasmine. Base notes include muguet, sandalwood, oakmoss, and thyme. Adidas Moves for Him: -Energetic and aromatic -Lasts longer than traditional applications -Provides all-day confidence</p>",
"specifications": [
"key": "Body Spray Type",
"value": "Spray"
"key": "Gender",
"value": "Male"
"key": "Size",
"value": "2.5 oz"
"key": "Brand",
"value": "Adidas"
"key": "Manufacturer",
"value": "Hfc Prestige International Us Llc"
"key": "Assembled Product Dimensions (L x W x H)",
"value": "0.98 x 6.65 x 6.10 Inches"
"parse_status_code": 12005
"created_at": "2022-11-17 14:42:27",
"updated_at": "2022-11-17 14:42:31",
"page": 1,
"url": "https://www.walmart.com/ip/Adidas-Moves-Body-Spray-for-Men-2-5-Oz/710726462",
"job_id": "6999018925149157377",
"status_code": 200,
"parser_type": "walmart_product"