To get Saks Fifth Avenue sale prices programmatically, use Scavio's Saks Fifth Avenue API. POST /api/v1/saks/brand with a designer's slug and on_sale: true returns only that designer's sale items, and /deals returns the whole Sale, Women's Clothing Sale or Men's Sale list, 24 grid positions a page with price, regular price, sale price and percent off. /product lists every SKU with its online warehouse units, a color and size call names the SKU behind each size, and /store-availability checks that size at the Saks stores near a ZIP. All 9 endpoints cost 2 credits a call, $2 per 1,000 requests on the Growth plan.
Every response below was captured on November 10, 2026, seventeen days before Black Friday, with Saks' sale and its gift-card event running. Prices are US dollars from saksfifthavenue.com; the API covers the US site only. Listing calls (designer page, sale lists, search, category) took 4.2 to 10.9 seconds a page and the designer index 9.2, so give your client a timeout of at least 90 seconds; product, stores, store availability and suggestions answered in 1.1 to 3.3 seconds, apart from one product call at 8.8.
Step 1: Find the designer's slug
curl -s https://api.scavio.dev/api/v1/saks/designers \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'The A-Z index returned 1,196 designers. Three of them, as captured:
{
"letter": null,
"total": 1196,
"count": 1196,
"designers": [
{ "name": "A.L.C.", "slug": "a.l.c.", "url": "https://www.saksfifthavenue.com/brand/a.l.c.", "letter": "A" },
{ "name": "ALICE + OLIVIA", "slug": "alice-olivia", "url": "https://www.saksfifthavenue.com/brand/alice-olivia", "letter": "A" },
{ "name": "Chloé", "slug": "chloé", "url": "https://www.saksfifthavenue.com/brand/chlo%C3%A9", "letter": "C" }
]
}Pass the slug exactly as given, dots and accents included, to /brand. Send {"letter": "V"} for one letter.
Step 2: Pull one designer's sale (the Saks designer sale)
curl -s https://api.scavio.dev/api/v1/saks/brand \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"brand": "versace", "on_sale": true}'Versace's sale came back in 10.9 seconds: 26 items, 24 on this page and 2 on the next. The page header, the deepest item and the isSale facet, as captured (the image URL and 5 other facets trimmed):
{
"brand": { "name": "Versace", "slug": "versace", "url": "https://www.saksfifthavenue.com/brand/versace/sale" },
"total": 26,
"page": 1,
"total_pages": 2,
"per_page": 24,
"start": 0,
"next_start": 24,
"sort": "featured",
"count": 24,
"items": [
{
"id": "0400024223030",
"variant_id": "24223037",
"title": "Draped Medusa Head Body-Con Gown",
"brand": "Versace",
"url": "https://www.saksfifthavenue.com/product/versace-draped-medusa-head-body-con-gown-0400024223030.html",
"price": 1436.39,
"price_max": null,
"regular_price": 3990,
"regular_price_max": null,
"sale_price": 1436.39,
"on_sale": true,
"percent_off": 64,
"currency": "USD",
"review_count": null,
"badge": "Exclusive",
"is_final_sale": null,
"is_clearance": false,
"returnable": true,
"limited_inventory": true,
"promotions": ["Earn a $50-$500 Gift Card with Code NOVGC"],
"product_type": "master",
"colors": []
}
],
"applied_filters": { "isSale": ["Sale"] },
"facets": [
{
"id": "isSale",
"label": "Sale",
"values": [
{ "label": "Sale", "value": "Sale", "count": 26, "selected": true },
{ "label": "Not Sale", "value": "Not Sale", "count": 640, "selected": false }
]
}
]
}So 26 of Versace's 666 Saks items were on sale, 18 of them at 50% off or more. Walk the rest with "start": 24 (the previous next_start) until next_start is null. Run the same call for Golden Goose, Chloé, Burberry and Bottega Veneta and the depth differs by designer: all 19 Chloé sale items were 55% or 64% off, 24 of Golden Goose's 26 were 25% off (chart in the comparison post). Add sort: "price_low_to_high", size, color, min_price or max_price to narrow it further.
Two things to read correctly. When an item sells at a range, price is the low end and price_max the high end, and percent_off compares the two low ends: Versace's Stretch-Cotton T-Shirt read $206.50 to $295 against a regular $295, so some of its colors or sizes were still at full price. And promotions[] is Saks' text as printed; the gift-card code is not applied to price.
Step 3: Watch the Saks sale and new arrivals
curl -s https://api.scavio.dev/api/v1/saks/deals \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type": "sale"}'The Sale list returned "label": "Sale", total: 15390 and total_pages: 642 in 4.9 seconds. Its first item, with the price fields and flags kept:
{
"id": "0400027988798",
"title": "Basketball Mule Sneakers",
"brand": "Balenciaga",
"price": 709,
"price_max": null,
"regular_price": 1190,
"sale_price": 709,
"on_sale": true,
"percent_off": 40,
"is_final_sale": null,
"returnable": true,
"promotions": []
}Change type to womens_sale, mens_sale, womens_new_arrivals or mens_new_arrivals for the other lists. The brand facet on the Sale list counted 536 designers with sale items, from Oradina with 625 and Polo Ralph Lauren with 579 down to Fendi with 1, so one call tells you which designers to walk. To keep several designers in one list, send their facet names: {"type": "womens_sale", "brand": ["Gucci", "Prada"], "size": "Medium"}. There is no Black Friday or clearance list on Saks, so for Black Friday week watch the Sale list and the designers you care about daily.
Step 4: Search with size, price and sale first
A shopper in r/AmexPlatinum set up a daily search for men's sweaters, size Large, under $150, in stock on Saks. As one call:
curl -s https://api.scavio.dev/api/v1/saks/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "sweater", "size": "Large", "max_price": 150, "filters": {"refGender": "Men'"'"'s"}, "sort": "sale_first"}'19 sweaters in 6.3 seconds, the 17 on sale first. The header and two items (most item fields trimmed):
{
"query": "sweater",
"total": 19,
"page": 1,
"total_pages": 1,
"start": 0,
"next_start": null,
"sort": "sale_first",
"count": 19,
"applied_filters": { "refGender": ["Men's"], "sizeRefinement": ["Large"], "max_price": 150 },
"items": [
{ "id": "0400024371594", "title": "Gregory Wool-Blend Crewneck Sweater", "brand": "rag & bone", "price": 120.68, "regular_price": 298, "sale_price": 120.68, "on_sale": true, "percent_off": 60, "limited_inventory": true },
{ "id": "0400027601808", "title": "Cotton Cable-Knit Crewneck Sweater", "brand": "Polo Ralph Lauren", "price": 145, "regular_price": 145, "sale_price": null, "on_sale": false, "percent_off": null, "limited_inventory": false }
]
}Sizes take the size facet's label: "Large" works, while an abbreviation such as "M" matches nothing and returns total: 0 rather than an error, so check total and the facet's selected flags. The other sorts are featured, best_sellers, newest, price_high_to_low, price_low_to_high and brand_az. The size filter keeps items Saks lists in that size; to confirm the size is in stock today, read the product (Step 5).
Step 5: Read a product's sizes and units
curl -s https://api.scavio.dev/api/v1/saks/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": "0400024665280"}'Chloé's Loti Suede Platform Pumps, one of Chloé's 19 sale items, in 1.7 seconds (description, images, colors, attributes and a few flags trimmed):
{
"requested_id": "0400024665280",
"id": "0400024665280",
"master_id": "0400024665280",
"type": "master",
"title": "Loti Suede Platform Pumps",
"brand": "Chloé",
"upc": null,
"price": 607.49,
"regular_price": 1350,
"sale_price": 607.49,
"on_sale": true,
"percent_off": 55,
"promotions": [{ "id": "29149600", "name": "Gift Card Event", "message": "Earn a $50-$500 Gift Card with Code NOVGC" }],
"selected": { "color": "PEACHY PINK", "size": null },
"sizes": [
{ "value": "36 (6)", "label": "36 (6)", "selected": false, "selectable": false, "availability": "NOT_AVAILABLE", "waitlist": true },
{ "value": "37 (7)", "label": "37 (7)", "selected": false, "selectable": false, "availability": "NOT_AVAILABLE", "waitlist": true },
{ "value": "37.5 (7.5)", "label": "37.5 (7.5)", "selected": false, "selectable": true, "availability": "IN_STOCK", "waitlist": true },
{ "value": "38.5 (8.5)", "label": "38.5 (8.5)", "selected": false, "selectable": true, "availability": "IN_STOCK", "waitlist": true },
{ "value": "39 (9)", "label": "39 (9)", "selected": false, "selectable": true, "availability": "IN_STOCK", "waitlist": true },
{ "value": "40 (10)", "label": "40 (10)", "selected": false, "selectable": true, "availability": "IN_STOCK", "waitlist": true },
{ "value": "40.5 (10.5)", "label": "40.5 (10.5)", "selected": false, "selectable": true, "availability": "IN_STOCK", "waitlist": true },
{ "value": "41 (11)", "label": "41 (11)", "selected": false, "selectable": false, "availability": "NOT_AVAILABLE", "waitlist": true }
],
"variant_count": 8,
"variants": [
{ "sku": "24665280", "warehouse_units": 0 },
{ "sku": "24665281", "warehouse_units": 1 },
{ "sku": "24665282", "warehouse_units": 1 },
{ "sku": "24665283", "warehouse_units": 1 },
{ "sku": "24665286", "warehouse_units": 0 },
{ "sku": "24665287", "warehouse_units": 0 },
{ "sku": "24665289", "warehouse_units": 2 },
{ "sku": "24665290", "warehouse_units": 2 }
],
"in_stock_count": 5,
"available_count": 5,
"available": true,
"ready_to_order": false,
"availability": { "ats": 0, "message": null, "in_stock_date": null },
"available_in_store": true,
"marketplace": false,
"drop_ship": false,
"rating": null,
"review_count": 0
}sizes[] says which sizes can be ordered online (5 of 8). variants[] gives each SKU's online warehouse units (7 in all) but not which size it is. availability.ats reads 0 on a master; read it on a variant. rating and review_count are all the API returns about reviews: there is no review text.
Step 6: Name the SKU for each size and count units per size
curl -s https://api.scavio.dev/api/v1/saks/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": "0400024665280", "color": "PEACHY PINK", "size": "39 (9)"}'The answer is the variant, in 1.4 seconds (the fields that repeat the master trimmed):
{
"requested_id": "0400024665280",
"id": "24665289",
"master_id": "0400024665280",
"type": "variant",
"title": "Loti Suede Platform Pumps",
"brand": "Chloé",
"upc": "7626222122394",
"url": "https://www.saksfifthavenue.com/product/chlo%C3%A9-loti-suede-platform-pumps-24665289.html",
"price": 607.49,
"regular_price": 1350,
"percent_off": 55,
"selected": { "color": "PEACHY PINK", "size": "39 (9)" },
"ready_to_order": true,
"availability": { "ats": 2, "message": "Limited Inventory", "in_stock_date": null }
}We ran it for each in-stock size. Each variant's availability.ats matched its SKU's warehouse_units on the master:
| Size | SKU | Units online | Message |
|---|---|---|---|
| 37.5 (7.5) | 24665282 | 1 | Limited Inventory |
| 38.5 (8.5) | 24665290 | 2 | Limited Inventory |
| 39 (9) | 24665289 | 2 | Limited Inventory |
| 40 (10) | 24665281 | 1 | Limited Inventory |
| 40.5 (10.5) | 24665283 | 1 | Limited Inventory |
The SKU numbers do not follow the size order (size 40 is 24665281, size 38.5 is 24665290), so map them with one call per size, store the map, and from then on one master call a day counts units per size. A size stock alert is a size whose units drop to 0 or come back. Each variant also has its own upc, for matching the same shoe at other retailers.
Step 7: Check Saks store stock near a ZIP
First, the stores:
curl -s https://api.scavio.dev/api/v1/saks/stores \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"zip": "10022"}'ZIP 10022 returned 4 Saks locations within 50 miles in 1.4 seconds, 2 of them pickup stores. The nearest, as captured:
{
"store_id": "8601",
"name": "New York",
"address": "611 Fifth Avenue",
"city": "New York",
"state": "NY",
"zip": "10022-6899",
"country": "US",
"lat": 40.756416,
"lng": -73.970295,
"distance_miles": 0.21,
"open_today": "11:00AM",
"close_today": "7:00PM",
"hours": "9AM - 6PM",
"closed": false,
"pickup": true
}For today's hours use open_today and close_today; hours is a separate line as the site lists it and can differ. Then ask the pickup stores about one size:
curl -s https://api.scavio.dev/api/v1/saks/store-availability \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sku": "24665289", "zip": "10022"}'Size 39 of the Chloé pumps was "availability_message": "Not Available", units_at_store: null at both New York and Greenwich, in_stock_count: 0, in 2.4 seconds: online only. Another SKU, 10781654, answered the same day with counts at both stores (store address and hours trimmed):
{
"sku": "10781654",
"location": { "zip": "10022" },
"radius_miles": 50,
"count": 2,
"in_stock_count": 2,
"stores": [
{ "store_id": "8601", "name": "New York", "distance_miles": 0.21, "pickup": true, "availability_message": "In Stock", "in_stock": true, "limited": false, "units_at_store": 141 },
{ "store_id": "8672", "name": "Greenwich", "distance_miles": 26.08, "pickup": true, "availability_message": "In Stock", "in_stock": true, "limited": false, "units_at_store": 15 }
]
}units_at_store is Saks' own count for the store where the site shows one; when it is null, say "in stock" or "limited", never a number. The call needs a variant SKU (Step 6), not a master id, and lists only pickup stores. Marketplace items, "marketplace": true on the product, cannot be picked up in store.
Step 8: Browse a category
curl -s https://api.scavio.dev/api/v1/saks/category \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"path": "/c/women-s-apparel/dresses"}'Women's Designer Dresses returned total: 11341 in 8.0 seconds, with 12 facets, among them 331 designers and an isSale facet counting 4,502 dresses on sale. Editorial tiles took 2 of the 24 grid positions, so the page held 22 dresses and next_start was 22, not 24: walk with start: next_start or page 2 skips two dresses. Add "on_sale": true for the dress sale. Category paths come from a Saks category URL, a suggestion's categories[].path or a search's redirected_to.path.
Step 9: Pull search suggestions
curl -s https://api.scavio.dev/api/v1/saks/suggestions \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "gucci"}'{
"query": "gucci",
"result_count": 682,
"designers": ["Gucci"],
"categories": [],
"products": [
{ "id": "0400021245588", "title": "Jordaan Horsebit Leather Loafers", "brand": "Gucci", "url": "https://www.saksfifthavenue.com/product/gucci-jordaan-horsebit-leather-loafers-0400021245588.html" }
],
"popular_searches": ["prada", "ralph lauren", "balenciaga", "coach", "burberry"]
}Captured in 1.1 seconds (4 of 5 products and the image URL trimmed). designers[] are display names: look the slug up in /designers before calling /brand.
All nine endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/saks/search | 24 grid positions a page: price, price range, regular and sale price, percent off, review count, badge, final-sale, clearance and returnable flags, promotions and colors; designer, color, size, price, sale, new-arrival and facet filters; 7 sorts including sale_first | 2 |
/api/v1/saks/category | One category by /c/ path or URL, the same grid, filters and sorts, plus breadcrumbs | 2 |
/api/v1/saks/brand | One designer's Saks page by slug or URL, the same grid; on_sale: true for the designer's sale | 2 |
/api/v1/saks/deals | Sale, Women's Clothing Sale, Men's Sale, Women's or Men's New Arrivals, the same grid and filters | 2 |
/api/v1/saks/product | One product with every color and size and its availability, every SKU with its online warehouse units, flags, promotions, attributes, average rating and review count; one variant with a color and size | 2 |
/api/v1/saks/stores | Saks stores near a ZIP or a point within 15 to 300 miles, with today's hours and a pickup flag | 2 |
/api/v1/saks/store-availability | One variant SKU at the pickup stores near a location: message, in-stock and limited flags, units at store where the site shows a count | 2 |
/api/v1/saks/suggestions | The search box's suggestions: result count, designers, categories with paths, up to 5 products, popular searches | 2 |
/api/v1/saks/designers | The A-Z designer index, about 1,200 designers, with the slug /brand takes | 2 |
What the API does not return: price history (start polling to build one), review text (only the average rating and the count), a clearance or final-sale list (only per-item flags), coupon codes (Saks' promotion text comes through as given), international prices, and saksoff5th.com, which has shut down. For a side-by-side of every Saks data option, see the best Saks designer sale tracker APIs; to use Step 2 and Step 5 rows as a price history, see is that Saks sale too good to be true?.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required, enough for 25 Saks calls.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/saks/brandwith{"brand": "versace", "on_sale": true}and your key in theAuthorizationheader.
Try the Saks Fifth Avenue API free in the playground first, or call it from Claude and other agents through the MCP server. It covers saksfifthavenue.com in the United States; for the other department stores, see the Macy's API and the Nordstrom API.
Reference: Saks Fifth Avenue API overview · designer page · sale and new arrivals · search · product · store availability · stores · category · suggestions · designers
Frequently asked questions
How do I get Saks Fifth Avenue sale prices with an API?
Call Scavio's /api/v1/saks/deals with type sale, womens_sale or mens_sale, or /api/v1/saks/brand with a designer slug and on_sale: true. Each item comes back with price, regular price, sale price, percent off and Saks' promotion text. On November 10, 2026, the Sale list held 15,390 items across 536 designers.
How do I see how many units of each size Saks has?
Two steps. /api/v1/saks/product on the product id lists every SKU with warehouse_units, Saks' online warehouse units, but not which size each SKU is. Call /product again with a color and a size: the answer's id is that size's SKU, with availability.ats and a message such as Limited Inventory. Map the sizes once, then one call a day counts every size.
Can I check whether a Saks store has my size?
Yes, at pickup stores. Send the size's SKU and a ZIP to /api/v1/saks/store-availability. Each pickup store comes back with In Stock, Limited Inventory or Not Available, and units_at_store when the site shows a count. Near ZIP 10022 there were two pickup stores, New York and Greenwich.
Is there a Saks clearance or final-sale list?
No. Saks lists Sale, Women's Clothing Sale, Men's Sale and the New Arrivals lists, and the API covers those. Clearance and final sale are flags on each item, is_clearance and is_final_sale, not lists. Read them on the product endpoint, because listing tiles often leave is_final_sale blank.
How much does Saks data cost with Scavio?
Every Saks endpoint costs 2 credits a call, $2 per 1,000 requests at the Growth rate of $1 per 1,000 credits. Errors such as an unknown product id (404) are not charged, and new accounts get 50 free credits with no card, enough for 25 Saks calls.