诊断生产力系统反复失效的根因,给出最小干预——容量测算、瓶颈定位、可靠的本地记录。
数据分析
Home Depot Product Data API - Search, Item Detail, Reviews
试用Search Home Depot, pull full item detail and page through review bodies as structured JSON. 3 endpoints for retail price monitoring, catalog enrichment and review mining.
它能做什么
Search Home Depot by keyword, read one item in full, and page through its review bodies. All endpoints return structured JSON.
技能文档
Home Depot via Scavio
Search Home Depot by keyword, read one item in full, and page through its review bodies. All endpoints return structured JSON.
When to trigger
Use this skill when the user asks to:
- Find products on homedepot.com by keyword, price band or rating
- Look up a Home Depot item by item id or by a pasted
homedepot.com/p/...URL - Pull the spec table, dimensions, documents or return policy for an item
- Read customer reviews for an item, with the rating distribution and per-attribute ratings
- Monitor hardware or home-improvement pricing and promotions
- Enrich a product catalog with brand, model number, UPC and category path
Setup
Get a free API key at scavio.dev (50 free credits to get started, no card required):
export SCAVIO_API_KEY=sk_live_your_key
Every request is a POST with a JSON body and:
Authorization: Bearer $SCAVIO_API_KEY
Endpoints
Base URL: https://api.scavio.dev. Every Home Depot endpoint costs 2 credits.
| Endpoint | Credits | What it returns |
|---|---|---|
POST /api/v1/homedepot/search | 2 | Keyword results with price, promotions, brand, model, ratings, badges, per-store pickup and delivery |
POST /api/v1/homedepot/product | 2 | One item in full: pricing, images and videos, spec table, dimensions, bullets, documents, return policy |
POST /api/v1/homedepot/reviews | 2 | One page of full review bodies, rating distribution, per-attribute ratings, photos, seller responses |
Workflow
- Find items: call
/homedepot/searchwithquery. Readproducts[].item_id. - Item detail: call
/homedepot/productwith thatitem_id(a fullhomedepot.com/p/...URL works too; tracking parameters are discarded). - Reviews: call
/homedepot/reviewswith the sameitem_id./productcarries only a 10-review preview —/reviewsis the paginated surface.
Pagination
- Search is fixed at 12 products per page. There is no page-size parameter and no way to raise it, so paging is the only way to read further. Ten pages is 20 credits — decide the budget before looping.
- Reviews are 30 per page. The response carries
total_pages; that is the last page that exists, and asking past it is a 404. Stop attotal_pages. - Product takes no paging parameter.
Parameters
Search (/search)
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | required | Search keyword (1-500 chars) |
page | integer | -- | 1-based. 12 products per page, fixed |
sort_by | string | best_match | best_match, top_sellers, top_rated, price_low, price_high |
min_price | number | -- | Minimum price, inclusive (0 or greater) |
max_price | number | -- | Maximum price, inclusive (0 or greater) |
sort_by is a closed set. Home Depot does not fall back on an unknown sort — it answers 200 with an empty page that is still billed. A "newest" sort is deliberately absent: it works on category pages and is rejected on keyword search.
Product (/product)
| Parameter | Type | Default | Description |
|---|---|---|---|
item_id | string | required | Item id, or a full homedepot.com/p/... URL |
Reviews (/reviews)
| Parameter | Type | Default | Description |
|---|---|---|---|
item_id | string | required | Item id, or a full homedepot.com/p/... URL |
page | integer | -- | 1-based. 30 per page; past total_pages is a 404 |
Examples
import requests
BASE = "https://api.scavio.dev"
# Your key from https://scavio.dev. Load it from your environment or secret
# store in real code - keep it out of source control.
API_KEY = "sk_your_key_here"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# 1. Search, cheapest first, under $300
found = requests.post(f"{BASE}/api/v1/homedepot/search", headers=HEADERS,
json={"query": "cordless drill", "sort_by": "price_low", "max_price": 300}).json()
item_id = found["data"]["products"][0]["item_id"]
# 2. Full item detail (a pasted product URL works just as well)
item = requests.post(f"{BASE}/api/v1/homedepot/product", headers=HEADERS,
json={"item_id": item_id}).json()
# 3. Reviews, page 2 onward - stop at total_pages, never guess past it
reviews = requests.post(f"{BASE}/api/v1/homedepot/reviews", headers=HEADERS,
json={"item_id": item_id, "page": 2}).json()
print(reviews["data"]["total_pages"], reviews["data"]["count"])
Paging search, capped so it cannot run away with the user's credits:
def search_pages(query, max_pages=3, **filters):
"""12 products per page, 2 credits per page."""
out = []
for page in range(1, max_pages + 1):
data = requests.post(f"{BASE}/api/v1/homedepot/search", headers=HEADERS,
json={"query": query, "page": page, **filters}).json()["data"]
out += data["products"]
if data["count"] < data["page_size"]:
break
return out
Response shapes
Every response uses the envelope { data, response_time, credits_used, credits_remaining }. Key data fields:
- search —
query,url,canonical_url,page,page_size(12),start_index,total_results,sort,sort_order,did_you_mean,corrected_query,category_path,count,products[]. A product row:pos,item_id,parent_id,store_sku,model_number,brand,title,url,product_type,image,images,price,original_price,currency,unit_of_measure,discount_amount,discount_percent,promotion_type,promotion_text,clearance_price,price_hidden,rating,review_count,badges,sponsored,category_path,department,returnable,quantity_limit,availability,buyable,in_stock,stock_quantity,pickup,delivery,key_features. - product —
item_id,parent_id,store_sku,oms_sku,model_number,upc,gtin13,title,url,brand,product_type,description,price,original_price,currency,unit_of_measure,promotion_*,clearance_price,price_valid_until,availability,buyable,discontinued,rating,review_count,image,images[],videos[],badges[],highlights[],bullets[],specifications[](group,name,value),key_features[],depth,height,width,weight,category_path[],returnable,return_days,quantity_limit,prop65_warning,prop65_message. - reviews —
item_id,product_name,url,rating,total_results,recommended_count,not_recommended_count,total_pages,rating_distribution[],page,page_size(30),count,reviews[](id,rating,title,text,author,location,submitted_at,verified_purchase,recommended,helpful_votes,unhelpful_votes,syndicated,pros,cons,secondary_ratings,photos,videos,responses).
{
"data": {
"query": "cordless drill",
"page": 1,
"page_size": 12,
"total_results": 2148,
"count": 12,
"products": [
{
"pos": 1,
"item_id": "325479354",
"brand": "DEWALT",
"title": "20V MAX Cordless Drill/Driver Kit",
"price": 179,
"currency": "USD",
"rating": 4.7,
"review_count": 8230,
"url": "https://www.homedepot.com/p/325479354"
}
]
},
"credits_used": 2,
"credits_remaining": 998
}
Guardrails
- Every call is 2 credits, including one that comes back empty. Search paging is 2 credits per 12 products, so state the intended spend before looping.
- Never invent a
sort_byvalue. An unrecognised sort returns an empty page and is still billed. - Do not send a page size — there is none. Search is 12 per page and reviews are 30 per page, both fixed upstream.
- Do not ask for a review page past
total_pages; it is a billed 404, not an empty list. /productgives a 10-review preview only. If the user wants review analysis, call/reviews— do not present the preview as the full set.- Never fabricate item ids, prices, model numbers, availability or review text. Only return what the API returned.
- Always surface the product
urlso the user can verify.
Failure handling
400means an invalid or missing parameter (noquery, asort_byoutside the enum) — fix and retry.401means the API key is invalid or missing. CheckSCAVIO_API_KEY.404on/productor/reviewsmeans the item id does not exist, or the review page is past the last one. Home Depot answers those with a billed200shell that the API restates as a 404 — do not retry the same id or page.429means rate or usage limit exceeded. Wait before retrying. See https://scavio.dev/docs/rate-limits.502/503mean upstream is temporarily unavailable — wait a few seconds and retry, up to a few times.- If search returns nothing, relax the price filters or try broader keywords.
- If
SCAVIO_API_KEYis not set, prompt the user to export it before continuing.
SDKs
pip install scavio==0.15.0
from scavio import ScavioClient
client = ScavioClient() # reads SCAVIO_API_KEY
found = client.home_depot.search("cordless drill", sort_by="top_rated", max_price=300)
item = client.home_depot.product(found["data"]["products"][0]["item_id"])
reviews = client.home_depot.reviews(item["data"]["item_id"], page=2)
npm install scavio@0.15.0
import { Scavio } from "scavio";
const client = new Scavio(); // reads SCAVIO_API_KEY
const found = await client.homeDepot.search({ query: "cordless drill", sort_by: "top_rated" });
相关技能
以 AI 机器人身份加入视频会议,提供语音、虚拟形象与屏幕共享四种模式。
把自然语言描述转为结构化 JSON,并由 mcp-diagram-generator MCP 服务生成 Draw.io、Mermaid 或 Excalidraw 图表文件。
从 AdMapix API 拉取广告创意、应用、榜单和收入预估等数据,原样返回结构化 JSON。
在本地磁盘以分类纯 Markdown 文件保存需要长期留存的事实,与智能体内置记忆并存。
为自然搜索排名提供站点审计、内容撰写与竞品分析。
scavio-ai 的更多技能
浏览全部技能通过托管 OAuth 接入 GitHub REST API,覆盖仓库、Issue、PR、Commit、分支与用户等接口。
Pull a Facebook page's profile, posts, reels and photos, one post with its comments, a single reel/video with downloadable URLs, a public group and its posts, an event, and hashtag posts. 11 endpoints, 1 credit each, structured JSON.
Search the Meta Ad Library by keyword or Facebook Page id and walk full cursor pagination through every ad, with creative, run dates, platforms and political spend. 3 endpoints, 1 credit per page.
Search YouTube and retrieve videos, shorts, comments, transcripts, streams, channel data, and community posts with their comments as structured JSON. 17 endpoints across video and channel surfaces.
Search live or SOLD eBay listings, read a listing in full, and look up a seller's profile card as structured JSON. 3 endpoints, 1 credit each. Sold-listing search is the price-research feature eBay itself hides.
Search Google Hotels for a destination and dates, then fetch per-property vendor pricing and full details — as structured JSON. Price, rating, class, and amenity filters. v2 engine, 1 credit per request.