Macy's Scraper
Pricing
from $3.90 / 1,000 product scrapeds
Macy's Scraper
Scrape Macy's product catalog and Macy's Inc. news in one actor. Extract prices, variants, SKUs/UPCs, color & size options, images, ratings and reviews from search, category, trending, and product URLs. Powered by Macy's APIs no browser, Akamai-proof, fast, clean normalized JSON.
Pricing
from $3.90 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Richard Feng
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
Macy's Product & News Scraper
Extract full Macy's catalog data — products, prices, variants, SKUs/UPCs, images, ratings, and reviews — plus Macy's Inc. newsroom articles, all as clean, normalized JSON. Search by keyword, scrape a category, pull trending products, or paste any macys.com product URL. No browser, no HTML parsing, no bot-challenge headaches.
📖 What does Macy's Scraper do?
Macy's Scraper pulls structured product and editorial data from Macy's and returns it in a single, consistent schema:
- 🔎 Product search — any keyword (
"dresses","nike men shoes","kitchen") → paginated product results. - 🗂️ Category / listing pages — paste a
macys.com/shop/...category URL or supply a category ID. - 🔥 Trending & featured — bestseller / trending / curated landing pages.
- 🧾 Product detail — full descriptions, every color & size, per-SKU UPC barcodes, pricing tiers, image galleries, star ratings & review counts.
- 📰 Macy's Inc. news — press releases and newsroom articles from
macysinc.com(title, author, date, body, images).
Every record is normalized to the same top-level shape (source / title / brand / price / options / variants / medias / stats), so downstream code doesn't care whether an item came from search, a category, or a product page.
💡 Why use Macy's Scraper?
- Fast, no browser. Seconds per page, not minutes, and no browser farm to babysit.
- Real SKUs, not guesses. Each purchasable variant carries its own UPC barcode, color, size, availability, and price — recovered from Macy's
upcsrelationship data, not scraped off a swatch widget. - Prices as integer cents. Sale, list, and previous prices are returned as integers (
5999=$59.99) so you never fight floating-point rounding — with the localized formatted strings alongside ("$59.99"). - One SKU per product. All shades/sizes are grouped under a single dataset item with a
variants[]array — not one row per variant. - Clean, public URLs only. Output
canonicalUrlis always the real shopper-facing product page, with no tracking or query params. - Four surfaces, one actor. Search, category, trending, and news in a single run via the
allmode. - Export anywhere. Download as JSON, CSV, Excel, or HTML, or pull straight from the dataset API.
🚀 How to use Macy's Scraper
- Open the Input tab.
- Pick a Scrape type (
search,category,trending,news, orall). - Fill the matching field:
- Search products → set Search query (e.g.
dresses). - Category products → paste category URLs into Start URLs, or add Category IDs.
- Trending products → add Trending URLs.
- News articles → add News URLs (defaults to the Macy's Inc. press-release feed).
- Search products → set Search query (e.g.
- (Optional) Toggle Fetch product details off for faster, listing-level records.
- Choose a Proxy — Apify Residential, country US is recommended.
- Click Start, then download from the Dataset tab.
Tip: Set
maxPages: 1andmaxResults: 10for a quick smoke test before a full run.
📋 Input
| Field | Type | Description |
|---|---|---|
scrapeType | enum | search, category, trending, news, or all (combine every provided input). Default search. |
query | string | Keyword for product search, e.g. women shoes. |
startUrls | array | Macy's product/category URLs or Macy's Inc. news URLs. Augments generated inputs. |
categoryIds | array | Macy's category IDs (e.g. 5449). Category URLs are preferred when known. |
trendingUrls | array | Trending / bestseller / curated listing URLs. |
newsUrls | array | Macy's Inc. news listing or article URLs. |
includeProductDetails | boolean | When true (default), each listing item is enriched with the full product-detail JSON (descriptions, variants, SKUs, galleries). Turn off for faster listing-level output. |
maxPages | integer | Max pagination depth per listing/news source. Default 20. |
maxResults | integer | Cap on output records. 0 = no cap. |
minResults | integer | Fail the run if fewer records are produced (handy for live smoke tests). |
maxRequestsPerCrawl | integer | Hard cap on total requests. 0 = Crawlee default. |
maxConcurrency | integer | Concurrent requests. Default 3. |
proxy | object | Required. Apify Proxy or custom proxy URLs. Residential / country US recommended. |
🔗 Supported URL types
| Type | Example |
|---|---|
| Product detail | https://www.macys.com/shop/product/...?ID=12345678 |
| Category / listing | https://www.macys.com/shop/womens-clothing/womens-dresses?id=5449 |
| Featured / keyword landing | https://www.macys.com/shop/featured/dresses |
| Trending | https://www.macys.com/shop/featured/trending-now |
| News listing (RSS) | https://www.macysinc.com/rss/pressrelease.aspx |
| News article | https://www.macysinc.com/newsroom/news/... |
Category URLs are preferred over bare category IDs — the URL carries the full category path. Purely editorial featured pages (no product grid) may legitimately return no products.
📤 Output
Each dataset item follows the schema in .actor/dataset_schema.json. Product example (abridged):
{"type": "product","source": {"id": "12345678","canonicalUrl": "https://www.macys.com/shop/product/calvin-klein-womens-sheath-dress?ID=12345678","retailer": "macys","language": "en-US","currency": "USD"},"scrapeContext": { "type": "search", "query": "dresses", "listUrl": "search:dresses" },"title": "Women's Sleeveless Sheath Dress","brand": "Calvin Klein","description": "A polished sleeveless sheath in a stretch crepe...","categories": ["Women", "Dresses", "Work Dresses"],"price": {"sale": 5999,"list": 9800,"previous": 9800,"currentFormatted": "$59.99","listFormatted": "$98.00","previousFormatted": "$98.00","stockStatus": "InStock"},"stats": {"rating": 4.6,"reviewCount": 9,"ratingRange": 5,"ratingPercentage": 92,"recommendedCount": 5,"notRecommendedCount": 1,"ratingDistribution": [ { "rating": 5, "count": 8 }, { "rating": 1, "count": 1 } ],"secondaryRatings": [{ "id": "OverallSize", "label": "Runs Small/Runs Large", "value": 4, "valueLabel": "neutral", "minLabel": "Runs Small", "maxLabel": "Runs Large", "range": 7 }],"reviewSources": ["BV"]},"details": {"features": ["Square neckline; Sheath silhouette", "Back zip closure", "Lined", "Imported"],"sizeAndFit": ["Approx. 25-3/4\" long", "Tailored fit through the chest, waist, and hips; sits close to the body"],"materialsAndCare": ["68% cotton, 29% polyester, 3% spandex; lining: 100% polyester", "Machine wash"],"specialSizes": ["Regular"],"bullets": ["Approx. 25-3/4\" long", "Tailored fit through the chest, waist, and hips", "68% cotton...", "Machine wash", "Imported"]},"options": [{"type": "Color","values": [{ "id": "1", "name": "Black", "swatchIcon": { "type": "Image", "url": "https://slimages.macysassets.com/is/image/MCY/products/.../swatch.jpg" } }]},{ "type": "Size", "values": [ { "id": "10", "name": "M" }, { "id": "12", "name": "L" } ] }],"variants": [{"id": "987654","sku": "192837465012","options": ["Black", "M"],"price": { "stockStatus": "InStock" },"extraInfo": { "upc": "192837465012" }}],"medias": [{ "type": "Image", "url": "https://slimages.macysassets.com/is/image/MCY/products/.../main.jpg", "index": 0 }],"extraInfo": { "topLevelCategory": "Women" }}
News example (abridged):
{"type": "article","source": {"id": "macys-inc-press-2026-001","canonicalUrl": "https://www.macysinc.com/newsroom/news/...","retailer": "macys","publishedUTC": 1751500800000},"scrapeContext": { "type": "news" },"title": "Macy's, Inc. Reports Quarterly Results","author": "Macy's, Inc.","publishedAt": "2026-06-30","summary": "...","bodyText": "...","images": [ { "type": "Image", "url": "https://www.macysinc.com/.../hero.jpg" } ]}
Download as JSON, CSV, XLSX, or HTML from the Dataset tab.
🗂️ Data fields
| Field | Type | Notes |
|---|---|---|
type | enum | product or article. |
source.id | string | Macy's product ID or article ID. |
source.canonicalUrl | string | Public, shopper-facing page URL. |
source.retailer | string | Always macys. |
source.currency | string | USD. |
title | string | Product name / article headline. |
brand | string | Product brand. |
description | string | Full product description. |
categories | array | Taxonomy breadcrumb names. |
price.sale / list / previous | integer | Integer cents (5999 = $59.99). |
price.*Formatted | string | Localized display strings ("$59.99"). |
price.stockStatus | enum | InStock / LowInStock / OutOfStock / Unknown. |
stats.rating / reviewCount | number | Average overall rating and total review count. |
stats.ratingPercentage / recommendedCount / notRecommendedCount | number | Recommend %, and recommend / not-recommend counts. |
stats.ratingDistribution[] | array | Star histogram: { rating, count } per star value. |
stats.secondaryRatings[] | array | PDP slider ratings (e.g. Length, Coverage, Overall Size): id, label, value, minLabel/maxLabel, range. |
details.features[] | array | Features / product details bullets. |
details.sizeAndFit[] | array | Size & Fit bullets (length, fit, silhouette). |
details.materialsAndCare[] | array | Materials & Care bullets (fabric composition, wash/care). |
details.specialSizes[] / details.bullets[] | array | Size types (e.g. Regular, Petite) and the full combined bullet list. |
options[] | array | Color / Size option groups, each value with id, name, and (colors) a swatchIcon. |
variants[] | array | One purchasable SKU per entry: id, sku (UPC barcode), options (color/size), per-SKU price, extraInfo.upc. |
medias[] | array | Product image gallery (type, url, index). |
author / publishedAt / summary / bodyText / images | — | Article-only fields. |
⚙️ Tips & advanced options
- Use residential US proxies. Product details are intermittently rate-limited;
retryOnBlocked+ Apify residential session rotation gets through cleanly. Datacenter IPs are more likely to see 403s. - Keep concurrency modest.
maxConcurrencyof2–3is the sweet spot. Higher values raise rate-limit rates without improving throughput. - Smoke test first. Set
maxPages: 1,maxResults: 10, andminResults: 1to confirm your input shape before a full crawl. - Prefer category URLs over IDs. The URL carries the full category path; a bare ID may resolve to a broader or empty result set.
- Turn off
includeProductDetailsfor a fast listing-level sweep (name, brand, listing price, image, rating) when you don't need variants/descriptions.
❓ FAQ
Do I need a login, cookie, or API key? No. No account and no token beyond your Apify proxy.
Are the prices in dollars or cents? Integer cents (5999 = $59.99) to avoid floating-point rounding. Each price also carries a localized formatted string.
Which URL does each record carry? Output canonicalUrl is always the public product/article page a shopper would visit.
Some trending/featured pages return no products — is that a bug? No. Purely editorial landing pages (e.g. trending-now) may have no underlying product grid. Use a real category URL/ID or a search query for guaranteed product results.
Can I scrape multiple surfaces in one run? Yes. Set scrapeType: "all" and provide any mix of query, startUrls, categoryIds, trendingUrls, and newsUrls.
Will re-running the same input re-scrape everything? Yes. Each run starts with a fresh request queue, so hitting Start again re-scrapes every source. Split into batches for very large crawls.
Legality / Terms of Service. Web scraping legality depends on jurisdiction and intended use. Review Macy's Terms of Service and consult counsel before running at scale. This actor is provided as-is for research, price monitoring, competitive analysis, and other lawful use cases, and collects only publicly available data.
💬 Support
Questions, bugs, or feature requests (historical backfills, additional Macy's surfaces, custom fields) — open an issue on the Apify listing or contact the autofacts team.
🤖 Use with AI agents
This Actor is callable as a tool by any MCP-capable agent — Claude, Cursor, VS Code — or by your own code, with no wrapper and nothing extra to deploy.
Connect over MCP
https://mcp.apify.com?tools=autofacts/macy-s-scraper
In a client that reads an mcpServers configuration block:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=autofacts/macy-s-scraper","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
The agent reads this Actor's parameters and their descriptions straight from the input schema, and the hosted server infers the result field types from the dataset schema — so a model knows what to send and what comes back before it ever calls anything.
Or call the API directly
curl -X POST "https://api.apify.com/v2/acts/autofacts~macy-s-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"query": "dresses", "startUrls": [{"url": "https://www.macys.com/shop/featured/dresses"}, {"url": "https://www.macysinc.com/newsroom/news/default.aspx"}], "trendingUrls": [{"url": "https://www.macys.com/shop/featured/trending-now"}], "newsUrls": [{"url": "https://www.macysinc.com/rss/pressrelease.aspx"}], "maxConcurrency": 3}'
The response body is the dataset records described above.
🧰 Other Actors by autofacts
Apify only auto-recommends Actors in the same category, so here are the ones that actually pair with this scraper:
| Actor | What it's for |
|---|---|
| Sephora Product Scraper | Beauty across 29 countries |
| Ulta Beauty Scraper | US beauty retail — prices, every shade, reviews |
| Boohoo Scraper | Fast fashion across 7 regions |
| Farfetch Scraper | Luxury fashion, multi-currency |
| Lululemon Scraper | Activewear catalog and pricing |
All of them: apify.com/autofacts