Skip to content
    ↑↓ to choose · Enter to open

    · 15 min read

    Macy's Scraper: Up to 1,000 Free Results a Month (2026)

    By CrawlerBros Engineering Team

    Macy's Scraper extracts 28 product detail fields including every color and size variant, SKU, and stock status. A thousand results cost $5.00 on the free-plan price, and the data includes deep attributes like breadcrumbs, material features, and aggregate rating distributions. This collector operates across search queries, department listings, and individual product ID lookups without requiring a login or API key. It is built for retail analysts who need to monitor catalog markdowns or inventory levels, but it is not for those requiring customer shipping addresses or private buyer data.

    Try it: open Macy's Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Macy's Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Macy's Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 50, so a first run returns at most 50 results and costs at most $0.25 in result charges. That is enough to see the real shape of the data before deciding anything.

    Macy's Scraper was last updated on 2026-08-10. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 716,703 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Macy's Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The maxItems control has the most significant impact on your bill because it directly sets the number of results charged. To verify your data quality at a low cost, use the example input which caps the run at 50 results for a maximum charge of $0.25. This allows you to check the productDetail output before scaling to larger batches.

    How do you run Macy's Scraper from the API?

    The schema marks 1 of its 13 controls as required: mode. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~macys-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search","searchQuery":"womens dresses","productIds":[],"sortBy":"ORIGINAL","onSaleOnly":false,"excludeSponsored":false,"includeReviews":false,"maxItems":50}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search",
      "searchQuery": "womens dresses",
      "productIds": [],
      "sortBy": "ORIGINAL",
      "onSaleOnly": False,
      "excludeSponsored": False,
      "includeReviews": False,
      "maxItems": 50
    }
    
    run = client.actor("crawlerbros~macys-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search",
      "searchQuery": "womens dresses",
      "productIds": [],
      "sortBy": "ORIGINAL",
      "onSaleOnly": false,
      "excludeSponsored": false,
      "includeReviews": false,
      "maxItems": 50
    }
    
    const run = await client.actor('crawlerbros~macys-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

    Which Macy's Scraper inputs matter, and which can you skip?

    The mode control is the only required field and dictates whether the Actor searches by keyword, browses a category, or fetches specific IDs. Most users should focus on the productIds or categoryPath settings and leave advanced filters like minRating or excludeSponsored at their defaults for the first run.

    • mode (string): What to fetch. Default: "search".
    • searchQuery (string): Free-text keyword search (mode=search), e.g. womens dresses, running shoes, mens suit. Default: "womens dresses".
    • productIds (array): Macy's numeric product IDs (e.g. 20663500) or full product page URLs. Default: [].
    • sortBy (string): Sort order for listing results. Default: "ORIGINAL".
    • onSaleOnly (boolean): Only emit products that are currently discounted from an original price. Default: false.
    • excludeSponsored (boolean): Macy's interleaves paid-placement ("featured") tiles into search/category listings that ignore the requested sort order (e.g. a pricier sponsored item can appear mid-way through a Price: Low to High sort). Enable to drop these and keep only organically-ranked/sorted results. Default: false.
    • includeReviews (boolean): When true, product mode also emits a reviews[] array (author, date, title, text, rating) parsed from the product page's review data. Off by default to keep records compact. Default: false.
    • maxItems (integer): Hard cap on emitted records. Default: 50.
    • categoryPath (string): A Macy's category/department path. Pick a common one from the dropdown-style examples below, or paste any macys.com/shop/... category URL / path.
    • minPrice (integer): Drop products priced below this amount.
    • maxPrice (integer): Drop products priced above this amount.
    • minRating (integer): Drop products with a review rating below this value.

    The other 1 controls, with their defaults, are listed in the input schema on Macy's Scraper on Apify.

    Fixed-choice controls: mode accepts search (Search products by keyword), category (Browse a department/category listing), product (Lookup full product detail by ID); categoryPath accepts 12 values, including womens-clothing (Women's Clothing), womens/clothing/dresses?id=5449 (Women's Dresses), mens-clothing (Men's Clothing), mens/clothing/shirts?id=20626 (Men's Shirts); sortBy accepts ORIGINAL (Featured Items), PRICE_LOW_TO_HIGH (Price: Low to High), PRICE_HIGH_TO_LOW (Price: High to Low), TOP_RATED (Customers' Top Rated), BEST_SELLERS (Best Sellers), NEW_ITEMS (New Arrivals).

    What does Macy's Scraper return?

    The returned records are excellent for inventory tracking and competitive pricing because they include variant-level SKU data and live discount percentages. The output does not contain any sensitive customer information or internal Macy's logistics data.

    Output per product (search / category mode)

    • productId - Macy's numeric product ID
    • title, brand
    • url - canonical product page URL
    • imageUrl
    • price, currency, originalPrice, discountPercent (when on sale)
    • ratingValue, reviewCount
    • badge - promotional tag shown on the listing tile (e.g. Clearance, Limited-Time Special, Today Only), when present
    • promoBadge - loyalty/rewards promo text shown on the listing tile (e.g. $10 Star Money per $50), when present
    • isSponsored - true if this is a paid-placement tile Macy's inserts into the listing grid out of the requested sort order
    • sourceMode, sourceQuery - which mode/query produced this record
    • sourceUrl - the listing page URL this record was found on
    • recordType: "product", scrapedAt

    Output per product (product mode - full detail)

    • productId, title, brand, category, description
    • breadcrumbs[] - full category navigation trail (e.g. ["Women's Fashion, Shoes & Accessories", "Flats"]), more granular than category
    • features[] - bulleted product detail specs from the page (material, closure type, fit, care instructions, style number), when present
    • images[], imageUrl (first image)
    • variants[] - each with sku, color, size, price, inStock
    • colors[], sizes[] - unique lists across all variants
    • minPrice, maxPrice, price (= minPrice), currency
    • originalPrice, discountPercent - pre-sale price and markdown %, when the product is discounted
    • inStock - true if any variant is in stock
    • ratingValue, reviewCount
    • ratingDistribution[] - per-star review-count breakdown, each {stars, count} (5-star down to 1-star), when reviews exist
    • fitInsights[] - crowd-sourced fit ratings, each {aspect, rating} (e.g. {"aspect": "Runs narrow/runs wide", "rating": "Neutral"}), when enough reviews carry fit data (mostly footwear/apparel)
    • reviews[] - (only when includeReviews=true) each with author, date, title, text, ratingValue, bestRating
    • url, sourceUrl - canonical product page URL
    • recordType: "productDetail", scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Macy's Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set the mode to product if you have a list of numeric IDs, or use search to query by keywords like womens dresses.
    2. Run a test with maxItems set to 10 to check that the returned price and title fields align with your target listings.
    3. Filter results using onSaleOnly if your project requires only items with a discountPercent value.
    4. Switch to category mode and paste a macys.com/shop/ category URL into the categoryPath field to browse specific departments.
    5. Enable includeReviews when in product mode to populate the reviews array with author and text data.
    6. Review the isSponsored field in listing results to determine if you need to set excludeSponsored to true for organic ranking.
    7. Check the variants array in the product detail output to ensure every color and size SKU is captured for your inventory analysis.
    8. Scale your task by increasing maxItems up to the 1,000 limit after confirming the first batch meets your quality requirements.

    How do you apply it? Three worked playbooks

    These are Macy's Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Price monitoring

    Outcome: Track sale prices and discount percentages over time

    Configure: Set mode to "product" and list target numeric IDs in productIds. Set onSaleOnly to false and includeReviews to false.

    Working method: Run the Actor daily for a static list of productIds to capture the current price and originalPrice. Compare the scrapedAt timestamp with previous runs to identify when a discountPercent first appears. Look for changes in the price field while originalPrice remains static to detect temporary markdowns.

    Deliverable: A time-series dataset of Macy's product prices including any active discount percentages and stock status.

    Stop condition: The price field is consistently missing from products that are known to be active on the website.

    Use case 2: Assortment research

    Outcome: Pull a full department listing to analyze brand mix and pricing

    Configure: Set mode to "category" and choose a path like "womens-clothing" in categoryPath. Set maxItems to 1000 and sortBy to "BEST_SELLERS".

    Working method: Start by fetching a broad category to establish the brand landscape. Aggregate the brand field across the entire dataset to calculate the percentage of total listings each brand occupies. Use the price field to segment the assortment into price tiers and identify gaps in the competitor's catalog.

    Deliverable: A CSV or JSON file containing up to 1,000 products from a specific Macy's department, categorized by brand and price point.

    Stop condition: The result set returns fewer than 50 items for a major department like Shoes or Home.

    Use case 3: Product data enrichment

    Outcome: Resolve a list of product IDs into full variant/SKU-level catalog data

    Configure: Set mode to "product" and include multiple URLs in productIds. Set includeReviews to true and maxItems to 500.

    Working method: Supply a list of specific product URLs to the productIds array. Examine the variants array in the output to collect every combination of color and size available for each ID. Map the features array to your internal database to fill in material and care instruction attributes.

    Deliverable: A detailed catalog extract including SKU-level variants, bulleted product features, and customer review distributions.

    Stop condition: The variants array is empty for more than half of the productDetail records processed.

    What breaks, and how do you design around it?

    If you hit the 1,000 item limit on a single run, you can continue by creating multiple runs with different price filters using minPrice and maxPrice. For large lists of product IDs, split them into several runs to ensure each finishes within a standard timeframe.

    When should you not use Macy's Scraper?

    Do not use this Actor if you need data from multiple retailers in a single interface; instead, use Gap Inc Scraper (Gap, Old Navy, Banana Republic, Athleta) if your research extends to competing apparel brands. If your focus is exclusively on high-end kitchenware, Sur La Table Kitchenware Scraper provides a more targeted dataset for that niche. This tool is also inappropriate for sentiment analysis projects that require thousands of years of historical reviews, as it only fetches the reviews currently displayed on the public product pages. If you require private account data or order history, this public-facing scraper will not meet your needs as it requires no login.

    What should you check before trusting the output?

    • Ensure the price field is a positive number and never null.
    • Confirm the discountPercent field exists whenever originalPrice is higher than the current price.
    • Check that the variants array in productDetail records contains at least one object with a valid sku.
    • Verify that sourceMode matches the input setting for every record in the dataset.
    • Alert if the ratingValue is outside the 0 to 5 range for any product with reviews.
    • Stop the run if more than 20 percent of records are missing the title or brand fields.

    None of this proves a record is correct. It gives a scheduled Macy's Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What is the free-plan price for 1,000 results?

    The free-plan price is $5.00 per 1,000 results, which breaks down to $0.005 per result. This cost applies only to results successfully written to your dataset. Note that Apify's free plan includes $5.00 of monthly usage, which effectively covers your first 1,000 results every month without requiring a credit card, though standard platform usage charges still apply.

    Does this Actor return individual SKU data for colors and sizes?

    Yes, when you use the product mode, the Actor fetches the full variant array for each item. This includes specific data for every color and size combination, such as the unique SKU, the current stock status, and the individual price for that variant. This is more detailed than search or category modes, which only return the base product summary.

    Can I filter for only items that are currently on sale?

    Yes, you can enable the onSaleOnly toggle in the input settings. When this is active, the scraper will only return products that feature a discount from their original price. The resulting records will include specific fields like originalPrice and discountPercent to help you calculate the exact markdown for your price monitoring reports.

    Do I need to provide proxies or cookies to run this?

    No, you do not need to provide proxies, cookies, or a Macy's login. The Actor is designed to access Macy's public website directly. It handles request pacing internally to maintain reliability without additional configuration from the user. This makes it a straightforward choice for developers who want to avoid the complexity of session management or proxy rotation.

    How can I search for products within a specific price range?

    You can use the minPrice and maxPrice input controls to define a price window in USD. This is particularly useful when you are trying to bypass the 1,000 item limit by splitting a large category into smaller price-based segments. The Actor will drop any products outside your specified range before writing them to the final dataset.

    Where to go next

    When you are ready to run it, open Macy's Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Macy's Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    • Sur La Table Kitchenware Scraper: Scrape Sur La Table (surlatable.com) kitchenware.
    • Uniqlo Product Scraper: Scrape UNIQLO.com product catalog - search by keyword, browse by category, or fetch full product detail by product ID.
    • Foot Locker Product Scraper: Scrape live sneaker, apparel, and accessory listings from Footlocker.com - search by keyword, browse by department/category or brand, or look up full product detail (price, rating, colors, images) by URL.
    • Gap Inc Scraper (Gap, Old Navy, Banana Republic, Athleta): Scrape live product listings across Gap Inc's apparel & home-goods brands - Gap, Gap Factory, Old Navy, Banana Republic, and Athleta.
    • Party City Scraper: Scrape party supplies, balloons, costumes, and seasonal decor from partycity.com.
    • ChicMe Scraper: Scrape ChicMe.com - search products, browse categories/collections with sorting, list all categories, or fetch full product detail by handle.
    • Shein Product Scraper: Scrape product details from Shein (us.shein.com) by direct product URL.
    • Rent the Runway Scraper: Scrape Rent the Runway (renttherunway.com) - browse by category (dresses, tops, accessories, and more) or search by keyword, filter by designer, occasion, color, price, and size.

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-01.

    • Actor last updated by its maintainers on 2026-08-10.

    • Run outcome figures cover the 30 day public window ending 2026-10-01.

    • Macy's Scraper on Apify

    Featured actors

    Macy's Scraper

    Scrape Macy's (macys.com) - search products by keyword, browse department/category listings, or fetch full product detail (variants, prices, sizes, colors, images, ratings) by product ID. No login, cookies, or API key required.

    Run on Apify ↗