Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/socialcrawl-home-depot-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: SocialCrawl Home Depot API
version: 1.0.0
description: 'Unified social media data API - one API key, one consistent response format, 50 platforms, 400 endpoints. Power AI agents with clean social data.
Slim variant: inline examples removed and the shared error responses hoisted into components. The full annotated spec is at https://www.socialcrawl.dev/openapi.json.'
contact:
name: SocialCrawl
url: https://www.socialcrawl.dev
email: support@socialcrawl.dev
servers:
- url: https://www.socialcrawl.dev/v1
description: Production
security:
- ApiKeyAuth: []
tags:
- name: home_depot
description: Home_depot endpoints
paths:
/home_depot/product:
get:
summary: Get a Home Depot product by item id or URL
description: 'Returns full product detail for a Home Depot item: title, brand, model number, UPC, description, highlight bullets, current and original price, star rating with its 1-5 histogram, review count, the image gallery, a grouped specification table, and stock status. It also returns per-store inventory under product.ext.store_inventory, giving the actual unit count on the shelf at each nearby store, which is the field nothing else in this API sells. Pass store_id or zipcode to localise pricing and that inventory. For the review text call GET /v1/home_depot/reviews with the same item id.'
tags:
- home_depot
operationId: get_home_depot_product
security:
- ApiKeyAuth: []
x-credit-tier: advanced
x-credit-cost: 5
x-socialcrawl-oneOf:
- - item_id
- url
parameters:
- name: item_id
in: query
required: false
description: 'Home Depot internet number (item id), the numeric id at the end of a homedepot.com product URL: homedepot.com/p/<name>/326680222 is item id 326680222. Pass url instead if you would rather hand over the whole product URL. (one of: item_id, url; at least one required)'
schema:
type: string
- name: url
in: query
required: false
description: 'Full Home Depot product page URL, used instead of item_id. The item id is extracted from it. (one of: item_id, url; at least one required)'
schema:
type: string
- name: store_id
in: query
required: false
description: Home Depot store number used to localise price, stock, and pickup availability, for example 121.
schema:
type: string
- name: zipcode
in: query
required: false
description: Five-digit US ZIP code used to localise delivery options and pricing, for example 30301.
schema:
type: string
- name: Cache-Control
in: header
required: false
description: Send `no-cache` to bypass the response cache and force a live fetch. Billed at the normal endpoint cost; the fresh result is written back to cache for the next caller. Only the `no-cache` directive triggers this. See the Response Schema guide for details.
schema:
type: string
- name: Idempotency-Key
in: header
required: false
description: 'Optional UUID that makes the request safely retriable. A replay keeps the cached payload immutable except for billing metadata: `credits_used` becomes 0, `idempotent_replay` becomes true, and `credits_remaining` is refreshed to the current balance. A known current balance appears in both the body and `X-Credits-Remaining` header; no balance row resolves to 0. On a transient lookup failure, body `credits_remaining` is null and `X-Credits-Remaining` is omitted. Scoped per account with a 24-hour TTL.'
schema:
type: string
responses:
'200':
description: Successful response
headers:
X-Credits-Used:
description: Net credits charged for this response. Idempotency replays report 0.
schema:
type: integer
minimum: 0
X-Credits-Remaining:
description: Current balance when known. On an idempotency replay, this header is omitted when the balance lookup fails; body `credits_remaining` is null instead.
schema:
type: integer
minimum: 0
X-Idempotent-Replay:
description: Present with value `true` only when this response replays a settled idempotency record.
schema:
type: string
enum:
- 'true'
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: Whether the request succeeded
platform:
type: string
description: Platform name
endpoint:
type: string
description: API endpoint path
data:
type: object
description: Platform-specific response data
properties:
id:
type: string
description: Platform product ID (Amazon ASIN / Google Shopping product id)
url:
type:
- string
- 'null'
description: Direct URL to the product page
title:
type:
- string
- 'null'
description: Product title
description:
type:
- string
- 'null'
description: String at product.description
seller:
type:
- string
- 'null'
description: String at product.seller
brand:
type:
- string
- 'null'
description: Brand name (cleaned). Null when the platform exposes a seller instead.
price:
type: object
description: Price block (current, original/list, currency)
properties:
current:
type:
- integer
- 'null'
description: Numeric at product.price.current
original:
type:
- integer
- 'null'
description: Numeric at product.price.original
currency:
type:
- string
- 'null'
description: String at product.price.currency
rating:
type: object
description: Aggregate rating (average + number of ratings)
properties:
average:
type:
- integer
- 'null'
description: Numeric at product.rating.average
count:
type:
- integer
- 'null'
description: Numeric at product.rating.count
image_urls:
type:
- string
- array
- 'null'
description: Primary image URL, or an array of image URLs for products with a gallery.
items:
type: string
description: Primary image URL, or an array of image URLs for products with a gallery.
availability:
type:
- string
- 'null'
description: Stock/availability string when surfaced
reviews_count:
type:
- integer
- 'null'
description: Numeric at product.reviews_count
features:
type:
- array
- 'null'
description: Array at product.features
items:
type: string
description: String at product.features
specifications:
type:
- array
- 'null'
description: Array at product.specifications
items:
type: object
description: 'Nested object: product.specifications'
properties:
group:
type:
- string
- 'null'
description: String at product.specifications.group
name:
type:
- string
- 'null'
description: String at product.specifications.name
value:
type:
- string
- 'null'
description: String at product.specifications.value
variations:
type:
- array
- 'null'
description: Array at product.variations
items:
type: object
description: 'Nested object: product.variations'
properties:
id:
type:
- string
- 'null'
description: String at product.variations.id
title:
type:
- string
- 'null'
description: String at product.variations.title
url:
type:
- string
- 'null'
description: String at product.variations.url
category:
type:
- string
- 'null'
description: String at product.variations.category
ext:
type:
- object
- 'null'
description: 'Nested object: product.ext'
properties:
gid:
type:
- string
- 'null'
description: String at product.ext.gid
data_docid:
type:
- string
- 'null'
description: String at product.ext.data_docid
pvf:
type:
- string
- 'null'
description: String at product.ext.pvf
seller_id:
type:
- string
- 'null'
description: String at product.ext.seller_id
sold_count:
type:
- integer
- 'null'
description: Numeric at product.ext.sold_count
catalog_id:
type:
- string
- 'null'
description: String at product.ext.catalog_id
requested_id:
type:
- string
- 'null'
description: String at product.ext.requested_id
rating_distribution:
type:
- object
- 'null'
description: 'Nested object: product.ext.rating_distribution'
properties:
star_1:
type:
- integer
- 'null'
description: Numeric at product.ext.rating_distribution.star_1
star_2:
type:
- integer
- 'null'
description: Numeric at product.ext.rating_distribution.star_2
star_3:
type:
- integer
- 'null'
description: Numeric at product.ext.rating_distribution.star_3
star_4:
type:
- integer
- 'null'
description: Numeric at product.ext.rating_distribution.star_4
star_5:
type:
- integer
- 'null'
description: Numeric at product.ext.rating_distribution.star_5
store_inventory:
type:
- array
- 'null'
description: Array at product.ext.store_inventory
items:
type: object
description: 'Nested object: product.ext.store_inventory'
properties:
store_id:
type:
- string
- 'null'
description: String at product.ext.store_inventory.store_id
store_name:
type:
- string
- 'null'
description: String at product.ext.store_inventory.store_name
state:
type:
- string
- 'null'
description: String at product.ext.store_inventory.state
in_stock:
type:
- boolean
- 'null'
description: Boolean at product.ext.store_inventory.in_stock
quantity:
type:
- integer
- 'null'
description: Numeric at product.ext.store_inventory.quantity
condition:
type:
- string
- 'null'
description: String at product.ext.condition
available_quantity:
type:
- integer
- 'null'
description: Numeric at product.ext.available_quantity
watchers:
type:
- integer
- 'null'
description: Numeric at product.ext.watchers
sold_at:
type:
- string
- 'null'
description: String at product.ext.sold_at
sold_caption:
type:
- string
- 'null'
description: String at product.ext.sold_caption
buying_format:
type:
- string
- 'null'
description: String at product.ext.buying_format
seller_reputation:
type:
- object
- 'null'
description: 'Nested object: product.ext.seller_reputation'
properties:
feedback_percentage:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.feedback_percentage
feedback_count:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.feedback_count
top_rated:
type:
- boolean
- 'null'
description: Boolean at product.ext.seller_reputation.top_rated
items_sold:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.items_sold
joined:
type:
- string
- 'null'
description: String at product.ext.seller_reputation.joined
url:
type:
- string
- 'null'
description: String at product.ext.seller_reputation.url
detailed_ratings:
type:
- object
- 'null'
description: 'Nested object: product.ext.seller_reputation.detailed_ratings'
properties:
accurate_description:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.detailed_ratings.accurate_description
reasonable_shipping_cost:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.detailed_ratings.reasonable_shipping_cost
shipping_speed:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.detailed_ratings.shipping_speed
communication:
type:
- integer
- 'null'
description: Numeric at product.ext.seller_reputation.detailed_ratings.communication
_warnings:
type: array
description: 'Non-fatal notices about this response (field-map drift, clamped computed values). Advisory only: its presence never means the request failed. Omitted entirely when there is nothing to report, so treat absent as ''no warnings''.'
items:
type: string
description: One advisory notice.
credits_used:
type: integer
description: Number of credits consumed
credits_remaining:
type:
- integer
- 'null'
description: Current account balance. Null only when an idempotency replay succeeds but its transient balance lookup fails.
request_id:
type: string
description: Unique request identifier for support
cached:
type: boolean
description: Whether the response was served from cache
idempotent_replay:
type: boolean
description: True only when this response is an idempotency replay
required:
- success
- platform
- endpoint
- data
- credits_used
- credits_remaining
- request_id
- cached
'400':
$ref: '#/components/responses/Error400'
'401':
$ref: '#/components/responses/Error401'
'402':
$ref: '#/components/responses/Error402'
'404':
$ref: '#/components/responses/Error404'
'405':
$ref: '#/components/responses/Error405'
'409':
$ref: '#/components/responses/Error409'
'413':
$ref: '#/components/responses/Error413'
'422':
$ref: '#/components/responses/Error422'
'429':
$ref: '#/components/responses/Error429'
'500':
$ref: '#/components/responses/Error500'
'502':
$ref: '#/components/responses/Error502'
'503':
$ref: '#/components/responses/Error503'
/home_depot/reviews:
get:
summary: Get Home Depot product reviews
description: 'Returns written customer reviews for a Home Depot product, 20 per page and up to 100, each with the review text, star rating, reviewer name, submission date, verified-purchaser flag, helpful-vote count, reviewer photos, and any manufacturer reply. This is the fastest and most complete review surface in the API: pages do not overlap, the review total is stable across pages, and every one of the nine review fields is populated, so a full crawl is deterministic. Pass the returned cursor back until has_more is false.'
tags:
- home_depot
operationId: get_home_depot_reviews
security:
- ApiKeyAuth: []
x-credit-tier: advanced
x-credit-cost: 5
parameters:
- name: item_id
in: query
required: true
description: 'Home Depot internet number (item id), the numeric id at the end of a homedepot.com product URL: homedepot.com/p/<name>/326680222 is item id 326680222. Pass url instead if you would rather hand over the whole product URL.'
schema:
type: string
- name: page
in: query
required: false
description: 'Page number, starting at 1. Prefer the universal cursor parameter. Native upstream cursor param. Send the universal `cursor` instead: the API maps it to this name for you.'
deprecated: true
schema:
type: integer
minimum: 1
maximum: 51
- name: items_per_page
in: query
required: false
description: Reviews per page, 1 to 100. Defaults to 20.
schema:
type: integer
minimum: 1
maximum: 100
- name: rating
in: query
required: false
description: Return only reviews with this star rating, 1 to 5.
schema:
type: integer
minimum: 1
maximum: 5
- name: sort_by
in: query
required: false
description: 'Review ordering: helpful (default), newest, oldest, photos_first, highest_rating, or lowest_rating.'
schema:
type: string
enum:
- helpful
- newest
- oldest
- photos_first
- highest_rating
- lowest_rating
- name: search_text
in: query
required: false
description: Return only reviews whose text contains these words, for example easy to use.
schema:
type: string
- name: verified_only
in: query
required: false
description: Set true to return only reviews written by verified purchasers.
schema:
type: boolean
- name: cursor
in: query
required: false
description: 'Universal pagination cursor. Send `pagination.next_cursor` from the previous response back verbatim: the API maps it to this endpoint''s native `page` (page style). You never construct, decode, or look up a cursor. Omit it for page 1.'
schema:
type: string
- name: Cache-Control
in: header
required: false
description: Send `no-cache` to bypass the response cache and force a live fetch. Billed at the normal endpoint cost; the fresh result is written back to cache for the next caller. Only the `no-cache` directive triggers this. See the Response Schema guide for details.
schema:
type: string
- name: Idempotency-Key
in: header
required: false
description: 'Optional UUID that makes the request safely retriable. A replay keeps the cached payload immutable except for billing metadata: `credits_used` becomes 0, `idempotent_replay` becomes true, and `credits_remaining` is refreshed to the current balance. A known current balance appears in both the body and `X-Credits-Remaining` header; no balance row resolves to 0. On a transient lookup failure, body `credits_remaining` is null and `X-Credits-Remaining` is omitted. Scoped per account with a 24-hour TTL.'
schema:
type: string
responses:
'200':
description: Successful response
headers:
X-Credits-Used:
description: Net credits charged for this response. Idempotency replays report 0.
schema:
type: integer
minimum: 0
X-Credits-Remaining:
description: Current balance when known. On an idempotency replay, this header is omitted when the balance lookup fails; body `credits_remaining` is null instead.
schema:
type: integer
minimum: 0
X-Idempotent-Replay:
description: Present with value `true` only when this response replays a settled idempotency record.
schema:
type: string
enum:
- 'true'
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: Whether the request succeeded
platform:
type: string
description: Platform name
endpoint:
type: string
description: API endpoint path
data:
type: object
description: Platform-specific response data
properties:
items:
type: array
description: Array of canonical review wrappers ({ review })
items:
type: object
description: Canonical review wrapper
properties:
review:
type: object
description: Canonical Review object (shared across commerce platforms)
properties:
id:
type: string
description: Review ID (parsed from the review URL when not first-class)
entity_id:
type:
- string
- 'null'
description: ID of the reviewed entity (e.g. the Amazon ASIN)
url:
type:
- string
- 'null'
description: String at review.url
title:
type:
- string
- 'null'
description: String at review.title
text:
type:
- string
- 'null'
description: Full review body
rating:
type: object
description: Star rating (value + max)
properties:
value:
type:
- integer
- 'null'
description: Numeric at review.rating.value
max:
type:
- integer
- 'null'
description: Numeric at review.rating.max
author:
type: object
description: 'Nested object: review.author'
properties:
name:
type:
- string
- 'null'
description: String at review.author.name
avatar_url:
type:
- string
- 'null'
description: String at review.author.avatar_url
url:
type:
- string
- 'null'
description: String at review.author.url
location:
type:
- string
- 'null'
description: String at review.author.location
# --- truncated at 32 KB (108 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/socialcrawl/refs/heads/main/openapi/socialcrawl-home-depot-api-openapi.yml