Nordstrom Async API
Scrape Nordstrom product data asynchronously and retrieve structured product records.
To enable this engine, set the engine=nordstrom_async parameter.
Scraping Nordstrom product pages can be challenging due to anti-scraping measures. With the Nordstrom Async API, you send a POST request to the endpoint and the async engine handles the extraction workflow. The initial response returns a snapshot_id, which you can use to retrieve the finished records with the Snapshot API.

Scrape Nordstrom Products
Nordstrom Async API Integration Examples
We will use the following URL for the POST request:
https://ecom.webscrapingapi.com/v1?engine=nordstrom_async&api_key=<YOUR_API_KEY>&type=productWe will use this body for the POST request:
[
{
"url": "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"
},
{
"url": "https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE"
}
]Request parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
api_key | ✅ | string | Your API key. |
engine | ✅ | string | Must be nordstrom_async. |
type | ✅ | string | Must be product. |
discover_by | ❌ | string | Discovery mode for the input body. Use category_url when submitting Nordstrom category URLs. |
The request body is a JSON array of input objects. Each object should include a Nordstrom product url unless you are using a discovery mode.
Ready to Use Nordstrom Product Scraping Scripts
curl --request POST "https://ecom.webscrapingapi.com/v1?api_key=<YOUR_API_KEY>&engine=nordstrom_async&type=product" \
--header "Content-Type: application/json" \
--data '[
{
"url": "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"
},
{
"url": "https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE"
}
]'const API_KEY = "<YOUR_API_KEY>";
const SCRAPER_URL = "https://ecom.webscrapingapi.com/v1";
const params = new URLSearchParams({
api_key: API_KEY,
engine: "nordstrom_async",
type: "product",
});
const response = await fetch(`${SCRAPER_URL}?${params}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify([
{
url: "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100",
},
{
url: "https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE",
},
]),
});
const data = await response.json();
console.log(data.snapshot_id);import requests
API_KEY = "<YOUR_API_KEY>"
SCRAPER_URL = "https://ecom.webscrapingapi.com/v1"
PARAMS = {
"api_key": API_KEY,
"engine": "nordstrom_async",
"type": "product",
}
PAYLOAD = [
{
"url": "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"
},
{
"url": "https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE"
},
]
response = requests.post(SCRAPER_URL, params=PARAMS, json=PAYLOAD)
response.raise_for_status()
print(response.json()["snapshot_id"])<?php
$apiKey = '<YOUR_API_KEY>';
$scraperUrl = 'https://ecom.webscrapingapi.com/v1';
$query = http_build_query([
'api_key' => $apiKey,
'engine' => 'nordstrom_async',
'type' => 'product',
]);
$payload = json_encode([
[
'url' => 'https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100',
],
[
'url' => 'https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE',
],
]);
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json\r\n",
'content' => $payload,
],
]);
$response = file_get_contents("{$scraperUrl}?{$query}", false, $context);
echo $response;package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://ecom.webscrapingapi.com/v1?api_key=<YOUR_API_KEY>&engine=nordstrom_async&type=product"
payload := []byte(`[
{"url":"https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"},
{"url":"https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE"}
]`)
req, _ := http.NewRequest("POST", url, bytes.NewReader(payload))
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
String payload = """
[
{"url":"https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"},
{"url":"https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE"}
]
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://ecom.webscrapingapi.com/v1?api_key=<YOUR_API_KEY>&engine=nordstrom_async&type=product"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var url = "https://ecom.webscrapingapi.com/v1?api_key=<YOUR_API_KEY>&engine=nordstrom_async&type=product";
var payload = """
[
{"url":"https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"},
{"url":"https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE"}
]
""";
using var client = new HttpClient();
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
}require "json"
require "net/http"
require "uri"
uri = URI("https://ecom.webscrapingapi.com/v1?api_key=<YOUR_API_KEY>&engine=nordstrom_async&type=product")
request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request.body = [
{
url: "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100",
},
{
url: "https://www.nordstrom.com/s/windowpane-check-wool-blend-reefer-coat/7835169?origin=coordinating-7835169-0-1-PDP_1_OOS-recbot-also_viewed_graph&recs_placement=PDP_1_OOS&recs_strategy=also_viewed_graph&recs_source=recbot&recs_page_type=product&recs_seed=7516290&color=NAVY%2F%20GREY%20WINDOWPANE",
},
].to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.bodyOnce you send the POST request with the required parameters, the API will process your request and return a snapshot_id, which can be used to fetch the results via the Snapshot API.
Response example
{
"snapshot_id": "s_m516o11p1r4ky5pxgu"
}Retrieving Results Using the Snapshot API
Once you've submitted a POST request to the Nordstrom Async API and received a snapshot_id, you can use the Snapshot API to retrieve the processed results. This lets you fetch data asynchronously once it's ready.
We will use the following URL as an example of getting results from a snapshot_id:
https://ecom.webscrapingapi.com/v1?api_key=<YOUR_API_KEY>&snapshot_id=s_m516o11p1r4ky5pxguWhen the data is ready, the API will return a JSON response containing the scraped results.
Result response example
{
"0": {
"input": {
"url": "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100"
},
"url": "https://www.nordstrom.com/s/nike-dunk-low-retro-basketball-sneaker-men/8132148?origin=keywordsearch-personalizedsort&breadcrumb=Home%2FAll%20Results&color=100",
"domain": "www.nordstrom.com",
"country_code": "us",
"marketplace_pn": "8132148",
"other_pn": "nike-dunk-low-retro-basketball-sneaker-men",
"model_number": "6084520_1",
"gtin_ean_pn": "8132148",
"product_name": "Dunk Low Retro Basketball Sneaker",
"brand": "Nike",
"manufacturer": "Nike",
"initial_price": "$115.00",
"final_price": "$86.25",
"discount": 25,
"currency": "$0.00",
"in_stock": true,
"seller_name": "Nordstrom",
"root_category": "Shoes",
"main_image": "https://n.nordstrommedia.com/it/53db3bb7-9e8f-45d1-bd53-459aa6af773e.jpeg?trim=color&w=350&h=536"
}
}