WebScrapingAPI Docs
Retailer APIs

Nordstrom Async API

Scrape Nordstrom product data asynchronously and retrieve structured product records.

Download Postman collectionNordstrom Async API

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

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=product

We 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

ParameterRequiredTypeDescription
api_keystringYour API key.
enginestringMust be nordstrom_async.
typestringMust be product.
discover_bystringDiscovery 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.body

Once 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_m516o11p1r4ky5pxgu

When 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"
  }
}

On this page