Scraper les prix, paliers de promotion et stock en magasin de Kohl’s
Prix normal, prix promotionnel, la promotion qui s’applique, l’éligibilité Kohl’s Cash et la disponibilité en retrait par ZIP depuis kohls.com. Sans browser.
Mesuré sur Crawlbase
99.0% de réussite en August 2026. Kohl’s se trouve dans le tier complexe : il oppose un challenge aux récupérations simples, et Crawlbase le franchit pour vous, ce qui explique qu’une page coûte deux crédits et ne nécessite toujours aucun browser de votre côté. 1.3% des appels réussis ont utilisé le token JavaScript.
L’appel
# Product page, rendered HTML curl "https://api.crawlbase.com/?token=YOUR_TOKEN&country=US&url=https%3A%2F%2Fwww.kohls.com%2Fproduct%2Fprd-6248533%2Fsonoma-goods-for-life-mens-supersoft-crewneck-tee.jsp" # Same page, stock for the store nearest a ZIP curl "https://api.crawlbase.com/?token=YOUR_TOKEN&country=US&cookies=zipCode%3D60601&url=https%3A%2F%2Fwww.kohls.com%2Fproduct%2Fprd-6248533%2Fsonoma-goods-for-life-mens-supersoft-crewneck-tee.jsp"
from crawlbase import CrawlingAPI api = CrawlingAPI({'token': 'YOUR_TOKEN'}) r = api.get('https://www.kohls.com/product/prd-6248533/sonoma-goods-for-life-mens-supersoft-crewneck-tee.jsp', {'country': 'US', 'cookies': 'zipCode=60601'}) html = r['body'] # prices live in the productV2JsonData script tag
const { CrawlingAPI } = require('crawlbase'); const api = new CrawlingAPI({ token: 'YOUR_TOKEN' }); const r = await api.get('https://www.kohls.com/product/prd-6248533/sonoma-goods-for-life-mens-supersoft-crewneck-tee.jsp', { country: 'US', cookies: 'zipCode=60601' }); const state = JSON.parse(r.body.match(/productV2JsonData\s*=\s*(\{.*?\});/s)[1]);
Les paramètres qui comptent
| Paramètre | Valeur | Pourquoi |
|---|---|---|
country | US | Kohl’s sert une page de blocage aux sorties hors États-Unis. Définissez-le sur chaque appel. |
javascript | laisser vide | Les prix, le palier de promotion et le texte promo sont dans un bloc JSON dans le HTML. Presque chaque appel réussi du mois mesuré a tourné sans browser. |
cookies | zipCode=<zip> | Définit le magasin utilisé pour la disponibilité en retrait. Sans lui vous obtenez la valeur nationale par défaut, qui n’est pas une réponse de stock. |
autoparse | pas encore | Pas de scraper dédié. Le JSON embarqué est stable et les champs ci-dessous en découlent directement. |
Les champs que vous obtenez, depuis le JSON embarqué
stringstringnumbernumber | nullstringbooleanstringstringobjectnumberCe qui casse, et la solution
WS=, pas par numéro de page. Le décalage est le nombre d’articles déjà vus, par pas de 48. Un mauvais pas renvoie à nouveau la première page et vous croirez que la catégorie compte 48 articles.Lancez-la de façon planifiée
Une veille de prix quotidienne sur 50 000 produits représente 100 000 crédits par jour à deux crédits la page. Utilisez le Crawler pour lisser les pics et passez le ZIP en cookie par job quand vous suivez le stock par magasin.
Questions
Pourquoi une page Kohl’s coûte-t-elle deux crédits ?
Kohl’s est dans le tier complexe. Crawlbase franchit son challenge anti-bot pour vous ; le prix reflète ce travail, et il ne nécessite toujours aucun browser.
Puis-je obtenir le stock en magasin ?
Oui. Passez cookies=zipCode=<zip> et lisez storeAvailability dans le JSON embarqué.