# Home Depot Scraper \[Only $1.5💰] | Prices | Stock | Data (`ahmed_jasarevic/homedepot-scraper`) Actor

Scrape Home Depot product data — price, list price, promotions, ratings, per-store stock, specs, UPC and images — from product URLs, item IDs or keyword search. Store-aware pricing by ZIP code. No Home Depot API key required; $0.0015 per product on Apify.

- **URL**: https://apify.com/ahmed\_jasarevic/homedepot-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.47 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Homedepot Scraper

**Scrape Home Depot product data — prices, availability, ratings, specs and stock status — for price monitoring, competitive analysis and e-commerce research.** Works with product URLs, item IDs (SKUs) or keyword search, store-aware pricing via ZIP codes, and outputs clean JSON with no official Home Depot API required.

### Home Improvement Retail Use Cases

- **Home Depot price tracking** — monitor prices and promotions on thousands of SKUs over time (list price vs. selling price, promotions)
- **Competitor price monitoring** — track Home Depot pricing against your own store or other retailers (Lowes, Ace Hardware) for MAP compliance and repricing
- **Product research & assortment analysis** — build a database of Home Depot products: specs, descriptions, highlights, descriptions, ratings, review counts, images
- **Stock & availability monitoring** — watch online stock status per store (by ZIP) for products that go in and out of stock
- **Home improvement trends research** — analyze the product catalog of the largest US home improvement retailer (departments, brands, price ranges)
- **SEO & PPC research** — collect breadcrumbs, product titles and category structure for retail keyword research

### How It Works

The actor drives Home Depot's own **federation-graphql `psSearchModel`** endpoint (the same backend the website uses) with an automatic Akamai cookie session. Keyword searches determine the product department, then page through results — or grab items directly by `itemId`/SKU or product URL. Store-aware details (price, availability, stock) are resolved for a target `storeId` and `zipCode`. No API key needed.

### Build a Home Depot Product Database Without an Official API

Home Depot has no public product API for individuals. Commercial data APIs (WebScrapingAPI, Scrape.do, Unwrangle, RapidAPI listings, BigBox API, …) exist but each requires an API key and per-request fees. This Apify actor needs **no API key**: paste URLs or keywords, pay per result ($0.0015 per product), and get a structured dataset — the Home Depot data source as a simple, scalable API.

### Input

| Field | Type | Required | Default | Notes |
| --- | --- | --- | --- | --- |
| `productUrls` | array | – | \[] | Direct Home Depot product URLs, e.g. `https://www.homedepot.com/p/…`. |
| `itemIds` | array | – | \[] | Home Depot item IDs (item/model numbers on the product page). |
| `searchTerms` | array | – | \[] | Keyword search, e.g. `["RYOBI 18V drill"]`. At least one of `productUrls` / `itemIds` / `searchTerms` is required. |
| `storeId` | string | – | 0121 | Target store ID (default 0121). |
| `zipCode` | string | – | 30033 | ZIP code for store-aware price/availability (US ZIPs). |
| `maxItems` | integer | – | 100 | Max products to export (default 100, max 1000). Free demo: 1 item. |
| `maxItemsPerKeyword` | integer | – | 24 | Max items collected per keyword search term. |
| `proxy` | object | – | off | **US residential proxies are recommended** to avoid blocks. |

#### Example Input

```json
{
    "searchTerms": ["RYOBI 18V ONE+ drill"],
    "storeId": "0121",
    "zipCode": "30033",
    "maxItems": 50
}
```

### Output

One dataset row per product.

| Field | Description |
| --- | --- |
| `itemId` | Home Depot item ID |
| `title` / `brand` | Product title and brand |
| `modelNumber` / `storeSkuNumber` | Model and store SKU |
| `upc` | UPC code |
| `price` / `listPrice` / `currency` | Selling price, list price, currency |
| `promotion` | Active promotion info |
| `rating` / `reviewCount` | Star rating and review counts |
| `availability` / `stock` | Stock status and availability message |
| `specifications` | Specs table (key/value) |
| `description` / `highlights` | Full description and feature bullets |
| `images` | Product image URLs |
| `breadcrumbs` | Category structure |
| `productUrl` / `productDepartment` | URL and department |
| `collectedAt` | Scrape timestamp |

#### Example Output

```json
{
    "itemId": "207180444",
    "title": "RYOBI ONE+ 18V Cordless 1/2 in. Drill/Driver Kit",
    "brand": "RYOBI",
    "modelNumber": "PSBDD01K",
    "upc": "885911823456",
    "price": 59.0,
    "listPrice": 79.0,
    "currency": "USD",
    "promotion": null,
    "rating": 4.5,
    "reviewCount": 1832,
    "availability": "Online",
    "stock": { "storeId": "914", "storeName": "Mount Laurel", "state": "NJ", "quantity": 496, "isInStock": true, "isOutOfStock": false, "isUnavailable": false },
    "productDepartment": "Power Tools",
    "productUrl": "https://www.homedepot.com/p/207180444",
    "collectedAt": "2026-09-23T09:00:00.000Z"
}
```

Download the dataset as **JSON, HTML, CSV or Excel**, or pull it via the Apify API.

### Integrations & Automation

Use the actor's **API endpoint** from a repricer, price-matching bot or BI pipeline; trigger **webhooks** on run completion; connect **Zapier / Make** for alerts when prices drop. For price tracking, schedule **daily runs** per SKU list — recurring runs power price-drop alerts and long-term pricing history in your own database.

### Related Actors

- [Home Depot & Lowe's Price Tracker with Penny Detection](https://apify.com/pulsewatch/dealwatch-scraper) — HD + Lowe's clearance/penny-item monitoring
- [Ace Hardware Product Scraper](https://apify.com/sian.agency/ace-hardware-product-scraper) — Ace Hardware catalog with detail enrichment
- [USA Price Comparison Actor](https://apify.com/m3web/usa-price-comparison-actor) — US retail price comparison by UPC/GTIN

### FAQ

#### Why use this actor instead of Home Depot's API?

Home Depot has **no public product API** for individuals. The alternatives are commercial data services (WebScrapingAPI, Scrape.do, Unwrangle, RapidAPI, omkarcloud, BigBox API) that each need their own account, API key and per-request pricing. This actor needs no key, runs on Apify pay-per-result, and returns the same product, price and availability data as a clean dataset via API, CSV, Excel or JSON.

#### What are alternatives to this actor for home improvement data?

For Home Depot + Lowe's clearance monitoring, see [pulsewatch/dealwatch-scraper](https://apify.com/pulsewatch/dealwatch-scraper). For other hardware retailers, [Ace Hardware Product Scraper](https://apify.com/sian.agency/ace-hardware-product-scraper) and [USA Price Comparison](https://apify.com/m3web/usa-price-comparison-actor) cover adjacent ground. General-purpose scrapers (web-scraper, browser-based crawlers) can also target homedepot.com but typically need proxy management and JS rendering tuned by hand — this actor handles the graphql endpoint, Akamai session and store-aware pricing for you.

#### Can it check store stock in specific locations?

Yes — supply a US `zipCode` (and optionally `storeId`) and availability/stock status is resolved store-aware for that area. For nationwide coverage, run per ZIP; residential US proxies are recommended for large runs.

#### Which ZIP code does the default `0121` store map to?

`0121` maps to the Atlanta-area store (default `30033` ZIP). You can override both freely for any US location.

#### Does it return the list price vs. sale price?

Yes — `price` (selling), `listPrice` (MSRP) and `promotion` are separate fields, which is what makes price-drop tracking and discount-rate math possible.

#### Is scraping homedepot.com legal?

Web scraping operates in a legal gray area. This actor reads only public product pages/search responses and does not bypass logins or CAPTCHAs. Users are responsible for complying with homedepot.com's Terms of Service and applicable law; note that Home Depot may block heavy traffic — use respectful schedules and US residential proxies.

### For AI Agents & LLM Apps

**Purpose:** Returns structured Home Depot product data — prices (list/sale), ratings, availability per ZIP, specs, descriptions, UPC, images — from product URLs, item IDs or keyword search.

**Minimal input:**

```json
{ "searchTerms": ["RYOBI 18V drill"], "maxItems": 50 }
```

**Output fields:** `itemId`, `title`, `brand`, `modelNumber`, `storeSkuNumber`, `upc`, `price`, `listPrice`, `currency`, `promotion`, `rating`, `reviewCount`, `availability`, `stock`, `specifications`, `description`, `highlights`, `images`, `breadcrumbs`, `productUrl`, `productDepartment`, `collectedAt`.

**Behaviors an agent should know:**

- At least one of `productUrls`, `itemIds`, or `searchTerms` must be set; they can be combined.
- Prices are **store-aware**: supply a `zipCode` (+ optional `storeId`, default 0121/Atlanta) for correct local availability and pricing.
- The free demo tier returns a single item; paid runs default to 100 and cap at 1000 (`maxItems`).
- Keyword search determines the product department automatically via Home Depot's `psSearchModel` graphql endpoint; a session cookie is handled automatically.
- US residential proxies are recommended for high-volume runs to avoid blocks.
- **Billing (pay-per-result):** $0.0015 per product + $0.0005 actor start.

### SEO Keywords

home depot scraper, homedepot.com scraper, home depot product data, home depot price tracker, home depot price monitoring, home depot api alternative, home depot stock checker, home depot sku lookup, home improvement price data, lowes vs home depot pricing, home depot ratings scraper, home depot availability by zip, home depot graphql scraper, home depot clearance monitor, hardware store data extraction, diy retail product database, home depot lead generation, home depot upc lookup, ryobi price tracker, home depot product database

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by The Home Depot**.

It accesses only **publicly available product pages and Home Depot's public search API (federation-graphql)** — no login bypass, no CAPTCHA solving, no credentials. It does not automate purchasing or inventory manipulation.

Users are responsible for their own compliance with homedepot.com's Terms of Service and applicable law, including respectful request volumes. This section is informational, not legal advice.

# Actor input Schema

## `productUrls` (type: `array`):

Optional: exact Home Depot product page URLs to scrape, e.g. https://www.homedepot.com/p/Husky-46-in-W-x-18-in-D-9-Drawer-Black-Mobile-Workbench-Cabinet-H46MWC9V18/318819159. Leave empty and use a search term to scrape by keyword instead.

## `itemIds` (type: `array`):

Optional: Home Depot 9-digit item IDs (the number at the end of a product URL), e.g. 318819159

## `searchTerms` (type: `array`):

Keywords to search on homedepot.com. Matching products are resolved to item IDs and then scraped in full detail.

## `storeId` (type: `string`):

Home Depot store number used for local pricing and per-store stock/inventory. Defaults to 0121 (Atlanta-Cumberland).

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

ZIP code used for fulfillment/delivery resolution.

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

Maximum number of products to scrape per run.

## `maxItemsPerKeyword` (type: `integer`):

How many products to collect per search term before scraping details.

## `proxy` (type: `object`):

Proxies used by the Actor. Defaults to Apify US residential proxies — Home Depot geo-blocks non-US IPs (403 Access Denied), so a US exit IP is required.

## Actor input object example

```json
{
  "productUrls": [],
  "searchTerms": [
    "cordless drill"
  ],
  "storeId": "0121",
  "zipCode": "30033",
  "maxItems": 100,
  "maxItemsPerKeyword": 24,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "productUrls": [],
    "searchTerms": [
        "cordless drill"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/homedepot-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 = {
    "productUrls": [],
    "searchTerms": ["cordless drill"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "productUrls": [],
  "searchTerms": [
    "cordless drill"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call ahmed_jasarevic/homedepot-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/homedepot-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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