# Kohls Scraper (`lexis-solutions/kohls-scraper`) Actor

Kohl’s Scraper for Apify extracts product data from Kohls.com search, category, and product pages, including prices, availability, ratings, SKUs, brands, and taxonomy. Ideal for price monitoring, competitor analysis, and ecommerce research.

- **URL**: https://apify.com/lexis-solutions/kohls-scraper.md
- **Developed by:** [Lexis Solutions](https://apify.com/lexis-solutions) (community)
- **Categories:** E-commerce, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 1,000 products

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Kohl's.com Product Scraper

![banner](https://i.ibb.co/9H2yJM57/Screenshot-2026-04-21-at-12-06-04-PM.png)

---

Kohl's (`kohls.com`) is a major US department store retailer carrying clothing, footwear, home goods, beauty, and accessories from hundreds of brands. With millions of monthly visitors, Kohl's product pages include multi-tier pricing (regular, sale, and Your Price), detailed taxonomy, customer ratings, and SKU-level variant data.

### Introduction

This Apify scraper extracts structured product data from Kohl's.com. Given a search URL, category page, or direct product URL, it collects detailed information including title, brand, description, pricing, availability, customer ratings, SKUs, category taxonomy, and breadcrumb hierarchy — without requiring any account or API key.

### Use Cases

- **Price monitoring**: Track regular, sale, and Your Price values across Kohl's catalog to spot deals and discount cycles.
- **Competitor analysis**: Monitor pricing strategies and product assortments across departments and brands.
- **Product research**: Build comprehensive datasets of Kohl's products with brand, taxonomy, and rating signals.
- **Content enrichment**: Add structured product metadata to comparison tools, catalog aggregators, or shopping assistants.

### Input

Provide the following fields:

- `startUrls` (array, required): One or more URLs to scrape. Supports:
  - Search pages: `https://www.kohls.com/search.jsp?search=Sonoma`
  - Category pages: `https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing`
  - Product detail pages: `https://www.kohls.com/product/prd-6530363/womens-sonoma-goods-for-life-everyday-short-sleeve-v-neck-tee.jsp`
- `maxItems` (integer, optional): Maximum number of products to scrape per start URL. Default: `5`.
- `proxyConfiguration` (object, optional): Proxy settings. US residential proxy recommended for reliable access.

### Input Examples

**1) Scrape products from a search**

```json
{
  "startUrls": [
    { "url": "https://www.kohls.com/search.jsp?search=Sonoma" }
  ],
  "maxItems": 10
}
````

**2) Scrape a category page**

```json
{
  "startUrls": [
    { "url": "https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing" }
  ],
  "maxItems": 20
}
```

**3) Scrape a specific product page**

```json
{
  "startUrls": [
    { "url": "https://www.kohls.com/product/prd-6530363/womens-sonoma-goods-for-life-everyday-short-sleeve-v-neck-tee.jsp" }
  ],
  "maxItems": 1
}
```

### Output

Each dataset item represents one Kohl's product with fields like:

```json
{
  "url": "https://www.kohls.com/product/prd-3500577/womens-croft-barrow-essential-crewneck-tee.jsp",
  "webID": "3500577",
  "title": "Women's Croft & Barrow® Essential Crewneck Tee",
  "brand": "Croft & Barrow",
  "description": "This women's Croft & Barrow crewneck tee is a must-have for everyday wear.",
  "imageUrl": "https://media.kohlsimg.com/is/image/kohls/3500577_Teal_Easy_Foulard?wid=600&hei=600&op_sharpen=1",
  "regularPrice": 11.99,
  "salePrice": null,
  "yourPrice": 9.59,
  "currency": "USD",
  "availability": "InStock",
  "ratingValue": 4.4,
  "ratingCount": 14706,
  "skus": ["63539611"],
  "department": "clothing",
  "category": "tops",
  "subcategory": "tops & tees",
  "breadcrumbs": [
    { "name": "Kohl's", "url": "https://www.kohls.com" },
    { "name": "Womens", "url": "https://www.kohls.com/catalog/womens.jsp?CN=Gender:Womens" },
    { "name": "Clothing", "url": "https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing" },
    { "name": "Tops", "url": "https://www.kohls.com/catalog/womens-tops-clothing.jsp" }
  ]
}
```

### Why use the Kohl's.com Scraper?

- **Comprehensive**: Captures multi-tier pricing, ratings, SKUs, full taxonomy, and breadcrumb hierarchy in one run.
- **Flexible inputs**: Mix search, category, and product URLs in a single run — the scraper handles each appropriately.
- **Per-URL limits**: `maxItems` applies per start URL, so multi-category runs return balanced results.
- **Well-maintained**: Actively maintained by Lexis Solutions as part of a 180+ scraper monorepo.

### FAQ

- **Do I need a Kohl's account to use this scraper?**

  No. The scraper accesses only publicly available product pages and search results.

- **How many products can I scrape?**

  There is no hard limit. Use the `maxItems` field to control the number of results per start URL.

- **Does the scraper handle pagination?**

  Yes. For search and category URLs, the scraper automatically pages through results up to `maxItems`.

- **What data is available for each product?**

  Title, brand, description, image, regular/sale/Your Price, currency, availability, customer rating and review count, SKUs, department/category/subcategory taxonomy, and breadcrumb hierarchy.

***

Got feedback or need an extension?

Lexis Solutions is a [certified Apify Partner](https://apify.com/partners/find).
We can help you with custom solutions or data extraction projects.

Contact us over [Email](mailto:scraping@lexis.solutions) or
[LinkedIn](https://www.linkedin.com/company/lexis-solutions)

### Support Our Work

If you're happy with our work and scrapers, you're welcome to leave us a
company review [here](https://apify.com/partners/find/lexis-solutions/review)

### Image Credit

Image credit: [kohls.com](https://www.kohls.com/)

# Actor input Schema

## `startUrls` (type: `array`):

URLs to scrape. Supports search pages, catalog/category pages, and individual product detail pages.

## `maxItems` (type: `integer`):

Maximum number of products to scrape per start URL.

## `proxyConfiguration` (type: `object`):

Proxy settings for the scraper. Residential proxy is recommended due to Akamai bot protection.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing"
    }
  ],
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lexis-solutions/kohls-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 = { "startUrls": [{ "url": "https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing" }] }

# Run the Actor and wait for it to finish
run = client.actor("lexis-solutions/kohls-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.kohls.com/catalog/womens-clothing.jsp?CN=Gender:Womens+Department:Clothing"
    }
  ]
}' |
apify call lexis-solutions/kohls-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lexis-solutions/kohls-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kohls Scraper",
        "description": "Kohl’s Scraper for Apify extracts product data from Kohls.com search, category, and product pages, including prices, availability, ratings, SKUs, brands, and taxonomy. Ideal for price monitoring, competitor analysis, and ecommerce research.",
        "version": "1.0",
        "x-build-id": "7UsB7Jf6rOXvpdXjb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lexis-solutions~kohls-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lexis-solutions-kohls-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lexis-solutions~kohls-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lexis-solutions-kohls-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lexis-solutions~kohls-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lexis-solutions-kohls-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to scrape. Supports search pages, catalog/category pages, and individual product detail pages.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of products to scrape per start URL.",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings for the scraper. Residential proxy is recommended due to Akamai bot protection.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "US"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
