Kohl's Product Scraper
Pricing
from $3.00 / 1,000 dataset items
Kohl's Product Scraper
Scrape Kohl's (kohls.com) products by keyword — title, regular/sale/Your Price, ratings, review counts, SKUs, colors and availability. Clean JSON for Sheets, BI or your CRM. Category browse and full product detail are currently unavailable (blocked by Kohl's). Pay only for the results you get.
Pricing
from $3.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
0
Bookmarked
12
Total users
5
Monthly active users
5 days ago
Last modified
Categories
Share
Extract structured product data from Kohl's (kohls.com) at scale — by keyword. Get titles, full pricing (regular, sale, and Kohl's Your Price), ratings, review counts, SKUs, colors, and availability. Clean JSON, ready for Sheets, BI, or your database.
The core keyword-search path runs on Kohl's own mobile product API, so it is fast and needs no proxy — no browser, no CAPTCHAs, no fragile page scraping.
Current limitation (October 2026): Kohl's Akamai protection now rejects category-browse and product-page requests, even from US residential proxies. Use keyword search, which is unaffected. Category browse fails with a clear error, a product-ID lookup that cannot fetch detail is skipped (nothing is pushed or charged), and Include full detail returns listing data only. This section is updated if Kohl's access changes.
Who it's for
- Price & deal monitoring — track regular vs. sale vs. Your Price across the Kohl's catalog and spot discount cycles.
- Competitive & assortment analysis — monitor pricing, ratings, and product mix for the keywords you track (brand or category names work as keywords).
- E-commerce & PropTech/retail-tech devs — a stable JSON schema for catalogs, comparison tools, and shopping assistants.
- Researchers & analysts — build large, structured Kohl's product datasets for study or modeling.
What you get
Every row is one Kohl's product. Fields marked (detail) require the optional Include full detail toggle; everything else comes from the fast, no-proxy search path.
| Field | Type | Description |
|---|---|---|
web_id | string | Kohl's numeric product ID |
product_id | string | Product ID as prd-<webID> |
title | string | Product title |
brand | string | Brand name (detail) |
url | string | Product page URL |
image / alt_image | string | Product image URLs (Adobe Scene7) |
regular_price | number | Regular (list) price, USD |
sale_price | number | Sale price, USD (when on sale) |
your_price | number | Kohl's "Your Price" promotional price, USD |
final_price | number | Effective price paid: Your Price → sale → regular |
save_amount / save_percent | number | Discount vs. regular price |
price_label / sale_status | string | Price/sale status labels |
on_sale | boolean | Whether the sale price beats the regular price |
your_price_eligible / your_price_label | boolean / string | Your Price eligibility |
coupon_eligible | boolean | Coupon eligibility |
rating | number | Average rating (0–5) |
review_count | integer | Number of customer reviews |
sku_ids | array | SKU IDs for the product's variants |
colors / display_color | array / string | Available colors and displayed color |
swatches | array | Color swatches {color, image} |
variations | string | Variation axes, e.g. SizeAndColor |
available_for_pickup / available_for_ship | boolean | Fulfillment availability |
availability | string | InStock / OutOfStock |
badges | array | Value-added badges |
gender / department / category / subcategory | string | Taxonomy levels (detail) |
breadcrumbs | array | Full breadcrumb trail {name, url} (detail) |
description / description_long | string | Product descriptions (detail) |
source | string | Which input produced the row |
scraped_at | string | ISO-8601 scrape timestamp |
High-value use cases
- Deal & promo tracking — schedule daily runs on your top keywords and diff
final_price,save_percent, andsale_statusto catch price drops as they happen. - Brand & competitor monitoring — follow a brand's Kohl's assortment, pricing, and ratings over time.
- Catalog enrichment — hydrate an internal product catalog with Kohl's images, SKUs, and colors.
- Merchandising research — analyze rating/review signals and Your-Price eligibility across departments.
- Shopping assistants / AI agents — feed a normalized product feed straight into an LLM or MCP client.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | [] | Keywords to search (one search per keyword). The fast, no-proxy path. |
categoryDimensions | array | [] | Facet paths to browse, e.g. Gender:Womens+Department:Clothing. Currently blocked. |
productIds | array | [] | Web IDs or product URLs to fetch full detail for. Currently blocked. |
maxItems | integer | 200 | Global cap on total products pushed. |
maxPagesPerQuery | integer | 5 | Search/category pages per query (120 products/page). |
sort | string | featured | featured, new, bestsellers, priceAsc, priceDesc, rating, percentOff. |
includeDetails | boolean | false | Enrich each product with brand, descriptions, taxonomy. Currently blocked (listing data only). |
proxyConfiguration | object | Apify Residential (US) | Used only for the geo-gated add-ons above. |
Category browse, product-ID detail, and Include full detail read Kohl's US-only pages, so they run through a US residential proxy automatically. Plain keyword search does not.
Example input
{"searchQueries": ["levis jeans", "nike shoes"],"maxItems": 200,"maxPagesPerQuery": 3,"sort": "percentOff","includeDetails": false}
Example output (one row)
{"web_id": "5178","product_id": "prd-5178","title": "Men's Levi's® 505™ Regular Fit Jeans","url": "https://www.kohls.com/product/prd-5178/levis-505-regular-jeans-men.jsp","image": "https://media.kohlsimg.com/is/image/kohls/5178_Sounds_About_Right?wid=180&hei=180&op_sharpen=1","regular_price": 74.95,"sale_price": 52.46,"your_price": null,"final_price": 52.46,"save_amount": 22.49,"save_percent": 30.0,"currency": "USD","sale_status": "Mixed","on_sale": true,"rating": 4.3,"review_count": 11201,"sku_ids": ["05541003", "69338863"],"colors": ["Stonewash", "Black", "Rinse"],"variations": "SizeAndColor","availability": "InStock","source": "search:levis jeans","scraped_at": "2026-08-20T00:00:00+00:00"}
Scheduling & integrations
- Schedule runs (hourly/daily) from the Apify Console to keep price and availability data fresh.
- Webhooks can trigger on run completion to push new data into your systems.
- Export to Google Sheets, Excel, JSON, CSV, or send to Make, Zapier, Airbyte, S3, or a database via the Apify API and integrations.
Use with AI agents (MCP)
This Actor works as a tool for AI assistants through the Apify MCP server. An agent can call it to fetch live Kohl's product data — prices, ratings, availability — and reason over the normalized JSON, no scraping code required.
FAQ
Do I need a Kohl's account or API key? No. The Actor reads publicly available product data.
Do I need a proxy? Not for keyword search — it runs without one. Category browse, product-ID detail, and Include full detail read Kohl's US-only pages and request a US residential proxy, but as of October 2026 Kohl's rejects those requests even from US residential IPs, so they currently do not return data.
How fresh is the data? It's fetched live on every run. Schedule the Actor to keep your dataset current.
How many products can I get? Use maxItems and maxPagesPerQuery to control volume. Keyword search paginates automatically.
Which fields need Include full detail? Brand, descriptions, and taxonomy (gender/department/category/subcategory, breadcrumbs). Prices, ratings, SKUs, colors, and availability are always included. Detail enrichment is optional and best-effort — Kohl's currently blocks product pages, so these fields are empty and the run's status message says how many rows are listing-only. The core product data is always returned.
Is scraping Kohl's legal? The Actor collects only publicly accessible data. You are responsible for using the data in line with applicable laws, Kohl's terms, and your jurisdiction.
Something broke or you need a new field? Open an issue on the Actor's page — reliability and schema stability are the priority.