Tony Wang6 Min. LesezeitSo scrapst du Macy's 2026 (API & Python)
Macy's-Produktdetails 2026 scrapen — sale-aware Pricing, Verfügbarkeit, Bilder und Farbvarianten-Preise als JSON — DIY, No-Code oder API.
Am schnellsten scrapst du Macy's 2026, indem du eine strukturierte API aufrufst, die normalisiertes JSON für Produktdetails liefert — sale-aware Pricing, Verfügbarkeit, Bilder, aggregiertes Rating und den eigenen Preis jeder Farbvariante —, statt Macy's Produktseiten selbst zu parsen. Macy's, Teil von Macy's, Inc. (zu dem auch Bloomingdale's gehört), hat keine öffentliche Self-Service-API, und die Produktdaten sind häufig so stark von Sales und Farbe abhängig, dass ein einzelnes flaches „price"-Feld den Großteil des Bilds verfehlt. Dieser Guide behandelt alle drei Ansätze, was jeder liefert, wo DIY scheitert, und die rechtlichen Grundlagen — bewusst eingegrenzt: Das ist ein Guide zu Produktdetails, kein Guide zu Suche oder Kategorie-Browsing.
Warum Macy's scrapen?
Macy's Produktdaten treiben an:
- Sale- und Markdown-Tracking — Macy's Preisgestaltung läuft über häufige Sales, daher zeigt das Verfolgen des sale-aware Preises eines Produkts über die Zeit echte Markdown-Muster, nicht nur einen statischen Listenpreis.
- Farbvarianten-Preisrecherche — derselbe Style kann je nach Farbe einen anderen Preis tragen; Preise pro Variante zeigen dir, welche Farbtöne reduziert sind und welche nicht.
- Sortiments- und Marken-Recherche — Department-, Division- und Kategorie-Breadcrumb-Felder an einem Produkt platzieren einen Artikel innerhalb von Macy's eigener Merchandising-Struktur.
- Review- und Rating-Analyse — aggregierte Rating-Daten pro Produkt unterstützen Sentiment-Tracking für einen Style oder eine Marke.
- Verfügbarkeits-Monitoring — prüfen, ob ein bestimmtes Produkt auf Lager ist, bevor es ausverkauft ist.
Ist es legal, Macy's zu scrapen?
Option 1: DIY in Python (und warum das scheitert)
Macy's Produktseiten rendern aus serverseitigen Daten statt aus einem stabilen öffentlichen JSON-Endpoint, daher muss ein DIY-Scraper die gerenderte Seite abrufen und parsen:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.macys.com/shop/product/example-product?ID=1234567",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Sale pricing, per-color-variant price, availability, and rating are
# embedded in page data, not consistently exposed as selectable markup
Es funktioniert in der Demo und geht dann kaputt:
- Keine offizielle Third-Party-API. Macy's hat kein Self-Service-Entwicklerprogramm — es gibt keinen sanktionierten Weg, über den ein außenstehender Entwickler programmatischen Zugriff anfragen kann.
- Bot-Abwehr sitzt vor der Seite. Ein routinemäßiger, unauthentifizierter Request kann geblockt oder herausgefordert werden, und ein browserbasierter Scraper braucht laufende Pflege, sobald sich die Abwehr aktualisiert.
- Pricing ist sale-aware und farbabhängig, nicht ein einzelnes Feld. Der Preis eines Produkts ändert sich mit aktiven Sales, und unterschiedliche Farbvarianten desselben Styles tragen regelmäßig unterschiedliche Preise — ein einzelner
price-Scrape verfehlt beides. - Kein Such- oder Kategorie-Endpoint, auf den man sich stützen kann, selbst bei einem DIY-Build. Es gibt keine dokumentierte, stabile Möglichkeit, Macy's Katalog nach Stichwort oder Kategorie zu enumerieren — du brauchst weiterhin eine Produkt-ID als Ausgangspunkt von einer Produktseite.
Option 2: No-Code-Tools
Marketplace-Scraper-Actors für Macy's gibt es, und sie eignen sich für einen einmaligen Abzug einer kurzen, bekannten Liste von Produkt-IDs, aber sie erben dieselbe Anti-Bot-Fragilität wie DIY und liefern dir kein stabiles, versioniertes Schema — oder sale-aware Pricing pro Variante — auf dem du eine Pipeline aufbauen kannst.
Option 3: Eine strukturierte Macy's-API
Crawloras Macy's API deckt Produktdetails ab: sale-aware Pricing, Verfügbarkeit, Bilder, aggregiertes Rating und den eigenen Preis jeder käuflichen Farbvariante, geliefert als normalisiertes JSON. Sie deckt nur Produktdetails ab — es gibt keinen Such- oder Kategorie-Listing-Endpoint —, daher startest du mit einer Produkt-ID, die du aus dem ?ID=-Query-Parameter einer Macy's-Produktseiten-URL beziehst, nicht aus einem API-Call:
curl "https://api.crawlora.net/api/v1/macys/product/1234567" \
-H "x-api-key: $CRAWLORA_API_KEY"
In Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/macys"
# productId comes from a Macy's product page URL's ?ID= query parameter —
# Crawlora's Macy's coverage has no search endpoint to resolve it for you
product_id = "1234567"
detail = requests.get(f"{base}/product/{product_id}", headers=h).json()["data"]
Eine Produktdetail-Response ist normalisiertes JSON (prüfe die docs für das vollständige Schema):
{
"code": 200,
"msg": "OK",
"data": {
"product_id": "1234567",
"name": "Women's Quilted Puffer Coat",
"brand": "Calvin Klein",
"department": "Women",
"division": "Coats",
"breadcrumbs": ["Women", "Clothing", "Coats", "Puffer Coats"],
"price": {
"current": 89.99,
"regular": 150.00,
"on_sale": true
},
"availability": "in_stock",
"rating": {
"average": 4.3,
"count": 212
},
"images": [
"https://slimages.macysassets.com/is/image/MCY/products/1/optimized/example_fpx.jpg"
],
"variants": [
{ "color": "Black", "price": 89.99, "available": true },
{ "color": "Camel", "price": 99.99, "available": true },
{ "color": "Navy", "price": 89.99, "available": false }
]
}
}
Speichere eine Zeile pro product_id und lass es nach Zeitplan erneut laufen, um price.current, price.on_sale und den Preis sowie das available-Flag jeder Variante über die Zeit zu verfolgen.
Was du sammeln kannst
Öffentliche Produktseitendaten zu einer bekannten Produkt-ID: Name, Marke, Department, Division und Kategorie-Breadcrumb; sale-aware Pricing (current, regular, on_sale); Verfügbarkeit; Bilder; aggregiertes Rating (average, count); und jede käufliche Farbvariante mit eigenem Preis und eigener Verfügbarkeit. Nur öffentliche Produktdetaildaten — kein Such- oder Kategorie-Listing-Endpoint, und niemals Konto-, Bestell- oder Zahlungsinformationen.
Grenzen und typische Herausforderungen
- Keine Such- oder Kategorie-Listing-Abdeckung. Das ist ausschließlich ein Produktdetail-Endpoint — du brauchst eine Produkt-ID, bevor du ihn aufrufen kannst. Beziehe IDs aus Macy's Produktseiten-URLs (dem numerischen
?ID=-Query-Parameter), nicht aus einem Crawlora-Suchaufruf. - Keine offene Self-Service-API. Macy's hat kein offizielles Entwicklerprogramm für externen Zugriff — es gibt keinen sanktionierten Kanal, um ihn anzufragen.
- Bot-Abwehr am Edge. Rechne mit Herausforderungen bei naiven oder hochvolumigen automatisierten Requests direkt an macys.com.
- Pricing ist sale-getrieben und farbabhängig. Der Preis eines Produkts verschiebt sich mit aktiven Sales, und unterschiedliche Farbtöne können unterschiedliche Preise tragen — behandle
price.currentpro Variante als die echte Zahl, nicht einen einzelnen Preis auf Produktebene. - Kein landesweiter Bulk-Export. Es gibt keinen offiziellen Feed von Macy's vollständigem Katalog, und ohne einen Such-Endpoint ist die Abdeckung auf die Produkt-IDs beschränkt, die du bereits hast.
- Nur öffentliche Daten. Das ist, was eine Produktseite ohnehin öffentlich zeigt — niemals ein Weg um einen Login herum oder in kontobezogene Daten hinein.
Wo das eingesetzt wird
- Markdown-Tracking —
price.currentundprice.on_salebestimmter Styles über Macy's häufige Sale-Zyklen hinweg im Blick behalten. - Farbvarianten-Preisrecherche — Preis und Verfügbarkeit pro Farbe innerhalb eines Styles vergleichen, um zu erkennen, welche Farbtöne reduziert sind.
- Sortiments-Mapping —
department,divisionund Breadcrumb-Felder nutzen, um verfolgte Produkte innerhalb von Macy's Merchandising-Struktur zu platzieren.
Sources
Leg los mit dem Sammeln
Probier es zuerst kostenlos aus: jage eine beliebige öffentliche URL durch den Free Web Scraper, oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste den Product-Endpoint im Playground, sieh dir das Schema in den API docs an und wirf einen Blick aufs pricing. Für dasselbe Big-Box-Muster aus Suche und Detail bei einer anderen Kette siehe how to scrape Target; für den nächstliegenden General-Merchandise-Wettbewerber siehe how to scrape Walmart; und für einen weiteren Kaufhaus-Katalog siehe how to scrape Kohl's. Siehe auch how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Kann ich Macy's-Produkte über eine API suchen?
Nicht direkt — Crawloras Macy's-Abdeckung umfasst nur Produktdetails (/macys/product/{productId}), bislang ohne Such- oder Kategorie-Listing-Endpoint. Beziehe productId-Werte aus Macy's-Produktseiten-URLs (dem numerischen ?ID=-Query-Parameter) statt aus einem Crawlora-Suchaufruf.
Erkennt der Macy's-Product-Endpoint Sale-Preise?
Ja — /macys/product/{productId} liefert sale-aware Pricing zusammen mit Verfügbarkeit, Bildern, einem aggregierten Rating und jeder käuflichen Farbvariante mit eigenem Preis.