# Home Depot Scraper: Products, Prices and Store Stock

> Home Depot scraper: get products by search, category link, item ID or ZIP code. Price, previous price, store stock, aisle and bay, reviews. No login.

URL: https://cliqtomedia.com/actors/home-depot-scraper/

Category: E-commerce & prices · Status: coming soon · Apify profile: https://apify.com/cliqtomedia?fpr=cliqto

Get Home Depot products with price, previous price, discount and delivery dates. For your store you also get stock, aisle and bay. You can add reviews, questions and store locations.

## How to use it: 3 steps

1. **Follow us on Apify.** The tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
2. **Paste your input and press Start.** No code needed: you fill in a form (the input). It already has a working example. For example: `cordless drill` in Search terms. Each start is one run.
3. **Download the results.** When the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

## What it does





### Good for

- You sell or resell products and want to watch Home Depot prices and clearance items.
- You want to know which nearby store has a product, how many units it has and where the product is in the store.
- You want reviews or customer questions for a list of products.
- You want a list of Home Depot stores near a ZIP code, with phone and hours.
- You run the same check every day and want only the products that changed.

## Price

Prices will be shown after release.

## Questions

### Do I need a Home Depot account or API key?

No. The tool reads public pages of homedepot.com with no login.

### Which Home Depot sites does it cover?

Only homedepot.com in the US. No Canada or Mexico.

### Is the stock live?

It is what the site showed at the time in fetchedAt, for one store.

### Which store does the price come from?

From `storeId`. If it is empty, the Actor uses the store nearest to `zipCode`. With no ZIP code, it uses store 121. Each row shows the store it used.

### What does an empty run cost?

The start fee and one `page-scan` for each source check. A ZIP code with no stores costs only the start fee. See the Pricing section for real amounts.

### How do I get stock for one product across stores?

Add the item ID to `productUrls`, your `zipCode` and a `nearbyStores` value. Read `quantity`, `aisle` and `bay` in `storeAvailability`.

### Does the Actor return every product and every review?

It returns what the source shows, up to your limits. A very large listing can end early with `stopReason: PAGE_LIMIT`. A review can belong to a sibling variant, and `reviewedItemId` shows which one.

### How fresh is the data?

The Actor reads the source during the run. `fetchedAt` shows the time. Prices and stock can change after that.

### Is a null stock value the same as zero?

No. `quantity: 0` means the store has none. `null` means the source did not say.

## Data fields

- `type` (string): Row kind: product, review, question, store or status.
- `itemId` (string): Home Depot item ID.
- `title` (string): Product title or review title.
- `brand` (string): Brand name.
- `model` (string): Model number.
- `storeSku` (string): Store SKU number.
- `upc` (string): UPC or GTIN barcode.
- `parentId` (string): Parent product ID that groups variants.
- `storeId` (string): Store number used for this row.
- `zipCode` (string): ZIP code from the input.
- `price` (number): Current price in the chosen store. Null when the source hides or omits it.
- `wasPrice` (number): Previous price. Null when there is no discount.
- `currency` (string): Price currency.
- `unitOfMeasure` (string): Unit the price applies to, for example each.
- `dollarOff` (number): Discount in dollars.
- `percentOff` (number): Discount in percent.
- `savingsCenter` (string): Home Depot savings label.
- `isSpecialBuy` (boolean): True for a Special Buy.
- `isClearance` (boolean): True for a clearance product.
- `clearancePrice` (number): Clearance price in the chosen store. Null when this store has none.
- `bulkPrice` (number): Price per unit when buying in bulk.
- `bulkQuantity` (number): Quantity needed for the bulk price.
- `unitPrice` (number): Alternate price per unit.
- `unitsPerCase` (number): Units in one case.
- `rating` (number): Average rating, or the rating of this review.
- `reviewsCount` (number): Number of reviews.
- `reviewStats` (object): Rating distribution and recommendation counts.
- `availability` (string): in_stock, limited_stock, out_of_stock, backordered or discontinued. Null when the source did not say.
- `discontinued` (boolean): True when the product is discontinued.
- `backordered` (boolean): True when the product is backordered.
- `onlineQuantity` (number): Units available for shipping.
- `storeAvailability` (array): Price, quantity, aisle and bay per store.
- `delivery` (object): Delivery availability, charge and dates.
- `images` (array): Image links.
- `videos` (array): Video titles and links.
- `documents` (array): Manuals and guides. Filled by product details.
- `description` (string): Product description. Filled by product details.
- `highlights` (array): Short product highlights.
- `specifications` (array): Specification groups, names and values. Filled by product details.
- `keyFeatures` (array): Key product features.

## Input settings

- `mode` (string): Choose what to collect: search and category results, product details, customer reviews, questions and answers, or store locations. One mode per run. Default: Search and category results.
- `searchQueries` (array): Words to search on Home Depot, one per line, for example cordless drill. Used in Search and category results mode. This mode needs a search term or a category link.
- `categoryUrls` (array): Home Depot category or search links, one per line, for example https://www.homedepot.com/b/Tools-Power-Tools-Drills/N-5yc1vZc27f. Used in Search and category results mode.
- `productUrls` (array): Home Depot product links or item IDs, one per line, for example 317987598. Required for Product details, Customer reviews, and Questions and answers modes. Duplicates are removed.
- `storeId` (string): The store used for price, stock, aisle and bay, for example 121. Empty: the store nearest to the ZIP code, or store 121 when there is no ZIP code. The run reports which store was used.
- `zipCode` (string): A 5-digit US ZIP code, for example 30339. It sets delivery dates, picks the nearest store when Store number is empty, and is the center for Nearby stores. Required for Store locations mode.
- `nearbyStores` (integer): Also read price and stock in this many stores nearest to the ZIP code, up to 29. Each extra store is charged per product. Default: 0.
- `radiusMiles` (number): Keep only stores within this distance of the ZIP code, for Nearby stores and Store locations mode. Empty: no distance limit.
- `extraStoreIds` (array): Store numbers to read in addition to the main store, one per line, for example 616. Up to 50. Each extra store is charged per product.
- `sortBy` (string): The order of search and category results. Default: Best match.
- `inStoreOnly` (boolean): Ask Home Depot for products sold in the chosen store only. Search and category results only. Default: off.
- `onlyInStock` (boolean): Keep products shown as in stock or limited stock. Default: off.
- `onlyOnSale` (boolean): Keep products with a lower current price than their previous price. Default: off.
- `onlyClearance` (boolean): Read Home Depot's clearance list. Search and category results only. The list is shared by all stores, so the clearance price can be empty for your store. Default: off.
- `minPrice` (number): Keep products at or above this price in US dollars. Products without a price are skipped when this is set.
- `maxPrice` (number): Keep products at or below this price in US dollars. Products without a price are skipped when this is set.
- `minDiscountPercent` (number): Keep products with at least this discount, from 0 to 100.
- `maxItems` (integer): The most products to return in one run, from 1 to 5000. In review and question modes, this is the most rows in one run. Default: 10.
- `maxItemsPerQuery` (integer): The most products from each search term or category link. Empty: only Maximum products applies.
- `includeDetails` (boolean): Add the description, specifications, documents and all images to each search result. This makes one more request and one more charge per product. Default: off.
- `includeReviews` (boolean): Add review rows and rating statistics for each product in search and product modes. Each review is charged. Default: off.
- `maxReviews` (integer): The most reviews for each product, from 1 to 2000. Default: 20.
- `reviewsSort` (string): The order of customer reviews. Default: Newest.
- `reviewStars` (array): Keep reviews with these ratings, for example 1 and 2. Empty: all ratings.
- `verifiedOnly` (boolean): Keep reviews from verified purchases. Default: off.

## Step by step on Apify

1. Open the Input tab. Keep Search and category results in Data to collect (box 1 in the picture).
2. Keep `cordless drill` in Search terms or type your own (box 2).
3. Keep `10` in Maximum products for a first run (box 3).
4. Click Start (box 4).
5. Open the Output tab and choose the Products view. Check `price` and `wasPrice` (box 5).
6. Click Export to get JSON, CSV or Excel (box 6).

## Use cases

| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Watch prices and discounts | `searchQueries` or `categoryUrls`, with `onlyOnSale` if you want | Product | `price`, `wasPrice`, `percentOff`, `isClearance` | Google Sheets or a price database |
| Check stock in your stores | `productUrls`, `storeId`, `zipCode`, `nearbyStores` | Product | `storeAvailability`, `availability`, `delivery` | Stock alert in Slack |
| Report only what changed | `searchQueries` or `productUrls`, `onlyChanges`, `monitorName` | Product | `change`, `price`, `storeAvailability` | Daily schedule and a webhook |
| Read customer opinions | `mode: reviews` or `mode: questions`, `productUrls` | Review, question | `rating`, `text`, `question`, `answers` | Sentiment or support analysis |
| Build a store list | `mode: stores`, `zipCode` | Store | `storeId`, `name`, `phone`, `hours` | CRM or a map |

## Tips

- Start with 10 products and the Products view.
- Add a store ID or ZIP code to get stock, aisle and bay.
- Turn on change tracking and run daily to get only the products that changed.

## Limits



- Source: only homedepot.com in the US. No Canada or Mexico sites, no account data, no orders.
- Size: up to 5000 products in one run and 1000 values in each list. Up to 2000 reviews or questions per product.
- Stores: up to 30 rows in `stores` mode, 29 nearby stores and 50 `extraStoreIds`.
- Time: the default timeout is 300 seconds. Real runs took about 10 seconds for 10 products, 1 to 2.5 minutes for 500 products, and about 3.5 minutes for 2000 products. Two runs of 5000 products took about 10 and 14 minutes. At the slowest speed we saw, 5000 products would take about 17 minutes. Speed depends on the source. For a run over 1000 products, set the timeout to 900 seconds. For 5000 products, set 1500 seconds. Item IDs are slower: 100 IDs with details took about 3 minutes, so 1000 IDs would take about 30 minutes. For a long ID list, set a timeout of 1200 seconds and send up to 500 IDs per run. The timeout must be more than 40 seconds, because the Actor keeps 40 seconds to save its data.
- Deep listings: the Actor can stop before the end of a very large listing. It then saves what it has and sets `stopReason: PAGE_LIMIT`. A single run reads up to 20000 pages or 512 MB.
- Large pages: a source page over 4 MB is skipped. You get a free `error` row, and the rest of the run goes on.
- Slow source: if no page answers for 90 seconds, the run stops with `stopReason: DEADLINE`. Rows saved earlier stay.

## Sample result

```json
{
  "type": "product",
  "itemId": "317987598",
  "title": "ONE+ 18V Cordless 1/2 in. Drill/Driver Kit with (1) Compact Battery and Charger",
  "brand": "RYOBI",
  "model": "PCL206K1",
  "storeId": "121",
  "zipCode": null,
  "price": 59,
  "wasPrice": 89,
  "currency": "USD",
  "percentOff": 34,
  "isClearance": false,
  "clearancePrice": null,
  "rating": 4.6722,
  "reviewsCount": 4311,
  "availability": "in_stock",
  "onlineQuantity": 2245,
  "storeAvailability": [
    {
      "storeId": "121",
      "storeName": "Cumberland",
      "state": "GA",
      "price": 59,
      "quantity": 84,
      "inStock": true,
      "pickupAvailable": true,
      "aisle": "11",
      "bay": "EC1",
      "locationText": "Aisle 11 - Endcap"
    }
  ],
  "category": "Power Drills",
  "query": "cordless drill",
  "position": 3,
  "url": "https://www.homedepot.com/p/RYOBI-ONE-18V-Cordless-1-2-in-Drill-Driver-Kit-with-1-Compact-Battery-and-Charger-PCL206K1/317987598",
  "source": "homedepot.com"
}
```

## Similar tools

- [Amazon Product Scraper: Prices, Reviews, BSR, No Login](https://cliqtomedia.com/actors/amazon-scraper/)
- [Google Shopping Scraper - Prices, Stores & Offers, No Login](https://cliqtomedia.com/actors/google-shopping-scraper/)
- [eBay Search Scraper: Active Listings & Prices, No Login](https://cliqtomedia.com/actors/ebay-browse-search/)
- [Idealo Price Scraper: All Shop Offers, 6 Countries, No Login](https://cliqtomedia.com/actors/idealo-price-scraper/)
- [AliExpress Scraper: Products, Prices & Reviews, No Login](https://cliqtomedia.com/actors/aliexpress-scraper/)
- [Coles, Woolworths & Aldi Price Scraper - No Login](https://cliqtomedia.com/actors/au-supermarket-prices/)
