# Macy's Product Scraper (`sian.agency/macys-product-scraper`) Actor

Extract Macy's products at scale — prices, discounts, brands, ratings, images, sizes, colors and per-SKU variants. Browse the full catalog or fetch specific products by URL.

- **URL**: https://apify.com/sian.agency/macys-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 product extracteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Macy's Product Scraper — Prices, Brands & Ratings to JSON/CSV 🛍️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Walmart Data Scraper](https://img.shields.io/badge/Store-Walmart%20Data%20Scraper-0071CE)](https://apify.com/sian.agency/walmart-data-scraper?fpr=sian) [![Lowe's Product Scraper](https://img.shields.io/badge/Store-Lowe's%20Product%20Scraper-004990)](https://apify.com/sian.agency/lowes-product-scraper?fpr=sian) [![Best Buy Product Scraper](https://img.shields.io/badge/Store-Best%20Buy%20Product%20Scraper-FFE000)](https://apify.com/sian.agency/best-buy-product-scraper?fpr=sian)

#### 🎉 Turn the Macy's catalog into a clean dataset — prices, brands, ratings, sizes, colors and full variant tables in a single run.

##### Built for pricing analysts, competitor-monitoring teams, ecommerce sellers and retail researchers who need dependable Macy's data without building a scraper.

***

### 📋 Overview

**The Macy's Product Scraper turns macys.com into structured data in seconds.** Browse the entire product catalog, narrow it with a keyword, or paste specific product URLs — and get a clean JSON/CSV dataset with one row per product: prices and discounts, brand, ratings and review breakdowns, images, sizes, colors and per-SKU variants.

No account, no API key, no setup. Enter what you want, click Run, and download export-ready data.

**Why professionals choose us:**

- ✅ **Zero Setup**: No Macy's account or API key — pick a mode and go
- 🗂️ **Whole-Catalog Access**: Walk the entire product feed — competitors cap out at their first result pages
- 🔗 **Bulk By-URL Mode**: Paste product URLs or IDs and get exactly those products back
- 💰 **Pay-Per-Result Pricing**: Pay only for products you actually receive — free tier to test risk-free
- 💎 **One Clean Record Per Product**: Pricing, media, ratings and variants merged into a single row
- ⚡ **Fast**: roughly 25 products per second, so large pulls finish in minutes

***

### ✨ Features

| Feature | What you get |
|---|---|
| 🗂️ **Catalog mode** | Walk the Macy's product feed and pull as many products as you need |
| 🔎 **Keyword filter** | Narrow the catalog to matching products, e.g. `dress`, `sneaker`, `handbag` |
| 🔗 **Products mode** | Supply product URLs or numeric IDs for a precise, repeatable pull |
| 💵 **Full pricing** | Current price, original price, percent off, on-sale flag and promotion end date |
| ⭐ **Ratings** | Average rating, review count and the per-star breakdown |
| 🧬 **Variants** | Per-SKU colors, sizes, prices and availability |
| 🖼️ **Media** | Full product image galleries |
| 📊 **Clean exports** | JSON, CSV, Excel, XML — straight from the Apify Console or API |

***

### 🚀 Getting Started (3 Simple Steps)

1. **Choose a mode** — `Catalog` to browse the feed, or `Products` to fetch specific items.
2. **Set your scope** — add a keyword and a max-products limit, or paste your product URLs.
3. **Click Run** — download the dataset as JSON, CSV or Excel when the run finishes.

***

### 📥 Input Configuration

| Field | Type | Description |
|---|---|---|
| `scrapeMode` | string | `catalog` (browse the feed) or `products` (by URL/ID). Default `catalog`. |
| `keyword` | string | Optional. Catalog mode only — keeps products whose page URL contains this word. |
| `productUrls` | array | Products mode only. Macy's product URLs containing `?ID=`, or bare numeric IDs. |
| `maxResults` | integer | Max products to return. Free-plan runs are capped at 25. Default 100. |

**Catalog mode — 200 dresses:**

```json
{
  "scrapeMode": "catalog",
  "keyword": "dress",
  "maxResults": 200
}
```

**Products mode — specific items:**

```json
{
  "scrapeMode": "products",
  "productUrls": [
    "https://www.macys.com/shop/product/womens-dot-mini-dress?ID=22430669",
    "19711485"
  ]
}
```

***

### 📤 Output

One row per product:

```json
{
  "product_id": "22430669",
  "url": "https://www.macys.com/shop/product/womens-34-sleeve-dot-mini-dress?ID=22430669",
  "name": "Women's 3/4-Sleeve Dot Mini Dress",
  "brand": "Tribesigns",
  "price": 178.82,
  "original_price": 223.52,
  "price_formatted": "$178.82",
  "percent_off": 20,
  "currency": "USD",
  "on_sale": true,
  "sale_ends": null,
  "rating": 4.5,
  "review_count": 128,
  "ratings_breakdown": { "5": 90, "4": 22, "3": 9, "2": 4, "1": 3 },
  "product_type": "Dresses",
  "department": "Women",
  "division": "Ready-to-Wear",
  "in_stock": true,
  "colors": ["Black", "Navy"],
  "color_count": 2,
  "sizes": ["XS", "S", "M", "L"],
  "variants": [{ "color": "Black", "size": "M", "price": 178.82, "available": true }],
  "images": ["https://slimages.macysassets.com/is/image/MCY/products/..."],
  "image_count": 6,
  "description": "A dot-print mini dress with three-quarter sleeves…",
  "specs": ["Polyester", "Machine washable"],
  "source": "detail",
  "processedAt": "2026-08-03T18:42:11.204Z",
  "scrapingDate": "2026-08-03",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

- **Competitive pricing** — track Macy's prices and discounts against your own catalog
- **Assortment research** — see which brands, colors and sizes Macy's carries in a category
- **Promotion monitoring** — capture on-sale flags, percent-off and promotion end dates
- **Review intelligence** — mine ratings and per-star breakdowns for product-quality signals
- **Catalog enrichment** — fill in images, specs and variant tables for products you resell

***

### 🤖 Use with AI agents

```
Use the Macy's Product Scraper on Apify to collect Macy's products.
Set scrapeMode to "catalog", keyword to "handbag", and maxResults to 100.
Return each product's name, brand, price, original_price, percent_off and rating,
then rank them by percent_off descending and summarise the ten deepest discounts.
```

***

### 📊 Performance & Pricing

- **Throughput**: roughly 25 products per second
- **Pricing**: pay-per-result — you are charged per product delivered to your dataset
- **Free plan**: capped at 25 products per run so you can evaluate the output first
- **No extra costs**: no proxy add-ons or third-party unblocking services required

***

### ❓ Frequently Asked Questions

**Do I need a Macy's account or API key?**
No. Choose a mode and run it.

**Can I search Macy's by keyword?**
Yes, with a caveat worth knowing: Macy's does not expose a public search endpoint, so the `keyword`
filter matches against product page URLs rather than running a true site search. It works well for
category-style words (`dress`, `sneaker`, `handbag`) and less well for very specific phrases.

**Can I pull the entire catalog?**
Yes. Catalog mode walks the full product feed. Set `maxResults` to the number of products you want.

**Why did I get fewer products than I asked for?**
Some products in the feed are discontinued or region-restricted and return no data. Those are
counted as failed/unavailable in the run log rather than billed.

**What formats can I export?**
JSON, CSV, Excel and XML, via the Apify Console or API.

***

### ⚖️ Disclaimer

This actor collects publicly available information from macys.com. It is not affiliated with,
endorsed by, or sponsored by Macy's, Inc. *Macy's* and all related marks are trademarks of their
respective owners and are used here only to describe what this tool does. Users are responsible for
ensuring their use of the collected data complies with applicable laws, regulations and the target
site's terms of service.

# Actor input Schema

## `scrapeMode` (type: `string`):

Catalog browses Macy's full product feed (optionally narrowed by keyword). Products fetches only the product URLs or IDs you supply.

## `keyword` (type: `string`):

Optional. Narrows the catalog to products whose page URL contains this word, e.g. "dress", "sneaker", "handbag". Leave empty to browse everything. Ignored in Products mode.

## `productUrls` (type: `array`):

Macy's product page URLs (containing ?ID=) or bare numeric product IDs. Required when Scrape Mode is Products.

## `maxResults` (type: `integer`):

Maximum number of products to return in this run. Free-plan runs are capped at 25.

## Actor input object example

```json
{
  "scrapeMode": "catalog",
  "keyword": "dress",
  "productUrls": [
    "https://www.macys.com/shop/product/womens-dot-mini-dress?ID=22430669",
    "19711485"
  ],
  "maxResults": 100
}
```

# Actor output Schema

## `macysProducts` (type: `string`):

Structured product records with prices, brands, ratings, images, sizes, colors and variants

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "scrapeMode": "catalog",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/macys-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "scrapeMode": "catalog",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/macys-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "scrapeMode": "catalog",
  "maxResults": 100
}' |
apify call sian.agency/macys-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,sian.agency/macys-product-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/uITnTTJ4nLYnd6NNv/builds/3o6BBoqEiV02U3SE4/openapi.json
