# Jcpenney Product Search Scraper (`stealth_mode/jcpenney-product-search-scraper`) Actor

Scrape product listings from JCPenney search pages in bulk. Collect product names, pricing, SKU IDs, images, availability, and 40+ attributes per item — perfect for price monitoring, competitive analysis, and e-commerce automation.

- **URL**: https://apify.com/stealth\_mode/jcpenney-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 3 total users, 2 monthly users, 95.8% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## JCPenney Product Search Scraper: Extract Fashion & Home Goods Data Instantly

***

### What Is JCPenney?

JCPenney is a major American retail chain offering clothing, home furnishings, jewelry, and accessories across thousands of SKUs. Their online catalog features dynamic search results, promotional pricing, and real-time inventory status. Extracting this product data manually is inefficient — the **JCPenney Product Search Scraper** automates collection from search result pages, delivering structured product intelligence at scale.

***

### Overview

The **JCPenney Product Search Scraper** extracts product cards from search list pages on JCPenney.com, transforming unstructured web content into clean, structured JSON records. It is ideal for:

- **Price monitoring platforms** tracking JCPenney's dynamic pricing
- **Competitive analysts** benchmarking product assortments and promotions
- **E-commerce aggregators** building multi-retailer product catalogs
- **Marketers** analyzing product trends by category and brand
- **Retailers** monitoring competitor pricing and promotional activity

Key features include bulk URL support, configurable item limits, flexible error handling, and extraction of 40+ product attributes including real-time pricing, availability, and promotional badges.

***

### Input Format

The scraper accepts a JSON configuration with three simple parameters:

```json
{
  "urls": [
    "https://www.jcpenney.com/g/women/view-all-women?id=cat10011030002&page=2&mktTiles=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

| Field | Description | Type |
|---|---|---|
| `urls` | Array of JCPenney product search list page URLs | Array |
| `ignore_url_failures` | If `true`, continues scraping even if some URLs fail | Boolean |
| `max_items_per_url` | Maximum products to extract per URL (default: 20, range: 1–200+) | Integer |

**Input Notes:**

- Paste full search URLs including query parameters (e.g., `?id=cat10011030002&page=2`)
- Multi-page scraping: add each page URL separately or use pagination logic
- Supports category-filtered searches and keyword searches
- Best practice: test with 1–2 URLs before running bulk operations

***

### Output Format

**Sample output**

```json
{
  "name": "Liz Claiborne Womens Midi V Neck Short Sleeve A-Line Dress",
  "pp_id": "ppr5008685829",
  "current_min": 55.5,
  "current_max": 55.5,
  "original_min": 74.0,
  "original_max": 74.0,
  "price_type": "SALE",
  "pre_order": false,
  "boosted_pp": null,
  "customer_favourite": false,
  "marketing_label": "FLASH SALE!",
  "bottom_badges": [
    {
      "name": "Petite Available",
      "priority": 1,
      "url_param": "petite"
    }
  ],
  "upper_left_badge": [
    {
      "name": "NEW",
      "priority": 1,
      "url_param": "new"
    },
    {
      "name": "Only at JCP",
      "priority": 2,
      "url_param": "onlyatjcp"
    }
  ],
  "map_price": false,
  "original_price_label": "original",
  "sephora_in": false,
  "show_comparison": true,
  "bulleted_copy_attrs": [
    "Features: Belted, Embroidered",
    "Closure Type: Belted",
    "Neckline: V Neck",
    "Pocket Types: 2 Interior Slip Pocket(s)",
    "Sleeve Length: Short Sleeve"
  ],
  "min_save_price": 0.0,
  "max_save_price": 0.0,
  "current_price_label": "SALE",
  "truck_item_in": false,
  "eco_rebate": false,
  "sku_id": "81404240034",
  "currency_code": "USD",
  "brand": "liz claiborne",
  "sku_swatch": [
    {
      "color_name": "Chutney",
      "swatch_image_id": "DP0318202609045687S.tif",
      "colorized_image_id": "DP0318202609045583M.tif",
      "color_seq_num": 1,
      "sku_id": "81404240034",
      "default_swatch": false,
      "sku_alt_images": [
        {
          "img_id": "DP0318202609045375M.tif",
          "color_seq": 0
        },
        {
          "img_id": "DP0318202609045480M.tif",
          "color_seq": 1
        },
        {
          "img_id": "DP0512202617061152M.tif",
          "color_seq": 2
        }
      ]
    }
  ],
  "images_info": {
    "thumbnail_image_id": "DP0318202609045583M.tif",
    "alt_thumbnail_image_id": "DP0318202609045375M.tif"
  },
  "pdp_url": "/p/liz-claiborne-womens-midi-v-neck-short-sleeve-a-line-dress/ppr5008685829?pTmplType=regular",
  "availability_status": [
    {
      "message": "Unavailable for Pickup",
      "icon": "cross"
    },
    {
      "message": "Available for Shipping",
      "icon": "check"
    }
  ],
  "bundle_status_badge": false,
  "sub_division": "814",
  "enable_mini_pdp": null,
  "fpac_price_max": 36.07,
  "fpac_price_min": 36.07,
  "fpac_coupon": "1BIGSALE",
  "bundle_indicator": false,
  "append_sku_id": null,
  "first_activation_date": "2026-05-23T01:49:58",
  "from_url": "https://www.jcpenney.com/g/women/view-all-women?id=cat10011030002&page=2&mktTiles=2"
}
```

Each product record contains 40+ attributes covering identification, pricing, images, and availability:

#### Product Identification

| Field | Meaning |
|---|---|
| `Name` | Product name as displayed on search results |
| `PP ID` | Internal JCPenney product identifier (unique per SKU) |
| `SKU ID` | Stock-keeping unit identifier for inventory tracking |
| `Brand` | Product brand or manufacturer name |
| `PDP URL` | Direct link to the product detail page |
| `Sub Division` | Product category or sub-category classification |

#### Pricing & Promotions

| Field | Meaning |
|---|---|
| `Current Min` | Lowest current price (may vary by size/color) |
| `Current Max` | Highest current price (may vary by size/color) |
| `Original Min` | Original/list price (lowest variant) |
| `Original Max` | Original/list price (highest variant) |
| `Price Type` | Pricing model (e.g., standard, sale, clearance) |
| `Current Price Label` | Promotional text (e.g., "On Sale", "Regular Price") |
| `Original Price Label` | Label for full retail price |
| `Min Save Price` | Minimum discount amount |
| `Max Save Price` | Maximum discount amount |
| `MAP Price` | Manufacturer's advertised price (if applicable) |
| `Currency Code` | Currency of prices (e.g., USD) |

#### Promotions & Badges

| Field | Meaning |
|---|---|
| `Marketing Label` | Promotional labels (e.g., "New Arrival", "Bestseller") |
| `Bottom Badges` | Icons/badges at bottom of product card |
| `Upper Left Badge` | Icon/badge at top-left (e.g., "New", "Sale") |
| `Customer Favourite` | Flag if marked as customer favorite |
| `Boosted PP` | Whether product has paid promotional boost |
| `Sephora In` | Flag if beauty product stocked in Sephora section |

#### Inventory & Availability

| Field | Meaning |
|---|---|
| `Availability Status` | Current stock status (in stock, low stock, out of stock) |
| `Pre Order` | Whether the item is available for pre-order |
| `Truck Item In` | Whether item can be delivered via truck (furniture/large items) |
| `First Activation Date` | Date product first became available |

#### Product Details & Media

| Field | Meaning |
|---|---|
| `SKU Swatch` | Swatch image(s) for color/pattern variants |
| `Images Info` | URLs and metadata for all product images |
| `Bulleted Copy Attrs` | Key product features in bullet points |
| `Bundle Indicator` | Flag if item is part of a bundle offer |
| `Bundle Status Badge` | Visual indicator for bundle deals |

#### Special Programs & Features

| Field | Meaning |
|---|---|
| `FPAC Price Min` | Minimum price under JCPenney's price-lock program |
| `FPAC Price Max` | Maximum price under JCPenney's price-lock program |
| `FPAC Coupon` | Applicable coupon or promotional code |
| `Eco Rebate` | Rebate available for eco-friendly products |
| `Enable Mini PDP` | Whether quick-view popup is available |
| `Show Comparison` | Whether product comparison feature is enabled |
| `Append SKU ID` | Additional SKU identifiers (variants) |

***

### How to Use

1. **Find search URLs** — Navigate to JCPenney.com, perform a product search (by category, brand, or keyword), and copy the full URL including all query parameters.
2. **Add to scraper** — Paste URLs into the `urls` array, one per entry.
3. **Set limits** — Adjust `max_items_per_url` based on your needs (200 = all products on the page).
4. **Enable error handling** — Keep `ignore_url_failures: true` for reliable bulk runs.
5. **Execute & export** — Start the scraper and download results as JSON, CSV, or Excel.

**Best Practices:**

- Test with a single URL before bulk operations
- Use consistent URL structure (avoid shortened URLs)
- For multi-page results, add each page URL separately
- Monitor pricing data collection during seasonal sales for complete snapshots

**Troubleshooting:**

- If images aren't captured, verify the page loaded fully (JavaScript-rendered pages may need delays)
- For pricing discrepancies, cross-check with the PDP URL for real-time accuracy

***

### Use Cases & Business Value

- **Price monitoring:** Track JCPenney's pricing strategies and promotional cadence
- **Competitive intelligence:** Benchmark assortments against other retailers
- **Product research:** Analyze product trends, brands, and category performance
- **Dynamic pricing models:** Feed real-time pricing into algorithmic pricing systems
- **Inventory insights:** Understand product availability patterns by category
- **Marketing analysis:** Identify which products are flagged as "Customer Favourite" or promoted

The JCPenney Product Search Scraper eliminates manual copy-paste work, enabling data-driven decision-making for retailers, marketers, and analysts.

***

### Conclusion

The **JCPenney Product Search Scraper** simplifies collection of fashion and home goods data from one of America's largest retail platforms. With 40+ output fields covering pricing, promotions, images, and availability, it provides comprehensive product intelligence for competitive analysis, price monitoring, and e-commerce automation. Start scraping today and unlock actionable retail data.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.jcpenney.com/g/women/view-all-women?id=cat10011030002&page=2&mktTiles=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.jcpenney.com/g/women/view-all-women?id=cat10011030002&page=2&mktTiles=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/jcpenney-product-search-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 = {
    "urls": ["https://www.jcpenney.com/g/women/view-all-women?id=cat10011030002&page=2&mktTiles=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/jcpenney-product-search-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 '{
  "urls": [
    "https://www.jcpenney.com/g/women/view-all-women?id=cat10011030002&page=2&mktTiles=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/jcpenney-product-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0Tv2FQxSWMT65qcUe/builds/zvshtPhSmuFtw7rkM/openapi.json
