Macy's Scraper avatar

Macy's Scraper

Pricing

from $3.90 / 1,000 product scrapeds

Go to Apify Store
Macy's Scraper

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

Richard Feng

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

8 days ago

Last modified

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 upcs relationship 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 canonicalUrl is 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 all mode.
  • Export anywhere. Download as JSON, CSV, Excel, or HTML, or pull straight from the dataset API.

🚀 How to use Macy's Scraper

  1. Open the Input tab.
  2. Pick a Scrape type (search, category, trending, news, or all).
  3. 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).
  4. (Optional) Toggle Fetch product details off for faster, listing-level records.
  5. Choose a Proxy — Apify Residential, country US is recommended.
  6. Click Start, then download from the Dataset tab.

Tip: Set maxPages: 1 and maxResults: 10 for a quick smoke test before a full run.

📋 Input

FieldTypeDescription
scrapeTypeenumsearch, category, trending, news, or all (combine every provided input). Default search.
querystringKeyword for product search, e.g. women shoes.
startUrlsarrayMacy's product/category URLs or Macy's Inc. news URLs. Augments generated inputs.
categoryIdsarrayMacy's category IDs (e.g. 5449). Category URLs are preferred when known.
trendingUrlsarrayTrending / bestseller / curated listing URLs.
newsUrlsarrayMacy's Inc. news listing or article URLs.
includeProductDetailsbooleanWhen true (default), each listing item is enriched with the full product-detail JSON (descriptions, variants, SKUs, galleries). Turn off for faster listing-level output.
maxPagesintegerMax pagination depth per listing/news source. Default 20.
maxResultsintegerCap on output records. 0 = no cap.
minResultsintegerFail the run if fewer records are produced (handy for live smoke tests).
maxRequestsPerCrawlintegerHard cap on total requests. 0 = Crawlee default.
maxConcurrencyintegerConcurrent requests. Default 3.
proxyobjectRequired. Apify Proxy or custom proxy URLs. Residential / country US recommended.

🔗 Supported URL types

TypeExample
Product detailhttps://www.macys.com/shop/product/...?ID=12345678
Category / listinghttps://www.macys.com/shop/womens-clothing/womens-dresses?id=5449
Featured / keyword landinghttps://www.macys.com/shop/featured/dresses
Trendinghttps://www.macys.com/shop/featured/trending-now
News listing (RSS)https://www.macysinc.com/rss/pressrelease.aspx
News articlehttps://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

FieldTypeNotes
typeenumproduct or article.
source.idstringMacy's product ID or article ID.
source.canonicalUrlstringPublic, shopper-facing page URL.
source.retailerstringAlways macys.
source.currencystringUSD.
titlestringProduct name / article headline.
brandstringProduct brand.
descriptionstringFull product description.
categoriesarrayTaxonomy breadcrumb names.
price.sale / list / previousintegerInteger cents (5999 = $59.99).
price.*FormattedstringLocalized display strings ("$59.99").
price.stockStatusenumInStock / LowInStock / OutOfStock / Unknown.
stats.rating / reviewCountnumberAverage overall rating and total review count.
stats.ratingPercentage / recommendedCount / notRecommendedCountnumberRecommend %, and recommend / not-recommend counts.
stats.ratingDistribution[]arrayStar histogram: { rating, count } per star value.
stats.secondaryRatings[]arrayPDP slider ratings (e.g. Length, Coverage, Overall Size): id, label, value, minLabel/maxLabel, range.
details.features[]arrayFeatures / product details bullets.
details.sizeAndFit[]arraySize & Fit bullets (length, fit, silhouette).
details.materialsAndCare[]arrayMaterials & Care bullets (fabric composition, wash/care).
details.specialSizes[] / details.bullets[]arraySize types (e.g. Regular, Petite) and the full combined bullet list.
options[]arrayColor / Size option groups, each value with id, name, and (colors) a swatchIcon.
variants[]arrayOne purchasable SKU per entry: id, sku (UPC barcode), options (color/size), per-SKU price, extraInfo.upc.
medias[]arrayProduct 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. maxConcurrency of 2–3 is the sweet spot. Higher values raise rate-limit rates without improving throughput.
  • Smoke test first. Set maxPages: 1, maxResults: 10, and minResults: 1 to 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 includeProductDetails for 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:

ActorWhat it's for
Sephora Product ScraperBeauty across 29 countries
Ulta Beauty ScraperUS beauty retail — prices, every shade, reviews
Boohoo ScraperFast fashion across 7 regions
Farfetch ScraperLuxury fashion, multi-currency
Lululemon ScraperActivewear catalog and pricing

All of them: apify.com/autofacts