Retail pricing and sale monitoring
Use Macy's endpoints to turn retail pricing and sale monitoring into repeatable API requests with documented inputs and JSON responses.
Turn a Macy's product page into structured retail data — name, brand, department/division, category breadcrumb, sale-aware pricing, availability, images, aggregate rating, and every purchasable color variant with its own price, all as normalized JSON. Credential-free.
Get full Macy's product detail — pricing with sale detection, availability, images, ratings, and every color variant's own price — as structured JSON.
Endpoint families
2
Documented params
7
Examples
3
Live catalog snapshot
Active endpoints
3
Methods
GET
Required params
6
Schema refs
3
{
"platform": "Macy's",
"endpoint": "macys-product",
"method": "GET",
"path": "/macys/product/{productId}",
"auth": "apiKey"
}Use cases
Get full Macy's product detail — pricing with sale detection, availability, images, ratings, and every color variant's own price — as structured JSON.
Use Macy's endpoints to turn retail pricing and sale monitoring into repeatable API requests with documented inputs and JSON responses.
Use Macy's endpoints to turn product catalog research into repeatable API requests with documented inputs and JSON responses.
Use Macy's endpoints to turn color-variant price tracking into repeatable API requests with documented inputs and JSON responses.
Managed execution
Crawlora's Macy's API is designed around Macy's's own data surface, not a generic fetch endpoint — combining endpoint-specific request logic, managed infrastructure, parsing, normalization, billing, and Playground-tested examples.
Request behavior for Macy's endpoints is tuned to the platform's own response shapes and edge cases.
Supported Macy's endpoints can use managed proxy routing to improve reliability and reduce infrastructure work.
Dynamic Macy's pages can be routed through managed browser instances where JavaScript rendering is required.
Challenge pages and unusable Macy's responses are detected and surfaced clearly, not silently returned as empty data.
Macy's results are returned as documented JSON instead of raw HTML.
Test the same Macy's route from Docs and Playground before production integration.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/macys/product/{productId}
/macys/suggest
Endpoint catalog
/macys/product/{productId}Returns one Macy's product's full detail: name, brand, description, department/division, category breadcrumb, pricing (with sale detection), availability, images, aggregate rating, and every purchasable color variant with its own price. productId is a numeric id, taken from a Macy's product page's ?ID= query parameter.
Response notes
- `regular_price` and `current_price` are both the full price when the product is not on sale, and diverge when `on_sale` is `true` (`current_price` is what a shopper actually pays). - `colors` lists every purchasable color of the base product, each with its own `regular_price`/`current_price`/`on_sale` -- colors can be priced or on sale independently of each other and of the product-level price. A product with no color axis (single-SKU) returns an empty `colors` array. - `rating` and `review_count` are the product's aggregate review statistics; both are `0` when the product has no reviews yet. - `images` is the product's full image gallery as absolute URLs. - An unrecognized `productId` returns `404`. A non-numeric or missing `productId` returns `400` before any upstream request is made. Example response: ```json {"code":200,"msg":"OK","data":{"product_id":"20518101","name":"Onyx Collection Toiletry Bag","brand":"CHAMPS","description":"Introducing the Toiletry Bag from the Onyx Collection...","bullet_points":["Approximate dimensions: 11\" L x 4.25\" W x 6.25\" H","3-way zip closure for easy, versatile access and added security."],"department_name":"TRADITIONAL LUGGAGE","division_name":"LUGGAGE","categories":["Upright Luggage"],"available":true,"low_availability":false,"currency_code":"USD","regular_price":99.99,"current_price":39.99,"on_sale":true,"rating":4,"review_count":4,"images":["https://slimages.macysassets.com/is/image/MCY/products/2/optimized/31299222_fpx.tif"],"colors":[{"id":"9824974","name":"Black","regular_price":99.99,"current_price":39.99,"on_sale":true}],"url":"https://www.macys.com/shop/product/champs-onyx-collection-toiletry-bag?ID=20518101"}} ```
/macys/product/reviewsReturns one page of a Macy's product's normalized customer reviews, plus a site-wide rating summary (rating count, average rating, recommended ratio, rating histogram) for the product. Sourced from a separate review platform Macy's own product pages embed, distinct from the product catalog itself. product_id is a numeric id, the same one used by GET /macys/product/{productId}. A product with zero reviews, or a well-formed but unrecognized product_id, returns a normal, empty result rather than an error.
Response notes
- `rating_count`, `average_rating`, `recommended_ratio`, and `rating_histogram` are the product's site-wide aggregate rating summary, not just this page. `rating_histogram` is the count of ratings per star, ascending: index 0 is 1-star, index 4 is 5-star. - Some reviews carry only a star rating with no written title/body (`ratings_only: true`); `title` and `body` are omitted for those. - A product with zero reviews, or a well-formed but unrecognized `product_id`, returns a normal, empty result (`count: 0`, `total_reviews: 0`) rather than an error -- the review source does not distinguish an unknown product id from a real, reviewless product. - A malformed `product_id` returns `400` before any upstream request is made. Example response: ```json {"code":200,"msg":"OK","data":{"product_id":"15041387","page":1,"page_size":10,"total_pages":113,"total_reviews":1128,"rating_count":1065,"average_rating":4.52,"recommended_ratio":0.87,"rating_histogram":[79,17,47,50,872],"count":10,"source_url":"https://api.bazaarvoice.com/data/reviews.json?...","fetched_at":"2026-08-11T10:00:00Z","reviews":[{"id":"256498189","rating":5,"recommended":true,"ratings_only":false,"title":"Creed Aventus","body":"I love Creed Aventus this is my second bottle. I get a lot of compliments on this. Highly recommend this cologne.","author":"Rudyh1999","submitted_at":"2026-08-07T15:08:26Z"}]}} ```
/macys/suggestReturns Macy's own search-box suggestions (typeahead) for a partial query: a flat list of suggested search phrases, no product data. A partial query with no real matches returns a normal, empty result rather than an error.
Response notes
- There is no pagination -- `suggestions` is a single flat list (up to 10 entries). - A partial query with no real matches returns a normal, empty result (`count: 0`, empty `suggestions`) rather than an error. Example response: ```json {"code":200,"msg":"OK","data":{"query":"dress","count":10,"suggestions":["dresses","womens summer dresses","wedding guest dresses","women petite dresses","women formal dresses","donna karan dresses","women cocktail dresses","womens plus size dresses","calvin klein dresses","adrianna papell dresses"],"source_url":"https://www.macys.com/suggester?...","fetched_at":"2026-08-12T10:00:00Z"}} ```
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
How to scrape Macy's
Crawlora's Macy's endpoint returns full product detail as normalized JSON with one API key — no Macy's account required.
Macy's doesn't expose a search or category-listing endpoint — take the numeric productId from a Macy's product page's ?ID= query parameter.
Pass that productId to /macys/product/{productId} for the product's full detail: sale-aware pricing, availability, images, aggregate rating, and every purchasable color variant's own price.
FAQ
Not directly — Crawlora's Macy's coverage is product-detail only (/macys/product/{productId}), with no search or category-listing endpoint yet. Source productId values from Macy's product page URLs (the numeric ?ID= query parameter) rather than from a Crawlora search call.
Yes — /macys/product/{productId} returns sale-aware pricing alongside availability, images, an aggregate rating, and every purchasable color variant with its own price.