To get Nordstrom product data programmatically, use Scavio's Nordstrom API. POST /api/v1/nordstrom/search returns 24 products a page with price, original price, percent off, rating, badges and every color, sorted by relevance, rating, price, newest or percent_off. POST /api/v1/nordstrom/product turns one result into every size of every color as a sku with its own price, price type, UPC, stock flag and units available to ship, plus the star histogram, size-fit votes and the reviews on the page. POST /api/v1/nordstrom/reviews returns the full review history, up to 200 reviews a call. Each call costs 5 credits, $5 per 1,000 requests on the Growth plan; reviews and POST /api/v1/nordstrom/availability, which adds store pickup by size, cost 10.
Nordstrom does not publish a developer API for its catalog, and its affiliate program is for linking and commissions, so reading prices and reviews means calling a third-party API. Everything below was captured on November 7, 2026, and covers nordstrom.com in the US; Nordstrom Rack is a separate site with its own Nordstrom Rack API.
Step 1: Search, sorted by markdown
curl -s https://api.scavio.dev/api/v1/nordstrom/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "ugg", "sort": "percent_off"}'This returned 488 results over 21 pages, 24 on the page, in 5.7 s. One row, as captured (colors trimmed to 2 of 13):
{
"position": 10,
"style_id": "8083472",
"url": "https://www.nordstrom.com/s/ugg-tasman-ii-slipper-women/8083472",
"name": "Women's Tasman II Slipper",
"brand": "UGG®",
"price": 77.99,
"price_range": { "min": 77.99, "max": 129.95 },
"original_price_range": { "min": 129.95, "max": 129.95 },
"percent_off": 39,
"on_sale": true,
"rating": 4.6,
"review_count": 848,
"badges": ["limited_time_savings", "new", "sustainable"],
"low_inventory": false,
"is_marketplace": false,
"seller": null,
"colors": [
{ "name": "DUSTY ORCHID", "color_family": "Purple", "image": "https://n.nordstrommedia.com/it/905c3c3e-def7-4c3c-8953-47253d2ea48e.jpeg" },
{ "name": "DARK INDIGO", "color_family": "Blue", "image": "https://n.nordstrommedia.com/it/32974531-4609-45b0-aa3a-ee8c048a5ded.jpeg" }
]
}price is the lowest current price across the style's sizes and colors and percent_off the largest discount, so read price_range before you quote a single price. badges carries Nordstrom's own labels such as new_markdown, and page (1 to 100) pages through the rest. The other sorts are relevance, rating, price_high, price_low and newest.
Step 2: Open the product for every size and color
curl -s https://api.scavio.dev/api/v1/nordstrom/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.nordstrom.com/s/ugg-tasman-ii-slipper-women/8083472"}'You can pass {"style_id": "8083472"} instead of the URL. The Tasman II came back in 3.1 s with color_count 13 and sku_count 104. Three of its skus, as captured:
[
{
"sku_id": "AA842821",
"size": "9 M",
"size_type": "Regular",
"color": "DUSTY ORCHID",
"upc": "199727311435",
"price": 77.99,
"original_price": 129.95,
"percent_off": 39,
"price_type": "promotion",
"in_stock": true,
"quantity": 69,
"is_final_sale": false
},
{
"sku_id": "A3917024",
"size": "9 M",
"size_type": "Regular",
"color": "BLACK",
"upc": "198605319464",
"price": 129.95,
"original_price": 129.95,
"percent_off": 0,
"price_type": "regular",
"in_stock": true,
"quantity": 373,
"is_final_sale": false
},
{
"sku_id": "B1367476",
"size": "9 M",
"size_type": "Regular",
"color": "MOONLIGHT",
"upc": "199727024786",
"price": 129.95,
"original_price": 129.95,
"percent_off": 0,
"price_type": "regular",
"in_stock": false,
"quantity": 0,
"is_final_sale": false
}
]Same slipper, same size: $77.99 on promotion in DUSTY ORCHID, $129.95 in BLACK, sold out in MOONLIGHT. Only the 8 DUSTY ORCHID skus carried the 39% that search showed. price_type is regular, promotion or clearance, and clearance_price_range on the product is set only when some skus are on clearance. quantity is units available to ship online, not store stock; on a few sizes in_stock was true with a quantity of 0 (2 of the Tasman's 104 skus) because in_stock also counts sizes that can be picked up in a store, so treat 0 as nothing to ship and use Step 6 for pickup. The upc lets you match the same sku at other retailers.
Step 3: Read ratings, fit and reviews from the same answer
The product response also carries the review picture, with no second call:
{
"rating": 4.6,
"review_count": 848,
"rating_histogram": [
{ "rating": 5, "count": 682 },
{ "rating": 4, "count": 59 },
{ "rating": 3, "count": 40 },
{ "rating": 2, "count": 28 },
{ "rating": 1, "count": 39 }
],
"size_fit": {
"average": 2.8157895,
"distribution": [
{ "value": 1, "label": "too small", "count": 5 },
{ "value": 2, "label": "a little small", "count": 11 },
{ "value": 3, "label": "true to size", "count": 53 },
{ "value": 4, "label": "a little big", "count": 7 }
]
},
"fit_info": [
"The brand says this runs true to size.",
"Whole sizes only; for 1/2 sizes, order next size up."
]
}reviews[] held 12 reviews for this style, each with title, text, rating, size_rating on the same 1 (too small) to 5 (too big) scale, author, date, helpful votes, verified_purchase, size and color purchased and photo URLs. One of them, trimmed to its fields:
{
"review_id": "244955849",
"title": "get a size bigger",
"rating": 5,
"size_rating": 1,
"author": "AngelinaE",
"date": "2025-09-29T20:48:26.000+00:00",
"helpful_votes": 15,
"verified_purchase": true,
"size_purchased": "10"
}These are the reviews the product page shows, not every review; Step 4 pulls the rest. review_summary, best_features and worst_features appear when Nordstrom shows them: the Cozy Knit slipper's best_features led with comfort (127 mentions).
Step 4: Pull every review, filtered
curl -s https://api.scavio.dev/api/v1/nordstrom/reviews \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
--max-time 120 \
-d '{"style_id": "7737947", "stars": [1, 2], "verified_only": true}'The reviews call returns a product's review history, up to 200 reviews a call (max_reviews, 60 by default), sorted most_helpful, most_recent, highest_rated or lowest_rated. stars, verified_only, with_photos and search (a word such as "zipper") narrow it the way the filters on nordstrom.com do; search comes back in Nordstrom's own order, so it cannot be combined with sort. For ASTR the Label's Maeve Midi Dress, an unfiltered call's summary read, as captured and trimmed to six of its fields:
{
"average_rating": 4.13,
"total_reviews": 216,
"size_rating": 2.976,
"width_rating": null,
"worst_features": [
{ "name": "zipper", "mentions": 4, "quote": "But the zipper is junky and won’t lay flat." }
],
"ratings_only_count": 78
}plus the star histogram, the five most praised features with a quote each (fit led with 38 mentions) and Nordstrom's AI review summary. Each review adds what the product page leaves out: reviewer badges, the reviewer's height, weight, body type and usual sizes, secondary ratings and photo thumbnails. Rating-only reviews, 78 of the 216 here, come back with text null. total_results and has_more tell you whether more reviews match than you asked for; there is no page parameter, so split a product with more than 200 reviews by star rating.
A reviews call costs 10 credits and takes 20 to 60 seconds, up to about 100 at 200 reviews, so set a client timeout of at least 120 seconds. If an attempt fails on Nordstrom's side the API retries on its own, and a call that still fails is a 502 that is not charged.
Step 5: Spot Marketplace sellers and per-color prices
Nordstrom also sells third-party Marketplace items, which its price adjustment policy excludes. In a "dress" search sorted by percent_off, 15 of the first 24 rows had is_marketplace: true. Opening one:
curl -s https://api.scavio.dev/api/v1/nordstrom/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.nordstrom.com/s/belle-and-bloom-summer-storm-midi-dress/8564865"}'returned "is_marketplace": true and "seller": "Belle & Bloom", with an original price of $169.95 and each color at its own promotion price: White $29 (82% off), Black $50.99 (70% off) and Red $101.97 (40% off). Search had listed the style at $29, 82% off.
Step 6: Check store pickup by size and color
curl -s https://api.scavio.dev/api/v1/nordstrom/availability \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"style_id": "7737947"}'For ASTR the Label's Maeve Midi Dress this returned 59 skus, 39 in stock, with pickup at 85 stores. One sku, as captured (stores trimmed to 2 of 4):
{
"sku_id": "A7578713",
"size": "Large",
"color": "DARK TEAL",
"upc": "191293689772",
"in_stock": true,
"ship_available": true,
"ship_quantity": 4,
"pickup_available": true,
"pick_quantity": 4,
"pickup_store_count": 4,
"pickup_stores": [
{ "store_number": "10", "name": "Nordstrom Alderwood Mall", "address": "3200 184th Street SW", "city": "Lynnwood", "state": "WA", "zip": "98037", "phone": "425.771.5755" },
{ "store_number": "425", "name": "Nordstrom Valley Fair", "address": "2400 Forest Avenue", "city": "San Jose", "state": "CA", "zip": "95128", "phone": "408.248.2180" }
]
}pick_quantity is chain-wide, and Nordstrom says only yes or no per store, so the list of pickup_stores is the per-store answer, not a unit count. Add "sku_id": "A7578713" to check one size, and pass a store_number to /api/v1/nordstrom/stores for that store's hours. The call costs 10 credits and took about 11 seconds.
Step 7: Turn it into a price-drop check
Store each sku's price and price_type and compare on the next run:
import requests
API_KEY = "sk_your_key_here" # load from your secret store in real code
def product(style_id):
r = requests.post(
"https://api.scavio.dev/api/v1/nordstrom/product",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"style_id": style_id},
timeout=120,
)
r.raise_for_status()
return r.json()["data"]
def drops(style_id, last_prices):
"""last_prices: {sku_id: price} from the previous run."""
item = product(style_id)
for color in item["colors"]:
for s in color["skus"]:
before = last_prices.get(s["sku_id"])
if before is not None and s["price"] < before and s["in_stock"] and s["quantity"] > 0:
yield color["name"], s["size"], before, s["price"], s["price_type"]Key the history on sku_id (or upc), not on the style, so an alert names the color and size that actually dropped.
All eight endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/nordstrom/search | 24 products a page with price, original price, percent off, rating, badges, colors and Marketplace seller; six sorts | 5 |
/api/v1/nordstrom/category | Any /browse category or sale section (sale/women), 24 products a page with six sorts, plus subcategories and filter counts | 5 |
/api/v1/nordstrom/brand | Every product on a brand page (/brands/astr-the-label--53360), 24 a page with six sorts, plus filter counts | 5 |
/api/v1/nordstrom/product | Every size and color as a sku with price, price type, UPC, stock and units to ship; star histogram, size-fit votes, fit notes and the reviews on the page | 5 |
/api/v1/nordstrom/reviews | Up to 200 reviews a call with four sorts and star, verified, photo and text filters; rating summary, size rating, praised and criticized features and the AI summary | 10 |
/api/v1/nordstrom/availability | Per size and color: units to ship, chain-wide pickup quantity and the stores that offer pickup | 10 |
/api/v1/nordstrom/stores | Stores near a ZIP or coordinates (up to 100 miles) or by number, with address, phone, hours, pickup and curbside flags | 5 |
/api/v1/nordstrom/suggestions | The search-box autocomplete, up to 20 suggested queries | 5 |
Category pages, brand pages and reviews are slower than search (about 7 to 60, 9 to 27 and 20 to 60 seconds), so set a client timeout of 120 seconds. For a side-by-side of every option, see the best Nordstrom price tracker APIs.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required, enough for 10 Nordstrom calls.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/nordstrom/searchwith your key in theAuthorizationheader.
Try the Nordstrom API free in the playground first, or call it from Claude and other agents through the MCP server, where the tools are search_nordstrom, get_nordstrom_product, get_nordstrom_category, get_nordstrom_brand, get_nordstrom_reviews, get_nordstrom_stores, get_nordstrom_availability and get_nordstrom_suggestions (Nordstrom is opt-in: add nordstrom to SCAVIO_PLATFORMS).
Reference: Nordstrom API overview · search docs · product docs · crawling Nordstrom without a crawler
Frequently asked questions
Does Nordstrom have an API for product data?
Not a public one. Nordstrom does not publish a self-serve developer API for its catalog, prices or reviews, and its affiliate program offers link, reporting and payment tools rather than a data feed. Scavio's Nordstrom API returns nordstrom.com search results and product detail as JSON with one API key.
How can I tell if something is in stock at Nordstrom?
Stock at Nordstrom is per size and color. A product call returns in_stock and quantity on every sku, where quantity is the units available to ship online and in_stock is true when the size can be shipped or picked up in a store. The availability call adds each size's pickup quantity and the stores that offer pickup; Nordstrom says yes or no per store, not how many. Search rows carry a low_inventory flag.
How long does Nordstrom do price adjustments?
Nordstrom's pricing policy, read on November 7, 2026, adjusts the price within 10 days of an in-store purchase or the shipment date. The item must have been bought at full price, the same color and size must still be available, only one adjustment is allowed per item, and Marketplace items are excluded.
How much does Nordstrom data cost with Scavio?
Nordstrom endpoints cost 5 credits per successful call, $5 per 1,000 requests on the Growth plan, except availability at 10 credits, because it reads the product page and then looks up the pickup stores, and reviews at 10. Errors such as an unknown product (404) or a temporary outage (502) are not charged. New accounts get 50 free credits with no card, enough for 10 Nordstrom calls at 5 credits.
Can I get every Nordstrom review for a product?
Up to 200 per call. The reviews call returns a product's review history sorted most helpful, most recent, highest or lowest rated, and filtered by star rating, verified purchase, photos or a text search, with each review's rating, size rating, author, date, helpful votes and size and color purchased. It costs 10 credits and takes 20 to 60 seconds. There is no page parameter, so split a product with more than 200 reviews by star rating. The product call only carries the reviews the product page shows, up to about 13.