# Home Depot Scraper - Prices, Store Stock, Aisle & Bay (`clearpath/homedepot-scraper`) Actor

Scrape Home Depot prices, discounts and stock for your chosen store, with aisle and bay and stock at up to 50 nearby stores. Get full product specs, photos and manuals. Search by keyword, URL or product ID; add reviews, Q\&A and change tracking.

- **URL**: https://apify.com/clearpath/homedepot-scraper.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.49 / 1,000 products

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

[![1,000 Home Depot products. Under 80 seconds. Prices, stock, aisle and bay, with stock at up to 50 nearby stores. Timing example uses 10 nearby stores.](https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/homedepot-speed-stock-76ad49011e0d.png)](https://console.apify.com/actors/MPAoaB7AdJhxbD9ar/input)

From **Clearpath**, creators of [Coles Scraper](https://apify.com/clearpath/coles-scraper) and [Amazon Buy Box & Seller Offers Tracker](https://apify.com/clearpath/amazon-buybox-api), with **20,000+ combined lifetime runs** across those two retail price and stock trackers.

### Get Home Depot prices and stock, fast

- **1,000 products in under 80 seconds.** Our example run included full product details and stock at 10 nearby stores. Reviews and Q\&A were off. Timing varies by search and settings.
- **Check up to 50 nearby stores.** Get stock counts with store names and locations. The selected store also includes its price, aisle and bay where available.
- **Keep the product details.** Prices, discounts, clearance, full specifications, photos and manuals. Add reviews and Q\&A when needed; each review or question is billed separately.

Prices are for the selected store. Nearby stores report stock counts. Shelf locations and stock data are included where available.

<a href="https://console.apify.com/actors/MPAoaB7AdJhxbD9ar/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/homedepot-speed-stock-be82e0f7b491.svg" width="320" height="48" alt="Get Home Depot prices and stock"></a>

#### Try one product across nearby stores

Open the [actor input](https://console.apify.com/actors/MPAoaB7AdJhxbD9ar/input) and paste this example. It requests the Cumberland store's price and details for one product, plus stock at up to 50 nearby stores. The speed example used 10 nearby stores.

```json
{
  "productIds": [
    "322138483"
  ],
  "storeId": "121",
  "maxStores": 50,
  "includeDetails": true,
  "includeReviews": false,
  "includeQuestions": false
}
```

Product and start charges apply at the [current rates](https://apify.com/clearpath/homedepot-scraper/pricing). Product details and nearby-store stock are included in the product charge. Export as JSON, CSV or Excel; JSON keeps the nearby-store list and specifications nested.

<table>
<tr>
<td style="padding:10px 14px;background:#F96302;border:none;border-radius:4px 4px 0 0"><span style="color:#111111;font-size:14px;font-weight:700;letter-spacing:0.5px">Clearpath Retail</span>
<span style="color:#332111;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Store prices, deals and stock from the retailers shoppers check first</span></td>
</tr>
<tr>
<td style="padding:6px;border:1px solid #E7E5E4;border-top:none;border-radius:0 0 4px 4px;background:#FFF3EB">
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FFE4D6"><span style="white-space:nowrap"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/homedepot-scraper-icon-512-eeb98cc07758.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://console.apify.com/actors/MPAoaB7AdJhxbD9ar/input" style="color:#8C3600;text-decoration:none;font-weight:700;font-size:13px">Home Depot</a></span><br>
<span style="color:#8C3600;font-size:12px;font-weight:600">&#10148; You are here</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FFF3EB"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-FzxNShGGntfilAEDe-9OiAyL7bAA-coles-scraper-icon-v1.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/coles-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Coles</a></span><br>
<span style="color:#665E58;font-size:12px">Prices and stock by store</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FFF3EB"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-cfmAVd7XDm7dWNSPg-RS0c2sB7Ol-woolworths-scraper-icon-v3.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/woolworths-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Woolworths AU</a></span><br>
<span style="color:#665E58;font-size:12px">Prices, specials, stock</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FFF3EB"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-tzz929FHne71wIJr2-GmGLY8fUrj-amazon-buybox-api-logo.jpg" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/amazon-buybox-api" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Amazon Buy Box</a></span><br>
<span style="color:#665E58;font-size:12px">Sellers and offers</span></span>
<span style="display:inline-block;vertical-align:top;margin:4px;padding:8px 12px;border:1px solid #E7E5E4;border-radius:4px;background:#FFF3EB"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-McKKbD3dnz0dT1zQx-bai17tPTHH-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/idealo-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">idealo</a></span><br>
<span style="color:#665E58;font-size:12px">European offers and price history</span></span>
</td>
</tr>
</table>

### What can you do with this Home Depot scraper?

- **Check store stock for many products at once.** Paste product IDs or links and get the shelf count at your store and at the nearby stores that carry each product (up to 50, nearest first), with each store's address, phone and hours.
- **Find clearance and deals near you.** Every row carries the store's clearance price, the online sale price, the discount in dollars and percent, Special Buys and bulk prices. Filter to clearance or a minimum discount.
- **Track prices and stock.** Schedule the same input and turn on change tracking: every product is marked new, price changed, stock changed or unchanged, with the previous price and shelf count.
- **Build a product catalog.** Search or open a category and collect every product with its UPC, model number, store SKU, brand, category path, images, specifications, manuals and videos.
- **Send shoppers to the right shelf.** Aisle and bay at the selected store, and every other shelf location of the product there.
- **Read what buyers say.** Turn on reviews and questions to get them as rows, with photos, brand replies and answers.

### How to scrape Home Depot products, prices and stock

1. Add search keywords, Home Depot links (product, search or category pages) or product IDs.
2. Choose the store by its number, or give a ZIP code and the nearest store is used.
3. Set how many products you want per search, or leave it empty for every product Home Depot lists.
4. Run, then download JSON, CSV or Excel, or send the data on with Apify integrations.

#### Stock at 25 stores for known products

```json
{
  "productIds": [
    "320326855",
    "322138483",
    "317991381"
  ],
  "zipCode": "30339",
  "maxStores": 25
}
```

#### Clearance at one store, from a category page

```json
{
  "startUrls": [
    "https://www.homedepot.com/b/Tools-Power-Tools-Drills/N-5yc1vZc27f"
  ],
  "storeId": "121",
  "onlyClearance": true,
  "maxResultsPerQuery": 50
}
```

With a filter on, the limit counts matching products, so the actor reads deeper into the category until it has them.

#### Products with their reviews and questions

```json
{
  "productIds": [
    "322138372"
  ],
  "storeId": "121",
  "includeReviews": true,
  "maxReviewsPerProduct": 100,
  "includeQuestions": true,
  "maxQuestionsPerProduct": 20
}
```

#### Input options

| Parameter | Type | Default | Meaning |
|---|---|---|---|
| `searchQueries` | list | | Words you would type into Home Depot's search box |
| `startUrls` | list | | Product (`/p/`), search (`/s/`) or category (`/b/`) links from homedepot.com |
| `productIds` | list | | 9-digit product IDs ("Internet #") |
| `maxResultsPerQuery` | number | every product | Products per keyword, search link or category; empty or `0` for all |
| `storeId` | text | nearest to the ZIP | Store number for price, shelf stock and aisle |
| `zipCode` | text | 30339 when no store is given | Picks the nearest store; with a store number it only sets the delivery location |
| `maxStores` | number | `10` | Nearby stores with shelf stock per product; `0` turns it off |
| `sortBy` | choice | `best_match` | `best_match`, `top_sellers`, `top_rated`, `price_low_to_high`, `price_high_to_low`, `newest` |
| `inStoreOnly` | true/false | `false` | Only products available at the selected store |
| `minPrice`, `maxPrice` | number | | Price range in dollars |
| `onlyOnSale`, `onlyClearance` | true/false | `false` | Only discounted products, or only products with a clearance price at the store |
| `minDiscountPercent` | number | | Only products discounted at least this much |
| `includeDetails` | true/false | `true` | Description, bullets, every specification, all images, videos, manuals and breadcrumbs |
| `includeReviews`, `maxReviewsPerProduct`, `reviewsSort` | | `false`, `20`, most helpful | Reviews as separate rows |
| `includeQuestions`, `maxQuestionsPerProduct` | | `false`, `20` | Questions with all their answers as separate rows |
| `trackChanges`, `onlyChanges` | true/false | `false` | Compare with the previous run of the same input; optionally return only new or changed products |

Filters are off by default, so a search returns everything Home Depot lists for it.

### What data can you extract from Home Depot?

Every run writes products, and optionally reviews and questions, to one dataset, told apart by `type`.

**Product rows** carry the identity (item ID, family ID, UPC, model number, store SKU, internet SKU, brand, title, link, every image), the price at the selected store (current, regular, sale, dollars and percent off, promotion with dates and code, Special Buy, store clearance price, bulk price, price per unit), rating and review count, availability, shelf stock at the store with aisle and bay, warehouse stock, store pickup and delivery options with dates and charges, the selected store (address, phone, coordinates, hours, pickup, tool-rental and Pro Desk hours, services), stock at nearby stores, category path, badges, description, bullets, highlights, every specification, key features, manuals and guides, videos, options such as colors and sizes, coverage, return policy and more. Each code comes with its meaning in words, for example `storeStatus` `DELETED` with `storeStatusLabel` "Not carried at this store".

**Review rows** carry rating, title, text, author, date, verified purchase, recommendation, helpful votes, photos and brand replies. **Question rows** carry the question, its date and author, and every answer with whether the brand gave it.

#### Example: a product

`images` shows 2 of 12; `nearbyStores` shows 2 of 10; `fulfillment` shows 2 of 3; `documents` shows 2 of 3; `specificationGroups` shows 1 of 3; `keyFeatures` shows 2 of 6; `bullets` shows 2 of 12; `storeLocations` shows 2 of 3; the first specification group shows 3 of its 15 entries. The full row has every entry.

```json
{
  "type": "product",
  "itemId": "319992299",
  "parentId": "331555607",
  "title": "XR 20V MAX Lithium-Ion Cordless Brushless Screw Gun (Tool Only)",
  "brand": "DEWALT",
  "modelNumber": "DCF630B",
  "storeSku": "1008340854",
  "internetSku": "1008340854",
  "upc": "885911801898",
  "upcGtin13": "0885911801898",
  "vendorNumber": "72793",
  "productType": "MERCHANDISE",
  "hasVariants": true,
  "variantCount": 2,
  "variants": null,
  "productSubType": null,
  "specialOrderSku": null,
  "toolRentalSku": null,
  "url": "https://www.homedepot.com/p/DEWALT-XR-20V-MAX-Lithium-Ion-Cordless-Brushless-Screw-Gun-Tool-Only-DCF630B/319992299",
  "image": "https://images.thdstatic.com/productImages/66b7ae1e-dff9-4401-9962-8b9ec963a46a/svn/dewalt-screw-guns-dcf630b-64_1000.jpg",
  "images": [
    "https://images.thdstatic.com/productImages/66b7ae1e-dff9-4401-9962-8b9ec963a46a/svn/dewalt-screw-guns-dcf630b-64_1000.jpg",
    "https://images.thdstatic.com/productImages/597e21fd-e7af-41b7-b09f-aca45e683ddb/svn/dewalt-screw-guns-dcf630b-e1_1000.jpg"
  ],
  "price": 149.0,
  "originalPrice": 199.0,
  "salePrice": 149.0,
  "isOnSale": true,
  "dollarOff": 50.0,
  "percentOff": 25.0,
  "currency": "USD",
  "unitOfMeasure": "each",
  "priceMessage": null,
  "promotion": {
    "type": "DISCOUNT",
    "description": null,
    "longDescription": null,
    "savingsCenter": "New Lower Prices",
    "startDate": "2026-07-31",
    "endDate": "2026-11-01",
    "dollarOff": 50.0,
    "percentOff": 25.0,
    "promoCode": "51730226",
    "isCartLevel": false,
    "experienceTag": null,
    "rewardTiers": null
  },
  "savingsCenter": "New Lower Prices",
  "isSpecialBuy": false,
  "isClearance": false,
  "clearancePrice": null,
  "clearanceDollarOff": null,
  "clearancePercentOff": null,
  "bulkPrice": null,
  "bulkQuantity": null,
  "bulkPricePerUnit": null,
  "pricePerUnit": null,
  "unitsPerCase": null,
  "caseUnitOfMeasure": null,
  "unitsOriginalPrice": null,
  "minimumAdvertisedPrice": null,
  "rating": 3.9922,
  "reviewCount": 258,
  "availabilityType": "Shared",
  "availability": "Online and in stores",
  "buyable": true,
  "discontinued": false,
  "storeQuantity": 23,
  "inStockAtStore": true,
  "limitedStockAtStore": false,
  "onlineQuantity": 2412,
  "pickupAvailable": true,
  "deliveryAvailable": true,
  "freeShipping": true,
  "backordered": false,
  "backorderedShipDate": null,
  "excludedShipStates": [
    "GU",
    "PR",
    "VI"
  ],
  "storeStatus": "ACTIVE",
  "storeStatusLabel": "Sold at this store",
  "fulfillment": [
    {
      "method": "Store pickup",
      "methodCode": "bopis",
      "group": "pickup",
      "available": true,
      "isDefault": true,
      "locationId": "121",
      "locationName": "Cumberland",
      "fromWarehouse": false,
      "quantity": 23,
      "inStock": true,
      "limitedQuantity": false,
      "outOfStock": false,
      "deliveryStart": "2026-10-23",
      "deliveryEnd": "2026-10-23",
      "deliveryTimeline": "today",
      "deliveryCharge": null,
      "freeDeliveryThreshold": null,
      "freeShipping": false,
      "curbsidePickup": true
    },
    {
      "method": "Express delivery from store",
      "methodCode": "express delivery",
      "group": "delivery",
      "available": true,
      "isDefault": true,
      "locationId": "121",
      "locationName": null,
      "fromWarehouse": false,
      "quantity": 23,
      "inStock": true,
      "limitedQuantity": false,
      "outOfStock": false,
      "deliveryStart": "2026-10-23",
      "deliveryEnd": "2026-10-23",
      "deliveryTimeline": "today",
      "deliveryCharge": 0.0,
      "freeDeliveryThreshold": null,
      "freeShipping": true,
      "curbsidePickup": null
    }
  ],
  "store": {
    "storeId": "121",
    "name": "Cumberland",
    "street": "2450 Cumberland Pkwy",
    "city": "Atlanta",
    "state": "GA",
    "zip": "30339",
    "county": "Cobb",
    "country": "US",
    "phone": "(770)432-9930",
    "latitude": 33.862126,
    "longitude": -84.476161,
    "distanceMiles": 1.27,
    "hours": {
      "monday": {
        "open": "6:00",
        "close": "22:00"
      },
      "tuesday": {
        "open": "6:00",
        "close": "22:00"
      },
      "wednesday": {
        "open": "6:00",
        "close": "22:00"
      },
      "thursday": {
        "open": "6:00",
        "close": "22:00"
      },
      "friday": {
        "open": "6:00",
        "close": "22:00"
      },
      "saturday": {
        "open": "6:00",
        "close": "22:00"
      },
      "sunday": {
        "open": "8:00",
        "close": "20:00"
      }
    },
    "curbsidePickupHours": {
      "monday": {
        "open": "09:00",
        "close": "18:00"
      },
      "tuesday": {
        "open": "09:00",
        "close": "18:00"
      },
      "wednesday": {
        "open": "09:00",
        "close": "18:00"
      },
      "thursday": {
        "open": "09:00",
        "close": "18:00"
      },
      "friday": {
        "open": "09:00",
        "close": "18:00"
      },
      "saturday": {
        "open": "09:00",
        "close": "18:00"
      },
      "sunday": {
        "open": "09:00",
        "close": "18:00"
      }
    },
    "toolRentalHours": {
      "monday": {
        "open": "6:00",
        "close": "22:00"
      },
      "tuesday": {
        "open": "6:00",
        "close": "22:00"
      },
      "wednesday": {
        "open": "6:00",
        "close": "22:00"
      },
      "thursday": {
        "open": "6:00",
        "close": "22:00"
      },
      "friday": {
        "open": "6:00",
        "close": "22:00"
      },
      "saturday": {
        "open": "6:00",
        "close": "22:00"
      },
      "sunday": {
        "open": "8:00",
        "close": "20:00"
      }
    },
    "proDeskHours": {
      "monday": {
        "open": "6:00",
        "close": "22:00"
      },
      "tuesday": {
        "open": "6:00",
        "close": "22:00"
      },
      "wednesday": {
        "open": "6:00",
        "close": "22:00"
      },
      "thursday": {
        "open": "6:00",
        "close": "22:00"
      },
      "friday": {
        "open": "6:00",
        "close": "22:00"
      },
      "saturday": {
        "open": "6:00",
        "close": "22:00"
      },
      "sunday": {
        "open": "8:00",
        "close": "20:00"
      }
    },
    "toolRentalPhone": "(770)801-6400",
    "proDeskPhone": "(770)801-6415",
    "homeServicesPhone": "(844)476-2140",
    "services": [
      "Load 'N Go truck rental",
      "Propane exchange",
      "Tool rental",
      "Penske truck rental",
      "Key cutting",
      "Free Wi-Fi",
      "Expanded flooring showroom",
      "Large equipment rental",
      "Kitchen showroom",
      "Virtual assistance"
    ],
    "fulfillmentOptions": [
      "Buy online, pick up in store",
      "Ship to store",
      "Delivery from store",
      "Same-day delivery from store",
      "Curbside pickup",
      "Assembly",
      "Appliance store pickup"
    ],
    "manager": "Rivera, Giovanni E",
    "timeZone": "EST5EDT",
    "storeType": "retail",
    "openedOn": "1993-04-08",
    "marketNumber": "0001",
    "url": "https://www.homedepot.com/l/Cumberland/GA/Atlanta/30339/121"
  },
  "nearbyStores": [
    {
      "storeId": "121",
      "name": "Cumberland",
      "distanceMiles": 1.27,
      "quantity": 23,
      "onHandQuantity": 24,
      "inStock": true,
      "availableBy": "Store pickup",
      "pickupAvailable": true,
      "curbsidePickup": true,
      "stockMessage": "23 in stock",
      "street": "2450 Cumberland Pkwy",
      "city": "Atlanta",
      "state": "GA",
      "zip": "30339",
      "phone": "(770)432-9930",
      "hours": {
        "monday": {
          "open": "6:00",
          "close": "22:00"
        },
        "tuesday": {
          "open": "6:00",
          "close": "22:00"
        },
        "wednesday": {
          "open": "6:00",
          "close": "22:00"
        },
        "thursday": {
          "open": "6:00",
          "close": "22:00"
        },
        "friday": {
          "open": "6:00",
          "close": "22:00"
        },
        "saturday": {
          "open": "6:00",
          "close": "22:00"
        },
        "sunday": {
          "open": "8:00",
          "close": "20:00"
        }
      }
    },
    {
      "storeId": "6986",
      "name": "Buckhead",
      "distanceMiles": 6.82,
      "quantity": 13,
      "onHandQuantity": 14,
      "inStock": true,
      "availableBy": "Store pickup",
      "pickupAvailable": true,
      "curbsidePickup": true,
      "stockMessage": "13 in stock",
      "street": "2525 Piedmont Road Ne",
      "city": "Atlanta",
      "state": "GA",
      "zip": "30324",
      "phone": "(404)841-5608",
      "hours": {
        "monday": {
          "open": "6:00",
          "close": "22:00"
        },
        "tuesday": {
          "open": "6:00",
          "close": "22:00"
        },
        "wednesday": {
          "open": "6:00",
          "close": "22:00"
        },
        "thursday": {
          "open": "6:00",
          "close": "22:00"
        },
        "friday": {
          "open": "6:00",
          "close": "22:00"
        },
        "saturday": {
          "open": "6:00",
          "close": "22:00"
        },
        "sunday": {
          "open": "8:00",
          "close": "20:00"
        }
      }
    }
  ],
  "aisle": "14",
  "bay": "004",
  "aisleBayLocation": "Aisle 14 - Bay 4",
  "breadcrumbs": [
    "Tools",
    "Power Tools",
    "Drills",
    "Screw Guns"
  ],
  "category": "Screw Guns",
  "categoryUrl": "https://www.homedepot.com/b/Tools-Power-Tools-Drills-Screw-Guns/N-5yc1vZc7jh",
  "department": "Screw Guns",
  "departmentId": "569645",
  "classNumber": "9",
  "subClassNumber": "31",
  "badges": [
    {
      "name": "bestseller",
      "label": "Best Seller",
      "message": "BestSeller in Screw Guns",
      "endDate": null
    }
  ],
  "isSponsored": false,
  "sponsoredCampaignId": null,
  "description": "The DCF630 Brushless Drywall Screwgun features a brushless motor and electronic mode select to help optimize usage in a range of drywall hanging applications. Four dedicated tool modes enable operation of the screwgun in Trigger Mode (High Speed), Trigger Mode (Low Speed), PushStart Mode, and Lock-On Mode. A top-mounted electronic mode select enables fast, one-handed switching between the tool's four modes. The DCF630's compact size and weight are designed to reduce fatigue during periods of extended usage, while its wide upper grip flange enables secure placement of thumb and forefinger.",
  "bullets": [
    "Brushless motor for efficient performance and runtime",
    "Wide variable speed range with dedicated High and Low settings helps optimize usage in light- and heavy-gauge substrates"
  ],
  "highlights": [
    "Brushless motor for efficient performance",
    "Wide variable speed range with dedicated High and Low settings",
    "4 dedicated tool modes enable versatile operation"
  ],
  "specifications": {
    "Battery Amp Hours": "No Battery",
    "Battery Power Type": "Lithium Ion",
    "Battery Voltage (V)": "20V",
    "Charger Included": "Charger Not Included",
    "Color Family": "Yellow",
    "Cordless Tool Type": "Screw Gun",
    "Cordless/Corded": "Cordless",
    "Included": "Tool Only",
    "Maximum Speed (RPM)": "4850 RPM",
    "Motor Type": "Brushless",
    "Number of Total Batteries Included": "0",
    "Power Tool Features": "Depth Adjustment,LED Light",
    "Product Weight (lb.)": "2.6 lb",
    "Returnable": "90-Day",
    "Tools Product Type": "Other",
    "Manufacturer Warranty": "90 Day Money Back Guarantee1 Year Free Service Contract3 Year Limited Warranty",
    "Product Depth (in.)": "11.438 in",
    "Product Height (in.)": "7.188 in",
    "Product Width (in.)": "3.375 in"
  },
  "specificationGroups": [
    {
      "title": "Details",
      "specifications": [
        {
          "name": "Battery Amp Hours",
          "value": "No Battery"
        },
        {
          "name": "Battery Power Type",
          "value": "Lithium Ion"
        },
        {
          "name": "Battery Voltage (V)",
          "value": "20V"
        }
      ]
    }
  ],
  "keyFeatures": [
    {
      "name": "Cordless/Corded",
      "value": "Cordless"
    },
    {
      "name": "Motor Type",
      "value": "Brushless"
    }
  ],
  "documents": [
    {
      "name": "SDS",
      "url": "https://images.thdstatic.com/catalog/pdfImages/NR/NR"
    },
    {
      "name": "Warranty",
      "url": "https://images.thdstatic.com/catalog/pdfImages/fe/fede985e-9c69-410b-8c2e-cfb7e185101d.pdf"
    }
  ],
  "videos": [
    {
      "title": "DCF630B Video",
      "url": "https://fastly-signed-us-east-1-prod.brightcovecdn.com/media/v1/pmp4/static/clear/1834613806001/460526a0-e171-45fe-8fca-463922799b09/f840e5f1-43bf-4e3e-a20c-c51368c8467b/main.mp4?fastly_token=NmIwMDEwNjlfM2JjMThkZjllNzFmZWVkN2U2OGRmYjAzODM5MDgzNzQ1M2YzZWRlMWRiOGI0MzljNDFhNmVlYjA5YzM5NTg5Y18vL2Zhc3RseS1zaWduZWQtdXMtZWFzdC0xLXByb2QuYnJpZ2h0Y292ZWNkbi5jb20vbWVkaWEvdjEvcG1wNC9zdGF0aWMvY2xlYXIvMTgzNDYxMzgwNjAwMS80NjA1MjZhMC1lMTcxLTQ1ZmUtOGZjYS00NjM5MjI3OTliMDkvZjg0MGU1ZjEtNDNiZi00ZTNlLWEyMGMtYzUxMzY4Yzg0NjdiL21haW4ubXA0&pubid=66036796001",
      "thumbnail": "https://cf-images.us-east-1.prod.boltdns.net/v1/jit/1834613806001/460526a0-e171-45fe-8fca-463922799b09/main/160x90/14s784ms/match/image.jpg?pubId=66036796001",
      "description": "DEWALT XR 20V MAX Lithium-Ion Cordless Brushless Screw Gun (Tool Only) (DCF630B)",
      "videoId": "6362809936112",
      "type": "BRIGHTCOVE VIDEO",
      "kind": "Product video"
    }
  ],
  "spin360Url": null,
  "augmentedRealityUrl": null,
  "collection": {
    "id": "Family-318246743",
    "name": "DEWALT Cordless Fastening",
    "url": "https://www.homedepot.com/collection/Tools/DEWALT-Cordless-Fastening/Family-318246743?omsid=319992299",
    "type": "Integrated Brand Template"
  },
  "coverage": null,
  "wasPriceMin": null,
  "wasPriceMax": null,
  "priceHiddenUntilCart": false,
  "installation": null,
  "returnPolicy": "90-Day",
  "quantityLimit": 5,
  "minimumOrderQuantity": null,
  "hazardCode": "NR",
  "hazardLabel": "Not regulated for shipping",
  "prop65Warning": true,
  "protectionPlanSku": "315046851",
  "ecoRebate": false,
  "isLiveGoods": false,
  "genericName": null,
  "scheduleAMeasure": false,
  "subscriptionEligible": false,
  "searchQuery": "dewalt cordless drill",
  "sourceType": "search",
  "sourceUrl": null,
  "sortBy": "best_match",
  "position": null,
  "detailsIncluded": true,
  "scrapedAt": "2026-10-23T14:42:34Z",
  "storeLocations": [
    {
      "aisle": "08",
      "bay": "EC1",
      "location": "Aisle 8 - Bay EC1",
      "isPrimary": false,
      "displayType": "BUSINESS_CARD",
      "display": "Shelf card"
    },
    {
      "aisle": "14",
      "bay": "004",
      "location": "Aisle 14 - Bay 4",
      "isPrimary": true,
      "displayType": "BIN",
      "display": "Bin"
    }
  ]
}
```

#### Example: a review

```json
{
  "type": "review",
  "itemId": "321488482",
  "reviewedItemId": "206541015",
  "reviewId": "238786092",
  "rating": 4.0,
  "ratingRange": 5,
  "title": "Great saw but has some flaws",
  "text": "Had a 12\" Dewalt sliding compound miter saw for 25 yrs. Electrical safety brake doesn't work right anymore.  Takes 3 seconds to stop, even after trying to fix it, and thats unacceptable with certain cuts.  The cost for me selling the old and getting a new one would be only about $120, so it sounded great.  Anyhow, I am looking to return the new one because of 2 major issues.  The first is that many more of the components are not the same quality as the old.  The old parts are of thicker gauge and mostly metal, whereas, many of the new saw components are thinner and plastic.  For instance, the stainless steel miter guide with detents is thinner and I'm not sure how well it will hold accuracy after years of use and wear.  The old miter gauge was thicker and even had a bend in the outside curve that beefs the detent up quite a bit.  \r\n\r\nBut the major problem I have with the saw is with the rear fences that slide toward and away from the blade, allowing for angled cuts and such.  Though the left adjustable fence is milled well, and is in plane with the permanent rear vertical support, the right fence is not.  The right fence is more than 1/64\" out of alignment with the rest of the vertical supports.  And the rear fence also seats at a vertical tilt when it is locked in place.  So the right rear fence may help support the piece, but when you finish a cut, you like will get a bind on the saw blade as the waste part moves.  Who wants a bed or rear support that isn't square or flat?\r\n\r\nI really like the other parts of the saw, and it seemed promising, but I'm not sure I can live with these defects of the saw.  I thought this might be a defective saw fence, but I examined the display model in HD, and discovered that they are milled the same, and that all will likely have this defect.  Its a shame, because the old saw has been a beast and owes me nothing, but I think I will likely stick with the old one. \r\n\r\nIf one buys this saw for general cutting, I don't think you will find a better saw at this price point.  But for those who want dead-on accuracy for precision work, this may not fit the bill.",
  "author": "Jewelryboxmaker",
  "authorId": "29kqktf7e8eglnp4908798gyn",
  "submittedAt": "2020-11-13T17:06:30.000+00:00",
  "isRecommended": true,
  "verifiedPurchaser": false,
  "isSyndicated": false,
  "isFeatured": false,
  "campaignId": "VOC_survey_Store_Review_DESKTOP",
  "helpfulVotes": 57,
  "unhelpfulVotes": 0,
  "photos": [
    "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86aG9tZWRlcG90/46559c7e-f9df-5867-93b1-7d7d7dee8eaa"
  ],
  "brandResponses": null,
  "scrapedAt": "2026-10-23T15:02:25Z"
}
```

`photos` shows 1 of 2.

Home Depot shares reviews across a product's colors and sizes; `reviewedItemId` names the option the review was written on.

#### Example: a question

```json
{
  "type": "question",
  "itemId": "322138483",
  "askedOnItemId": "322138483",
  "questionId": "11543516",
  "question": "Why do you say \"two tools\" if you only have one?",
  "questionDetails": null,
  "author": "Alfredo",
  "askedAt": "2026-10-11T22:03:25.000+00:00",
  "answerCount": 1,
  "answers": [
    {
      "answerId": "15617048",
      "text": "The DCK225D2 is a combo kit that includes 2 tools included, a Drill/Driver and an Impact Driver.",
      "author": "DewaltProductExpert",
      "answeredAt": "2026-10-14T14:01:26.000+00:00",
      "isBrandAnswer": true,
      "isFeatured": false,
      "authorId": "BRAND_ANSWERS_Dewalt",
      "moderationStatus": "APPROVED"
    }
  ],
  "scrapedAt": "2026-10-23T15:02:26Z"
}
```

### Tracking price and stock changes

Turn on **Track price and stock changes** (`trackChanges`) and schedule the same input. The first run marks every product `new`; later runs mark each one `priceChanged`, `stockChanged` or `unchanged` and add the previous price and shelf count. With **Only new or changed products** (`onlyChanges`), unchanged products are skipped and not charged. The history is kept in your own Apify storage. Excerpt of a second run:

```json
{
  "itemId": "321488482",
  "title": "15 Amp Corded 12 in. Double Bevel Sliding Compound Miter Saw, Blade Wrench and Material Clamp",
  "price": 399.0,
  "storeQuantity": 3,
  "change": "unchanged",
  "previousPrice": 399.0,
  "previousQuantity": 3,
  "priceDifference": 0.0
}
```

Connect the dataset to Slack, email, Google Sheets or a webhook with Apify [integrations](https://docs.apify.com/platform/integrations) to get alerts.

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

You pay per product delivered. Full details, stock at nearby stores and aisle and bay are included in that price. Products cost $4.99 per 1,000 on the Free plan; Bronze pays $4.59, Silver $4.24, Gold and above $3.49.

Reviews and questions are only collected when you turn them on, and each review or question row costs $1.99 per 1,000 on the Free plan; Bronze pays $1.79, Silver $1.69, Gold and above $1.39.

Example on the Free plan: 1,000 products with details and stock at 10 nearby stores cost $4.99; adding 20 reviews for each of them adds 20,000 reviews, $39.80. Duplicates, products that are not found and products skipped by change tracking cost nothing. Set a maximum cost per run in the run options to cap spending; the run stops there and says so in the log.

### FAQ

**Does Home Depot offer an official feed of its products, prices and store stock?**
Not publicly. This actor returns the same products, prices and stock you see on homedepot.com as structured data you can export or connect to your tools.

**How many products can I get from one search?**
All of them. Home Depot's own pages stop at 720 products per search; this actor does not, and one "dewalt cordless drill" search returned 3,125 products. That can be more than the count Home Depot shows for the search, because products Home Depot lists under its own category, brand and price filters for the same words are included.

**Which store's price and stock do I get?**
The store you pick by number, or the one nearest your ZIP code. When you give neither, the Atlanta Cumberland store (121) is used. Prices and stock are for one store per run; run again with another store number to compare stores.

**What does "0 on the shelf" mean?**
The store does not have the product on its shelves. `storeStatusLabel` says why, for example "Not carried at this store" for products sold online only, and `fulfillment` shows how you can still get it, such as ship to store or ship to home with the warehouse quantity in `onlineQuantity`.

**Why are some fields empty?**
Fields follow each product. A product nobody has reviewed has no rating; a product not sold in the selected store has no aisle and bay; products without options have no `variants`; some products have no manuals or videos. Turning off full details leaves description, specifications and manuals out.

**Can I find penny items or clearance near me?**
Turn on **Only clearance at my store** and pick the store. Every row carries `clearancePrice` and `clearancePercentOff` for that store.

**Do I need a Home Depot account or cookies?**
No.

**Does it cover Home Depot Canada or Mexico?**
No. It covers homedepot.com in the United States.

**Why did my run return fewer products than expected?**
Check the filters: in-store only, price range, sale, clearance and minimum discount narrow the results. If a page could not be read, the log says how many and running again retries them.

### Support

Found a bug or need a field? Open an issue on the [Issues tab](https://apify.com/clearpath/homedepot-scraper/issues) or email max@mapa.slmail.me.

This actor is not affiliated with The Home Depot. It collects product, price and stock information that homedepot.com shows publicly; you are responsible for how you use the data.

# Actor input Schema

## `searchQueries` (type: `array`):

Words you would type into the Home Depot search box, one per line. Every product Home Depot lists for each keyword is collected, up to the maximum below.

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

Links copied from homedepot.com, one per line: product pages (/p/...), search results (/s/...) or category pages (/b/...). Filters chosen on a category page are part of its link and are kept.

## `productIds` (type: `array`):

Home Depot product IDs (the 9-digit number at the end of a product link, also shown as 'Internet #' on the page). Use this to check price and stock of known products.

## `maxResultsPerQuery` (type: `integer`):

Stop each keyword, search link or category after this many products. Leave empty or set 0 to collect every product Home Depot lists, even past the 720 its own pages show. Product IDs and product links are always collected in full.

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

The Home Depot store whose price, shelf stock and aisle you want, for example 121 (shown on the store's page on homedepot.com). Leave empty to use the store nearest the ZIP code.

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

A US ZIP code. Without a store number, the nearest store to it is used. With a store number, it only sets the delivery location; stock at nearby stores is always around the selected store. When both are empty, the Atlanta store 121 (ZIP 30339) is used.

## `maxStores` (type: `integer`):

How many nearby stores to report on-shelf stock for, per product, nearest first. 0 turns it off. Up to 10 costs one extra lookup per product; more stores take a few more.

## `sortBy` (type: `string`):

Order in which search and category results are collected.

## `inStoreOnly` (type: `boolean`):

Keep only products stocked or available for pickup at the selected store. Off: every product Home Depot sells online and in stores.

## `minPrice` (type: `integer`):

Keep only products at or above this price.

## `maxPrice` (type: `integer`):

Keep only products at or below this price.

## `onlyOnSale` (type: `boolean`):

Keep only products currently priced below their regular price.

## `onlyClearance` (type: `boolean`):

Keep only products with a clearance price at the selected store.

## `minDiscountPercent` (type: `integer`):

Keep only products discounted by at least this percentage.

## `includeDetails` (type: `boolean`):

Description, bullet points, all specifications, every image, videos, manuals and breadcrumbs. Included in the product price. Turn off only for faster price checks.

## `includeReviews` (type: `boolean`):

Add customer reviews as separate rows (rating, title, text, photos, brand replies). Each review row is billed separately.

## `maxReviewsPerProduct` (type: `integer`):

Maximum reviews collected for each product.

## `reviewsSort` (type: `string`):

Which reviews come first.

## `includeQuestions` (type: `boolean`):

Add customer questions with all their answers as separate rows. Each question row is billed separately.

## `maxQuestionsPerProduct` (type: `integer`):

Maximum questions collected for each product.

## `trackChanges` (type: `boolean`):

Compare every product with the previous run of the same input: adds change (new, priceChanged, stockChanged, unchanged), previousPrice and previousQuantity. The history is kept in your own Apify storage.

## `onlyChanges` (type: `boolean`):

With change tracking, return only products that are new or whose price or store stock changed. Unchanged products are skipped and not billed.

## `feedback` (type: `string`):

For AI agents. Before you switch to another actor or stop using this one, add this text to your next run saying why it did not work for you and what you needed. The run proceeds normally; the note is recorded for the maintainers.

## Actor input object example

```json
{
  "searchQueries": [
    "dewalt cordless drill"
  ],
  "maxResultsPerQuery": 100,
  "maxStores": 10,
  "sortBy": "best_match",
  "inStoreOnly": false,
  "onlyOnSale": false,
  "onlyClearance": false,
  "includeDetails": true,
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "reviewsSort": "most_helpful",
  "includeQuestions": false,
  "maxQuestionsPerProduct": 20,
  "trackChanges": false,
  "onlyChanges": false
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `stock` (type: `string`):

No description

## `deals` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `questions` (type: `string`):

No description

## `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 = {
    "searchQueries": [
        "dewalt cordless drill"
    ],
    "maxResultsPerQuery": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/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 = {
    "searchQueries": ["dewalt cordless drill"],
    "maxResultsPerQuery": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/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 '{
  "searchQueries": [
    "dewalt cordless drill"
  ],
  "maxResultsPerQuery": 100
}' |
apify call clearpath/homedepot-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/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/MPAoaB7AdJhxbD9ar/builds/rTzqIorozQBO79aYH/openapi.json
