Home Depot API endpoint
Returns one page of a Home Depot keyword search's product listing: products with title, image, model, current/original price, and rating/review count, plus the search's total result count. A page carries up to 24 products, or up to 12 when Home Depot answers the query with a category page. q is free-text search keywords, e.g. "impact driver". page is a 1-indexed page number (default 1). An unrecognized/blocked query returns an upstream error rather than an empty result.
/homedepot/searchNotable response behavior:
garden hose), a page carries up to 12 instead. page follows the offsets of whichever listing the query resolves to. Home Depot's best-match ranking is not stable between requests, so a product can appear on more than one page of a keyword search.total is the search's total result count across all pages; count is how many products this response carries.price is the current price; original_price is present only when the product is on sale. Products Home Depot prices only in the cart have no price.rating is rounded to one decimal, as the listing shows it; rating and review_count are omitted for products that show no rating.503 upstream error rather than an empty or partial result. A page can legitimately carry one or two products fewer than the page size.| Field | Filled in, of 24 checked | Values in the sample |
|---|---|---|
| id | 24 | |
| title | 24 | “M18 18-Volt Lithium-Ion Compact Brushless Cordless 1/4 in.…” and 23 other values |
| url | 24 | homedepot.com |
| image | 24 | images.thdstatic.com |
| model | 24 | “3650-21P” and 23 other values |
| price | 23 | 24.15 to 399, median 179 |
| rating | 24 | 4.4 to 4.8, median 4.7 |
| review_count | 24 | 118 to 6,390, median 1,652 |
| original_price | 3 | 69 to 279, median 169 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Free-text search keywords, e.g. \ | impact driver | |
| page | integer | No | 1-indexed page number, default 1 | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/homedepot/search?q=impact+driver&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "impact driver",
"page": 1,
"total": 1900,
"count": 24,
"products": [
{
"id": "320326875",
"title": "M18 FUEL 18V Lithium-Ion Brushless Cordless 1/4 in. Hex Impact Driver (Tool-Only)",
"url": "https://www.homedepot.com/p/Milwaukee-M18-FUEL-18V-Lithium-Ion-Brushless-Cordless-1-4-in-Hex-Impact-Driver-Tool-Only-2953-20/320326875",
"image": "https://images.thdstatic.com/productImages/fa7d2462-8481-4bd3-8010-384a85aa902f/svn/milwaukee-impact-drivers-2953-20-64_600.jpg",
"model": "2953-20",
"price": 179,
"rating": 4.7,
"review_count": 1542
}
],
"source_url": "https://www.homedepot.com/s/impact+driver",
"fetched_at": "2026-08-16T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/homedepot.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | homedepot.SearchResponse | No | ||||
| data.count | integer | No | 24 | |||
| data.fetched_at | string | No | ||||
| data.page | integer | No | 1 | |||
| data.products | array | No | ||||
| data.products[].id | string | No | 320326875 | |||
| data.products[].image | string | No | ||||
| data.products[].model | string | No | 2953-20 | |||
| data.products[].original_price | number | No | 199 | |||
| data.products[].price | number | No | 179 | |||
| data.products[].rating | number | No | 4.7 | |||
| data.products[].review_count | integer | No | 1542 | |||
| data.products[].title | string | No | M18 FUEL 18V Lithium-Ion Brushless Cordless 1/4 in. Hex Impact Driver (Tool-Only) | |||
| data.products[].url | string | No | ||||
| data.query | string | No | impact driver | |||
| data.source_url | string | No | ||||
| data.total | integer | No | 1962 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/homedepot/search?q=impact+driver&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"