Home Depot Scraper API
View as MarkdownFetch Home Depot product pages scoped to a specific store, and look up stores by zip code or coordinates
The Home Depot API fetches homedepot.com pages through a store-scoped session, so the response reflects the pricing, availability, and fulfillment options of the store you name rather than a random default. A companion endpoint resolves store IDs from a zip code or a pair of coordinates.
Home Depot pages are returned as HTML, not parsed JSON. The store lookup endpoint returns JSON. If you need structured product fields, parse the HTML on your side.
Endpoints
| Endpoint | Returns | Purpose |
|---|---|---|
/plugin/homedepot/product | HTML | A product page rendered for a specific store |
/plugin/homedepot/stores | JSON | Stores near a zip code or coordinate pair |
Both endpoints cost 10 credits per successful request. Requests rejected with 400 are not charged.
Home Depot is a synchronous-only plugin. It is not currently available through the Async API, which rejects homedepot/product and homedepot/stores with unsupported plugin key.
Product Endpoint
Basic Example
curl "https://api.scrape.do/plugin/homedepot/product?token=YOUR_TOKEN&url=https%3A%2F%2Fwww.homedepot.com%2Fp%2FMilwaukee-M12-FUEL-12V-Lithium-Ion-Brushless-Cordless-3-in-Cut-Off-Saw-w-M12-XC-5-0-Ah-Battery-2-Pack-Starter-Kit-and-Charger-2522-20-48-59-2450P%2F330625530&storeid=2414&zipcode=04401"Request Parameters
All three parameters are required. Omitting any of them returns 400 before any page is fetched, so the request costs nothing.
| Parameter | Type | Description |
|---|---|---|
token | string | Your Scrape.do API authentication token |
url | string | Full Home Depot product URL, URL-encoded. Must be on homedepot.com |
storeid | string | Home Depot store number, for example 2414. Resolve one with the stores endpoint |
zipcode | string | Zip code used to localize the session, for example 04401 |
Notes
- The
storeidandzipcodeare applied to the session before the page is fetched, so prices, stock, and pickup options come back as that store serves them. - The response is the full product page HTML, typically around 700 KB.
- Home Depot loads some pricing through client-side calls after the initial render. If a field you need is missing from the HTML, it is being fetched separately by the page rather than being withheld by the API.
Stores Endpoint
Resolves nearby stores, including the storeId values the product endpoint expects.
Basic Example
curl "https://api.scrape.do/plugin/homedepot/stores?token=YOUR_TOKEN&zipcode=04401"Request Parameters
Provide either zipcode or both lat and lng. Sending neither returns 400 zipcode (or lat+lng) is required, and lat without lng is rejected the same way.
| Parameter | Type | Description |
|---|---|---|
token | string | Your Scrape.do API authentication token |
zipcode | string | Zip code to search around, for example 04401 |
lat | number | Latitude, used together with lng as an alternative to zipcode |
lng | number | Longitude, used together with lat |
Coordinate Example
curl "https://api.scrape.do/plugin/homedepot/stores?token=YOUR_TOKEN&lat=44.8&lng=-68.75"Response
{
"data": {
"storeSearch": {
"stores": [
{
"storeId": "2414",
"name": "Bangor",
"phone": "(207)990-3133",
"distance": "2.59",
"storeTimeZone": "EST5EDT",
"address": {
"street": "650 Stillwater Avenue",
"city": "Bangor",
"state": "ME",
"country": "US",
"postalCode": "04401"
},
"coordinates": {
"lat": 44.83381,
"lng": -68.754598
}
}
]
}
}
}| Field | Description |
|---|---|
storeId | Pass this as storeid to the product endpoint |
name | Store name, usually the city or neighborhood |
distance | Distance in miles from the searched location |
address | Street, city, state, country, and postal code |
coordinates | Store latitude and longitude |
The number of stores returned depends on density around the search point. A rural zip code may return three, while a dense metro area returns twenty. A zip code with no nearby stores returns 200 with an empty stores array rather than an error.
Error Responses
| Status | Body | Cause |
|---|---|---|
400 | {"error":"zipcode is required"} | Product endpoint called without zipcode |
400 | {"error":"storeid is required"} | Product endpoint called without storeid |
400 | {"error":"zipcode (or lat+lng) is required"} | Stores endpoint called without zipcode, or with lat but no lng |
Rejected requests are not charged.

