# Sears Product Scraper (Cheap) (`data_api/sears-product-scraper-cheap`) Actor

Sears product scraper that crawls product pages and category listings on Sears.com to extract prices, ratings, availability, and SKUs, so you can track competitors and monitor pricing without writing custom code.

- **URL**: https://apify.com/data\_api/sears-product-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 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

## Sears Product Scraper

![Sears Product Scraper](cover.jpg)

Copying product details off Sears.com one tab at a time gets old fast. And the numbers that matter most, the live price, the markdown, the rating, whether it is even in stock, all shift with the ZIP code you shop from. Hand it a product link and you get the full record back: name, sale price, list price, discount, rating, brand, model and part numbers, barcode, every image, the whole spec sheet, the category trail, and the page's SEO text. One link or a list of hundreds, with no browser to babysit.

### What you get

Every product link returns one tidy row with a fixed set of columns, so results drop cleanly into a sheet or database. The fields fall into a few groups:

- **Identity** — `itemName`, `itemId`, `brandName`, `modelNumber`, `partId`, `barcode`, `productUrl`
- **Pricing and stock** — `salePrice`, `listPrice`, `discountPercent`, `stockStatus`
- **Reputation** — `ratingScore`, `reviewsTotal`
- **Details** — `summary`, `specs`, `categoryTrail`, `mainImage`, `imageGallery`
- **SEO and timing** — `metaTitle`, `metaDescription`, `collectedAt`

### Quick start

1. Click **Try for free** to open the input form.
2. Paste your Sears product links into **Product page links** — one per line, each ending in `/p-[productId]`.
3. Set a **ZIP code** so prices and stock match the region you care about, and a **Result cap** if you want to limit the run.
4. Press **Start**, then download the data as JSON, CSV, Excel, or XML once it wraps up.

![How it works](how-it-works.jpg)

### Use cases

- **Price tracking** — run on a schedule and watch `salePrice` and `discountPercent` move over days or weeks
- **Competitor pricing** — line up Sears prices, markdowns, and stock against the same items on other retailers
- **Catalog sync** — pull brand, model number, barcode, specs, and images to keep your own listings current
- **Stock alerts** — watch `stockStatus` across a watchlist and flag the moment something sells out or comes back
- **Review research** — collect `ratingScore` and `reviewsTotal` to see which products shoppers actually rate well
- **SEO audits** — grab `metaTitle` and `metaDescription` in bulk to check Sears page metadata without clicking through

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `productUrls` | array of strings | Yes | Sears product page links, each ending in `/p-[productId]`. One per line; each is fetched on its own. |
| `resultsLimit` | integer | No | Most products to collect in one run. Default `50`; max `1000`. |
| `postalCode` | string | No | US ZIP code that sets which region's price and stock you see. Default `60601`. |
| `proxyConfiguration` | object | No | Optional proxies for the API calls. Off by default; turn on Datacenter proxies only if a large run hits rate limits. |

#### Example input

```json
{
    "productUrls": [
        "https://www.sears.com/kenmore-elite-31633-27cuft-french-door/p-A089412233",
        "https://www.sears.com/craftsman-cmcf800-20v-max-cordless-impact/p-A116204507"
    ],
    "resultsLimit": 50,
    "postalCode": "33101",
    "proxyConfiguration": { "useApifyProxy": false }
}
```

### Output

Each product link becomes one record, and every field is always present — values Sears does not return come back as `0`, an empty string, or an empty list, so your columns stay rectangular.

#### Example output

```json
{
    "productUrl": "https://www.sears.com/kenmore-elite-31633-27cuft-french-door/p-A089412233",
    "itemId": "A089412233",
    "itemName": "Kenmore Elite 31633 27 cu. ft. French Door Bottom-Freezer Refrigerator Stainless Steel",
    "salePrice": 2499.99,
    "listPrice": 3199.99,
    "discountPercent": 21.9,
    "ratingScore": 4.4,
    "reviewsTotal": 312,
    "brandName": "Kenmore Elite",
    "modelNumber": "31633",
    "partId": "04631633000",
    "barcode": "883049429137",
    "stockStatus": "In Stock",
    "mainImage": "https://c.shld.net/rpx/i/s/i/spin/10052543/prod_31633000",
    "imageGallery": [
        "https://c.shld.net/rpx/i/s/i/spin/10052543/prod_31633001",
        "https://c.shld.net/rpx/i/s/i/spin/10052543/prod_31633002"
    ],
    "summary": "Kenmore Elite 27 cu. ft. French door refrigerator with a bottom freezer drawer, dual ice makers, and a humidity-controlled crisper.",
    "specs": {
        "Capacity (Cu Ft)": "27",
        "Configuration": "French Door",
        "Width w/ Door Closed (In.)": "36",
        "ENERGY STAR Certified": "Yes",
        "Color Family": "Stainless steel"
    },
    "categoryTrail": "Appliances > Refrigerators > French Door Refrigerators",
    "metaTitle": "Kenmore Elite 31633 27 cu. ft. French Door Refrigerator Stainless Steel",
    "metaDescription": "The Kenmore Elite French Door Refrigerator pairs roomy 27 cu. ft. storage with dual ice makers and humidity-controlled crispers.",
    "collectedAt": "2026-06-29T09:47:05.300000+00:00"
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `productUrl` | string | Web address of the Sears product page |
| `itemId` | string | Sears item code (sSin) from the API |
| `itemName` | string | Complete product name from the Sears API |
| `salePrice` | number | Price you pay right now, in USD |
| `listPrice` | number | Price before markdown; 0 when nothing is discounted |
| `discountPercent` | number | Percentage off the list price; 0 with no markdown |
| `ratingScore` | number | Mean shopper rating from 1 to 5; 0 when unrated |
| `reviewsTotal` | integer | How many shopper reviews the item has |
| `brandName` | string | Maker or brand behind the product |
| `modelNumber` | string | Manufacturer model or part number |
| `partId` | string | Sears in-house part number |
| `barcode` | string | Universal Product Code labelling the item |
| `stockStatus` | string | Reads `In Stock` or `Out of Stock` |
| `mainImage` | string | Link to the lead product photo |
| `imageGallery` | array | Every product image link the API returns |
| `summary` | string | Short product blurb with HTML stripped out |
| `specs` | object | Spec sheet as paired keys and values (dimensions, capacity, features) |
| `categoryTrail` | string | Category breadcrumb, e.g. `Appliances > Refrigerators > French Door` |
| `metaTitle` | string | SEO page title from the Sears product page |
| `metaDescription` | string | SEO meta description from the Sears product page |
| `collectedAt` | string | ISO 8601 timestamp of when the record was captured |

### Tips for best results

- **Use real product links only.** Each one has to end in `/p-[productId]`. Category pages and search results are skipped, so copy the link straight from a Sears product page.
- **Match the ZIP to your market.** Price and stock both move by region, so set `postalCode` to wherever you actually care about the numbers.
- **Cap test runs.** Keep `resultsLimit` small while you confirm the output fits your pipeline, then raise it for the full batch.
- **Leave proxies off to start.** The product API answers fine without them; only switch on Datacenter proxies if a few-hundred-product run starts hitting rate limits.
- **Expect 0 on unrated items.** A `ratingScore` of 0 with `reviewsTotal` of 0 means no one has reviewed it yet, not that the scrape failed.

### How can I use Sears product data?

**How can I use the Sears Product Scraper to track price drops?**
Put your product links in `productUrls`, set the `postalCode` for your region, and schedule the run daily or weekly. Each pass records `salePrice`, `listPrice`, and `discountPercent` with a `collectedAt` timestamp, so you can chart how a price moves and catch markdowns the moment they land.

**How can I pull Sears specs and images for a product catalog?**
Every record carries `brandName`, `modelNumber`, `barcode`, the full `specs` object, `mainImage`, and the `imageGallery` list. Feed in your Sears links and you get a structured row per product — enough to populate or refresh your own catalog without retyping a single attribute.

**How can I compare Sears prices against other stores?**
Run the scraper on a list of Sears links and export `itemName`, `brandName`, `modelNumber`, `salePrice`, and `stockStatus` to CSV or Excel. Match on model number or barcode against data from other retailers to see where Sears sits on price and what is actually available.

**How do I check Sears stock and ratings in bulk?**
The `stockStatus` field tells you `In Stock` or `Out of Stock` per product, while `ratingScore` and `reviewsTotal` show how shoppers rate it. Scrape a watchlist of links in one run to spot sellouts and weak performers across the whole set at once.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

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

Direct Sears.com product page URLs. Each URL must end in /p-\[productId], for example https://www.sears.com/ge-appliances-psb48ysnss-profile-48inch-smart-side-by/p-A105601864. Add one URL per line.

## `maxProducts` (type: `integer`):

Maximum number of products to collect per run. Useful as a cost safeguard on large URL lists.

## `zipCode` (type: `string`):

US ZIP code used for pricing and availability lookups. Sears prices and stock status can vary by location.

## `timeoutSecs` (type: `integer`):

Overall actor timeout in seconds. The run stops after this limit regardless of how many products remain.

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

Optional proxy for API requests. The Sears API does not use browser-level bot protection, so proxies are usually not required. Enable only if you encounter rate limiting on large runs.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.sears.com/ge-appliances-psb48ysnss-profile-48inch-smart-side-by/p-A105601864",
    "https://www.sears.com/pj-jewelry-14k-white-gold-over-silver-8mm/p-A097585815"
  ],
  "maxProducts": 100,
  "zipCode": "90210",
  "timeoutSecs": 300,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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": [
        "https://www.sears.com/ge-appliances-psb48ysnss-profile-48inch-smart-side-by/p-A105601864"
    ],
    "zipCode": "10101",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/sears-product-scraper-cheap").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": ["https://www.sears.com/ge-appliances-psb48ysnss-profile-48inch-smart-side-by/p-A105601864"],
    "zipCode": "10101",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_api/sears-product-scraper-cheap").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": [
    "https://www.sears.com/ge-appliances-psb48ysnss-profile-48inch-smart-side-by/p-A105601864"
  ],
  "zipCode": "10101",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_api/sears-product-scraper-cheap --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/odiuaZ1bMWVNAYAq1/builds/qkIaXyI9pYP1J7ZeB/openapi.json
