Retail category and campaign monitoring
Use Kohl's endpoints to turn retail category and campaign monitoring into repeatable API requests with documented inputs and JSON responses.
Turn Kohl's into structured retail data: normalized category and campaign product grids with facets, per-product customer reviews, physical store locations with weekly hours, and the site's own search typeahead — all as JSON, credential-free.
Browse Kohl's category grids and facets, product reviews, store locations, and search typeahead as structured JSON.
Endpoint families
4
Documented params
9
Examples
4
Live catalog snapshot
Active endpoints
4
Methods
GET
Required params
8
Schema refs
4
{
"platform": "Kohl's",
"endpoint": "kohls-category",
"method": "GET",
"path": "/kohls/category",
"auth": "apiKey"
}Use cases
Browse Kohl's category grids and facets, product reviews, store locations, and search typeahead as structured JSON.
Use Kohl's endpoints to turn retail category and campaign monitoring into repeatable API requests with documented inputs and JSON responses.
Use Kohl's endpoints to turn product review and rating analysis into repeatable API requests with documented inputs and JSON responses.
Use Kohl's endpoints to turn store footprint and locator research into repeatable API requests with documented inputs and JSON responses.
Use Kohl's endpoints to turn search-term and keyword discovery into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Kohl's endpoint catalog — 4 endpoints, 9 documented request parameters, and 4 published response schemas — the same catalog Docs and Playground run against.
4 documented Kohl's endpoints, grouped into 4 request families — Category, Product and Stores, plus 1 more.
9 request parameters are documented across those Kohl's endpoints, 8 of them required — the full input contract is public before you write any integration code.
4 of the 4 Kohl's endpoints ship a recorded example response, and 4 carry a documented response schema — you can code against the real JSON before the first request.
Kohl's endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
4 hosted MCP tools back the Kohl's endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/kohls/category
/kohls/product/reviews
/kohls/stores
/kohls/suggest
Endpoint catalog
/kohls/categoryReturns a Kohl's category or curated campaign page's product grid (page 1 only), with normalized products (title, image, colors, pricing, rating, availability) and facets for discovering further category values. category is Kohl's own catalog taxonomy string, e.g. "Room:Dorm" or "Department:Kitchen & Dining" -- combine multiple dimensions with a literal "+", percent-encoded as "%2B" so it survives as "+" rather than being decoded to a space (e.g. "Room%3ADorm%2BDepartment%3ABedding"). Every facets[].options[].category value in a response is a ready-to-use category string for a follow-up call, so a caller can discover the full taxonomy by starting from a known category (e.g. "Room:Dorm") and following facets. A category value Kohl's does not recognize returns a 404 rather than an unfiltered listing; a recognized dimension with no matching products returns a genuine zero-result response instead.
Response notes
- Pagination is page 1 only. `product_count` is the category's total result count across all pages; `total_pages` and `limit` describe the upstream page size, but this endpoint does not fetch page 2 or beyond. - Every `facets[].options[].category` value in a response is a ready-to-use `category` string for a follow-up call -- this is how a caller discovers the full taxonomy, starting from a known category (e.g. `Room:Dorm`) and following its facets (e.g. `Department`, `Brand`, `Price`). - A `category` value Kohl's does not recognize at all returns a `404` rather than an unfiltered listing. A recognized dimension with a value that matches nothing (e.g. a real department with a typo'd name) returns a genuine zero-result response (`count: 0`, empty `products`) instead of an error. - `sale_price` is present only when the product is genuinely on sale; `on_sale` is `false` and `sale_price` is omitted otherwise. - `regular_price`/`sale_price` are min/max ranges rather than single prices, because a product can span multiple sizes/colors at different price points. Example response: ```json {"code":200,"msg":"OK","data":{"category":"Room:Dorm","title":"Essential Dorm Items for College-Bound Students | Kohl's","product_count":1317,"count":1,"limit":120,"total_pages":11,"products":[{"web_id":"4569328","title":"The Big One® Solid Bath Towel, Bath Sheet, Hand Towel or Washcloth","image_url":"https://media.kohlsimg.com/is/image/kohls/4569328_Medium_Gray?wid=180&hei=180&op_sharpen=1","colors":["Medium Gray"],"currency_code":"USD","regular_price":{"min_price":2.99,"max_price":9.99},"sale_price":{"min_price":2.09,"max_price":8.99},"on_sale":true,"rating":3.9,"review_count":27103,"available_for_ship":true,"available_for_pickup":false,"url":"https://www.kohls.com/product/prd-4569328/the-big-one-solid-bath-towel-bath-sheet-hand-towel-or-washcloth.jsp"}],"facets":[{"name":"Department","label":"Department","options":[{"category":"Room:Dorm+Department:Bedding","name":"Bedding","product_count":479,"active":false}]}],"source_url":"https://www.kohls.com/shopnext-web-findability/api/web-shop/pmp-catalog?CN=Room:Dorm","fetched_at":"2026-08-12T04:00:00Z"}} ```
MCP tool kohls_category
/kohls/product/reviewsReturns one page of a Kohl's product's normalized customer reviews (title, text, rating, secondary ratings such as quality/durability/value/style, reviewer name and location, submission date, and photo URLs). web_id is the same identifier a GET /kohls/category response's products[].web_id field carries. A web_id with zero reviews returns a genuine zero-result response rather than an error.
Response notes
- `secondary_ratings` (e.g. Quality, Durability, Value, Style) is present only on reviews that carry it -- not every review rates every dimension. - `photo_urls` is present only on reviews with customer-submitted photos. - A `web_id` with zero reviews (a real product that has none yet, or an id the review platform has never heard of) returns a genuine zero-result response (`total_count: 0`, empty `reviews`) rather than an error. Example response: ```json {"code":200,"msg":"OK","data":{"web_id":"4569328","total_count":11249,"page":1,"page_size":10,"reviews":[{"id":"400246016","title":"U Love these towels","text":"I have been buying them for years and love them!","rating":5,"recommended":true,"author":"Kimmy","location":"Fayetteville, AR","submitted_at":"2026-08-12T01:40:45.000+00:00","secondary_ratings":[{"name":"Quality","value":4,"max_value":5}]}],"source_url":"https://apps.bazaarvoice.com/bfd/v1/clients/Kohls/api-products/cv2/resources/data/reviews.json?...","fetched_at":"2026-08-12T10:00:00Z"}} ```
MCP tool kohls_product_reviews
/kohls/storesReturns physical Kohl's store locations near a free-text location (city/state, zip code, or address): address, phone, weekly hours, distance, and store badges/services. A search with no results returns a genuine empty list rather than an error.
Response notes
- `hours` lists every open/close interval for the store's regular weekly schedule, one entry per day the store is open. - `badges` and `services` are flat lists of the store's own labeled amenities (e.g. `Sephora`, `In-Store Pickup`, `Wifi Enabled`) when present. - A search with no nearby stores, or a location the store locator cannot resolve at all, returns a genuine empty result (`count: 0`, empty `stores`) rather than an error. Example response: ```json {"code":200,"msg":"OK","data":{"search":"Seattle, WA","count":13,"stores":[{"id":"1152","name":"Kohl's Tukwila","address":"17150 SOUTHCENTER PKWY","city":"TUKWILA","state":"WA","postal_code":"98188","country":"US","phone":"(206) 394-0078","distance_miles":11.3,"latitude":47.450079,"longitude":-122.2581113,"hours":[{"day":"Sunday","open":"09:00","close":"20:00"},{"day":"Monday","open":"09:00","close":"21:00"}],"badges":["Sephora","Baby Gifting Shop","Kids Room Shop"],"services":["In-Store Pickup","Wifi Enabled"],"url":"https://www.kohls.com/stores/wa/tukwila-1152.shtml"}],"source_url":"https://maps.kohlslocal.com/api/getAsyncLocations?...","fetched_at":"2026-08-12T10:00:00Z"}} ```
MCP tool kohls_stores
/kohls/suggestReturns Kohl's own search-box typeahead result for a partial query: a flat list of suggested search phrases (no product data). A nonsense query returns a genuine, well-formed empty list rather than an error.
Response notes
- There is no pagination -- `suggestions` is a single flat list. - A nonsense query returns a normal, well-formed empty result (`count: 0`, empty `suggestions`) rather than an error. Example response: ```json {"code":200,"msg":"OK","data":{"query":"coff","count":8,"suggestions":["coffee makers","keurig coffee makers","ninja coffee makers","coffee mugs","coffee","cuisinart coffee makers","coffee grinder","keurig single serve coffee maker"],"source_url":"https://www.kohls.com/typeahead/coff.jsp","fetched_at":"2026-08-12T10:00:00Z"}} ```
MCP tool kohls_suggest
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Company coverage
Kohl's Corporation · KSS
Kohl's is operated by Kohl's Corporation (KSS). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the Kohl's endpoints above.
SEC filings & financials API →How to scrape Kohl's
Crawlora's 4 Kohl's endpoints return category grids, product reviews, store locations, and search typeahead as normalized JSON with one API key — no Kohl's account, and no Akamai Bot Manager challenge to solve on your side.
/kohls/category takes Key:Value pairs joined by + (percent-encoded as %2B), not a URL slug — Room:Dorm on its own, or Room:Dorm%2BDepartment:Bedding to narrow. A slug copied from a kohls.com URL returns a 400 that states the expected format.
The response returns page 1 of the grid only, alongside product_count for the whole category and the upstream limit and total_pages — so you can see how much you are not fetching. Every facets[].options[].category value is a ready-made next query.
Each grid product carries a web_id. Pass it to /kohls/product/reviews for a page of normalized reviews with rating, title, text, author and submission date. secondary_ratings (Quality, Durability, Value, Style) appears only on reviews that carry it.
/kohls/stores takes a free-text city and state, ZIP code, or address and returns nearby locations with address, phone, distance, coordinates, the full weekly open/close schedule, and store badges such as Sephora or In-Store Pickup.
/kohls/suggest returns Kohl's own typeahead phrases for a partial query — search terms only, no product records — which is useful for keyword research and for finding the language a category is actually browsed under.
FAQ
It depends on the endpoint. /kohls/category returns page 1 of the grid only — product_count and total_pages tell you the full size, and the returned facets let you narrow into a smaller slice instead of paging. /kohls/product/reviews does paginate: pass page to walk through a product's reviews.
Key:Value pairs joined by + and percent-encoded as %2B — for example Room:Dorm, or Room:Dorm%2BDepartment:Bedding to combine two filters. It is not the slug from a kohls.com URL; passing one returns a 400 that names the expected format.
Not for product records directly. /kohls/suggest returns Kohl's own search-box typeahead phrases for a partial query, which are search terms rather than products. Use those phrases, or a facet's ready-made category value, to reach a product grid.
No. kohls.com runs Akamai Bot Manager, and these endpoints absorb that upstream — every route is a plain GET authenticated with your Crawlora x-api-key header.
No. Every endpoint reads public storefront, review, and store-locator data and needs only your Crawlora API key.