Home Depot
Home Depot Search API
Search homedepot.com and get structured product rows as JSON: price and promotions, brand and model number, rating and review count, badges, department and category path, plus the per-store pickup and the delivery window Home Depot resolves for the request. Page size is fixed at 12 products, so paging is the only way to read further. Costs 2 credits per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonquerystringrequiredKeyword to search, 1-500 characters.
Example: cordless drill
pageintegerResults page, 1-based, minimum 1. Home Depot serves exactly 12 products per page and publishes no way to change that, so there is no per_page param to reach for — paging is the only lever on volume. A page past the end of the result set is a 404 and IS billed, because Home Depot answers it with a full 200 shell we pay for.
Example: 2
sort_byenum<string>default:best_matchResult sort order. A CLOSED set: Home Depot does not fall back on an unrecognised sort, it answers 200 with an empty page that is still billed, so anything outside this list is rejected with a free 400 instead of forwarded. "Newest" (arrivaldate) is deliberately absent — Home Depot advertises it on category pages and rejects it on keyword search.
Example: price_low
best_match— Home Depot's default relevance ranking.top_sellers— Best sellers first.top_rated— Highest customer rating first.price_low— Price, lowest first.price_high— Price, highest first.
min_pricenumberMinimum price, inclusive. Must be 0 or greater.
Example: 50
max_pricenumberMaximum price, inclusive. Must be 0 or greater.
Example: 200
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
results = client.home_depot.search("cordless drill", sort_by="price_low", max_price=200)
for product in results["data"]["products"]:
print(product["item_id"], product["brand"], product["price"], product["rating"])
# 12 per page, fixed. Walk pages while there are more results than you have read.
data = results["data"]
if data["page"] * data["page_size"] < data["total_results"]:
page_2 = client.home_depot.search("cordless drill", page=2, sort_by="price_low", max_price=200)Response