# Home Depot Listings Scraper (`piotrv1001/home-depot-listings-scraper`) Actor

The Home Depot Listings Scraper extracts product listings from any homedepot.com category or brand page, capturing titles, brands, model numbers, SKUs, prices, discounts, ratings, images, category paths, and  online stock  — ideal for price monitoring, retail arbitrage and assortment analysis.

- **URL**: https://apify.com/piotrv1001/home-depot-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 product listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🚀 Home Depot Listings Scraper

Extract **product listings from any Home Depot category, sub-category or brand page** — complete with **live prices, discounts, ratings and in-store plus online stock levels**. Paste a [homedepot.com](https://www.homedepot.com) category URL, press start, and get clean structured rows you can push straight into a spreadsheet, a price-tracking dashboard, or your own database.

Because it runs on the Apify platform you also get a REST API, scheduled runs, webhooks, and one-click integrations with Google Sheets, Slack, Make, Zapier and more — plus managed proxy rotation and anti-blocking handled for you.

### ✨ Features

- 🏷️ **Rich product data** — title, brand, model number, store SKU, item ID, canonical URL, images, unit of measure and the full 6-level category path.
- 💵 **Real prices, including the hidden ones** — current price, was-price, discount amount and percent. Minimum-advertised-price items that Home Depot only shows "in cart" are resolved to their actual price too.
- 📦 **Stock you can act on** — units available for store pickup, the pickup store's name, online quantity, free-shipping flag and earliest delivery date.
- ⭐ **Ratings & reviews** — average star rating and total review count for every product.
- 🔍 **Optional full detail** — flip on `scrapeDetails` to add each product's description, complete specifications table, key features, UPC, colour, weight, dimensions and return window.
- 🏬 **Brand pages too** — brand listing URLs work exactly like category URLs.
- 🎯 **Single-product lookups** — drop a product page URL straight into the input and get one fully detailed row back.
- 💸 **Pay only for what you extract** — per-product pricing, no monthly minimum.

### 🛠️ How to use Home Depot Listings Scraper

1. **Copy a category URL** — browse [homedepot.com](https://www.homedepot.com), open the category, sub-category or brand you care about, and copy the address (it looks like `.../b/…/N-5yc1vZ…`).
2. **Paste it into Start URLs** — add as many as you like.
3. **Set how many products you want** — `Max products per start URL` defaults to a modest 50 so your first run is quick and cheap.
4. **(Optional) turn on full details** — enable `Scrape full product details` if you need specifications, descriptions and UPCs.
5. **Run it** — watch results stream into the Output tab, then export as JSON, CSV, Excel or HTML, or pull them from the API.

### 📥 Input

Configure everything from the **Input** tab, or pass JSON via the API:

```json
{
    "startUrls": [
        {
            "url": "https://www.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8"
        }
    ],
    "maxItems": 50,
    "scrapeDetails": false
}
```

| Field           | Type    | Default | Description                                                                                                                              |
| --------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrls`     | array   | —       | Home Depot category, sub-category or brand pages (`/b/…`). Product pages (`/p/…`) are also accepted and always come back fully detailed.  |
| `maxItems`      | integer | `50`    | Stop after this many products **per start URL**. `0` takes everything available.                                                          |
| `scrapeDetails` | boolean | `false` | Also open each product's own page to add description, specifications, key features, UPC, colour, weight and dimensions.                   |

### 📤 Output

Every product becomes one dataset row. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
[
    {
        "itemId": "327469574",
        "title": "Home Defense Insect Killer for Indoor and Perimeter 2 with Comfort Wand, 1 Gal., Controls Ants, Roaches, and Spiders",
        "brand": "Ortho",
        "modelNumber": "4659905",
        "storeSku": "1010392445",
        "url": "https://www.homedepot.com/p/Ortho-Home-Defense-Insect-Killer-for-Indoor-and-Perimeter-2-with-Comfort-Wand-1-Gal-Controls-Ants-Roaches-and-Spiders-4659905/327469574",
        "price": 17.34,
        "originalPrice": null,
        "currency": "USD",
        "discountAmount": null,
        "discountPercent": null,
        "unitOfMeasure": "each",
        "priceMessage": null,
        "isOnSale": false,
        "isClearance": false,
        "rating": 4.3161,
        "reviewCount": 18711,
        "image": "https://images.thdstatic.com/productImages/531adb82-c8f7-4b57-bc45-f2033f3aa165/svn/ortho-insecticide-spray-4659905-64_600.jpg",
        "categoryHierarchy": ["Outdoors", "Garden Center", "Pest Control", "Insect Control", "Insect Killers", "Insecticide Spray"],
        "returnPolicy": "90-Day",
        "isSponsored": false,
        "discontinued": false,
        "pickupQuantity": 477,
        "pickupStore": "Cumberland",
        "shipQuantity": 679,
        "freeShipping": true,
        "earliestDeliveryDate": "2026-07-31",
        "position": 1,
        "sourceUrl": "https://www.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8",
        "scrapedAt": "2026-07-30T08:28:44.330Z"
    }
]
```

#### Data fields

| Field                                                  | Description                                                            |
| ------------------------------------------------------ | ---------------------------------------------------------------------- |
| `itemId`                                               | Home Depot's internal product ID — a stable key for tracking over time |
| `title`, `brand`, `modelNumber`                         | Product name, manufacturer and model                                   |
| `storeSku`                                             | In-store SKU number                                                    |
| `url`, `image`, `images`                                | Canonical product link and image URLs                                  |
| `price`, `originalPrice`, `currency`                    | Current and pre-discount price                                         |
| `discountAmount`, `discountPercent`                     | Money and percentage off, derived from the two prices                  |
| `unitOfMeasure`, `priceMessage`                         | Pricing unit, plus any note such as "see final price in cart"          |
| `isOnSale`, `isClearance`                               | Promotion flags                                                        |
| `rating`, `reviewCount`                                 | Average star rating and number of reviews                              |
| `categoryHierarchy`                                     | Full category path, most general first                                 |
| `returnPolicy`, `discontinued`                          | Return window label and lifecycle flag                                 |
| `pickupQuantity`, `pickupStore`                         | Units on the shelf and which store was checked                         |
| `shipQuantity`, `freeShipping`, `earliestDeliveryDate`  | Online availability and delivery promise                               |
| `isSponsored`, `position`                               | Whether the slot was paid, and its rank on the listing                 |
| `sourceUrl`, `scrapedAt`                                | Where the row came from and when                                       |

With `scrapeDetails` enabled, each row additionally carries `description`, `specifications`, `keyFeatures`, `upc`, `color`, `weight`, `dimensions`, `breadcrumbs`, `returnWindowDays` and `priceValidUntil`.

### 💡 Why use Home Depot Listings Scraper?

- **Competitive price monitoring** — track a whole category daily and get alerted the moment a competitor's SKU moves.
- **Retail arbitrage & resale sourcing** — spot discounts, clearance items and price gaps at scale instead of one product at a time.
- **Assortment and range analysis** — see exactly which brands and models occupy a category, and in what order Home Depot ranks them.
- **Inventory intelligence** — combine pickup and online quantities to gauge real demand and stock pressure.
- **MAP compliance checks** — brands can verify how their products are actually being advertised and priced.
- **Product catalog enrichment** — pull specifications, UPCs, dimensions and images to fill gaps in your own PIM.

### 💰 How much does it cost to scrape Home Depot?

This Actor uses **pay-per-event** pricing, so you pay for results rather than for runtime:

| Event                       | Price per product | What you get                                                                                            |
| --------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------- |
| **Product listing scraped** | **$0.002**        | Every field in the sample output above — around **$2 per 1,000 products**                                |
| **Product detail scraped**  | **$0.007**        | Adds description, full specifications, key features, UPC, dimensions — around **$7 per 1,000 products**  |

A default run (50 products, details off) costs about **$0.10**. The Apify Free plan includes $5 of monthly usage, which is roughly **2,500 listing rows per month at no cost**.

Details are billed only when a product page is actually fetched and parsed, so a run with `scrapeDetails` off never incurs the higher rate.

### 🧠 Tips for better runs

- **Go narrow, not wide.** Home Depot lets you browse up to **372 products per listing URL**. To cover a large department, use its sub-categories (or brand pages) as separate start URLs rather than the top-level category.
- **Start with `maxItems: 50`** to check the data shape, then raise it once you're happy.
- **Leave `scrapeDetails` off** unless you specifically need specifications or UPCs — listings alone already include prices, ratings and stock, at under a third of the cost.
- **Schedule daily runs** and diff on `itemId` to build a price and stock history.
- **Multiple start URLs run one after another**, and `maxItems` applies to each, so ten categories at 50 each yields 500 rows.

### ❓ FAQ

**Is scraping Home Depot legal?**
Scraping publicly available data is generally legal in most jurisdictions, and this Actor only reads pages that Home Depot allows crawlers to access — it never touches areas excluded by their robots.txt, never logs in, and never collects personal data. You are responsible for how you use the data, so review Home Depot's Terms of Service and any applicable regulation before commercial use.

**Can I scrape Home Depot search results?**
Home Depot's robots.txt disallows its `/s/` keyword-search pages, so this Actor deliberately does not crawl them. Category, sub-category and brand pages cover the same catalogue and are explicitly permitted.

**Why can't I get more than 372 products from one category?**
That's Home Depot's own browse limit, not an Actor limitation — their site stops serving deeper pages. Split the category into sub-categories or brand pages to go further.

**Do prices reflect my local store?**
Prices and stock come from a single Home Depot store's context, so treat them as a consistent national baseline rather than a guaranteed local quote. `pickupStore` tells you which store was checked.

**Some products have no price. Why?**
A few items are sold under minimum-advertised-price rules. The Actor resolves the real price where Home Depot publishes it and otherwise leaves `price` empty with an explanation in `priceMessage`.

**Something looks wrong or missing.**
Please open a ticket on the **Issues** tab of this Actor — that's the fastest route to a fix. If you need a variation of this scraper or a custom data pipeline, get in touch and we can build it.

# Actor input Schema

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

Home Depot category, sub-category or brand page URLs (`/b/…`). Individual product page URLs (`/p/…`) are also accepted and always return full detail. Examples: https://www.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8 · https://www.homedepot.com/b/Glitzhome/N-5yc1vZfsc

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

Stop after this many products per start URL. Home Depot allows browsing up to 372 products per category URL — use narrower sub-categories or brand pages to go deeper. Set 0 to take everything available.

## `scrapeDetails` (type: `boolean`):

Also open each product's own page to add its description, full specifications table, key features, UPC, colour, weight, dimensions and return window. Slower and priced higher per product.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8"
    }
  ],
  "maxItems": 50,
  "scrapeDetails": false
}
```

# Actor output Schema

## `results` (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.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/home-depot-listings-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.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/home-depot-listings-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.homedepot.com/b/Outdoors-Garden-Center-Pest-Control-Insect-Control-Insect-Killers/N-5yc1vZ2fkoqg8"
    }
  ]
}' |
apify call piotrv1001/home-depot-listings-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/9S65dgqOF4DEopp4k/builds/G7il0nXzvEBzVUZMF/openapi.json
