{
  "openapi": "3.0.1",
  "info": {
    "title": "Home Depot Scraper",
    "description": "Scrape Home Depot products by keyword search, product URL, or 9-digit item ID. Returns prices, brand, model, ratings, reviews, pickup/delivery stock, specs, and images. ZIP-aware pricing. SerpApi-backed, HTTP-only, MCP-ready. PPE — $0.005 per product, $0.002 per review.",
    "version": "1.0",
    "x-build-id": "66p1b5hPugwYKZM2M"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~home-depot-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-home-depot-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/khadinakbar~home-depot-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-home-depot-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/khadinakbar~home-depot-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-home-depot-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Free-text keyword searches run on Home Depot (e.g. 'cordless drill'). Each keyword is paginated up to the maxResults cap and returns product cards with price, brand, model, rating, and stock. Use this when you want to discover products by term rather than fetch a known item. NOT a product URL or item ID — for those use the productUrls or productIds fields.",
            "items": {
              "type": "string"
            }
          },
          "productUrls": {
            "title": "Product or search URLs",
            "type": "array",
            "description": "Home Depot URLs to scrape. A product URL (containing '/p/.../<9-digit-id>') is fetched as a single product; a search or category URL ('/s/...', '/b/...') is treated as a keyword search. Use this when you already have Home Depot links from a sitemap, spreadsheet, or prior run. NOT for bare IDs — put 9-digit numbers in productIds.",
            "items": {
              "type": "string"
            }
          },
          "productIds": {
            "title": "Product IDs (9-digit)",
            "type": "array",
            "description": "Home Depot 9-digit internal product IDs (the trailing number in a product URL, e.g. '326680222'). Each ID is fetched directly via the product engine — the fastest, most reliable mode. Use this when you have a list of known SKUs to refresh prices or stock for. NOT model numbers or UPCs — only the 9-digit Home Depot item number works.",
            "items": {
              "type": "string"
            }
          },
          "includeProductDetails": {
            "title": "Fetch full product details",
            "type": "boolean",
            "description": "When true, every product found in search mode is enriched with a second call that adds specifications, full description, all images, and detailed fulfillment. This makes runs slower and costs one extra SerpApi call per product. Defaults to false. Product-ID and product-URL modes always return full detail regardless of this flag.",
            "default": false
          },
          "includeReviews": {
            "title": "Extract customer reviews",
            "type": "boolean",
            "description": "When true, customer reviews returned by Home Depot for each detailed product are emitted as separate records (one per review) alongside the product records. Reviews are billed at $0.002 each. Defaults to false. Requires product detail, so this implies includeProductDetails for search-mode products.",
            "default": false
          },
          "deliveryZip": {
            "title": "Delivery ZIP code",
            "type": "string",
            "description": "US 5-digit ZIP code used to localize pricing, pickup, and delivery availability (e.g. '30301'). Home Depot prices and stock vary by store, so set this to the buyer's market for accurate data. Defaults to empty, which uses Home Depot's national default. NOT a city name or store ID — only a 5-digit ZIP."
          },
          "maxResults": {
            "title": "Max products",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Maximum number of product records to return across all search keywords and URLs combined (product-ID lookups are always fetched in full and not capped by this). Search results are paginated 24 per page until this cap is hit. Defaults to 48. Range 1–600; Home Depot search tops out near 576 results per keyword.",
            "default": 48
          },
          "maxResultsPerQuery": {
            "title": "Max products per keyword",
            "minimum": 0,
            "maximum": 600,
            "type": "integer",
            "description": "Optional per-keyword cap so one broad term does not consume the entire maxResults budget. For example, with three keywords and maxResultsPerQuery 24 you get up to 72 products. Defaults to 0, which means no per-keyword limit (only the global maxResults applies). Ignored for product-ID and product-URL modes.",
            "default": 0
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}