{
  "openapi": "3.0.1",
  "info": {
    "title": "Angi Scraper - US Home Service Pros & Contractors",
    "description": "Angi (Angie's List) scraper & data API: find US home-service pros & contractors by category and city — export business name, category, phone, full address, rating, review count, reviews, years in business & verification. Home-services lead generation & local market research — fast.",
    "version": "0.1",
    "x-build-id": "7ViV3WcGNqteG3A1q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~angi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-angi-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/haketa~angi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-angi-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/haketa~angi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-angi-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": {
          "categories": {
            "title": "Service categories",
            "type": "array",
            "description": "Pick one or more home-service categories to collect pros for. Each selected category is combined with each selected location. Leave empty to use a popular default mix.",
            "items": {
              "type": "string",
              "enum": [
                "plumbing",
                "electrician",
                "hvac",
                "roofing",
                "house-cleaning",
                "landscaping",
                "handyman",
                "painting",
                "pest-control",
                "flooring",
                "remodeling",
                "concrete",
                "fencing",
                "garage-doors",
                "gutter-cleaning",
                "junk-removal",
                "moving",
                "pool-service",
                "tree-service",
                "window-cleaning"
              ],
              "enumTitles": [
                "Plumbing",
                "Electrician",
                "HVAC (Heating & Cooling)",
                "Roofing",
                "House Cleaning",
                "Landscaping",
                "Handyman",
                "Painting",
                "Pest Control",
                "Flooring",
                "Remodeling",
                "Concrete",
                "Fencing",
                "Garage Doors",
                "Gutter Cleaning",
                "Junk Removal",
                "Moving",
                "Pool Service",
                "Tree Service",
                "Window Cleaning"
              ]
            },
            "default": [
              "plumbing"
            ]
          },
          "locations": {
            "title": "Locations (city)",
            "type": "array",
            "description": "Pick one or more US cities to search in. Each selected location is combined with each selected category. Leave empty to use a popular default mix.",
            "items": {
              "type": "string",
              "enum": [
                "ny/new-york-city",
                "ca/los-angeles",
                "il/chicago",
                "tx/houston",
                "az/phoenix",
                "pa/philadelphia",
                "tx/san-antonio",
                "ca/san-diego",
                "tx/dallas",
                "tx/austin",
                "fl/jacksonville",
                "ca/san-jose",
                "oh/columbus",
                "nc/charlotte",
                "ca/san-francisco",
                "in/indianapolis",
                "wa/seattle",
                "co/denver",
                "ma/boston",
                "tn/nashville",
                "mi/detroit",
                "or/portland",
                "nv/las-vegas",
                "ga/atlanta",
                "fl/miami"
              ],
              "enumTitles": [
                "New York City, NY",
                "Los Angeles, CA",
                "Chicago, IL",
                "Houston, TX",
                "Phoenix, AZ",
                "Philadelphia, PA",
                "San Antonio, TX",
                "San Diego, CA",
                "Dallas, TX",
                "Austin, TX",
                "Jacksonville, FL",
                "San Jose, CA",
                "Columbus, OH",
                "Charlotte, NC",
                "San Francisco, CA",
                "Indianapolis, IN",
                "Seattle, WA",
                "Denver, CO",
                "Boston, MA",
                "Nashville, TN",
                "Detroit, MI",
                "Portland, OR",
                "Las Vegas, NV",
                "Atlanta, GA",
                "Miami, FL"
              ]
            },
            "default": [
              "ca/los-angeles"
            ]
          },
          "customLocations": {
            "title": "Other cities (advanced)",
            "type": "array",
            "description": "Optional: add cities not in the dropdown, written as state-abbreviation/city-slug (e.g. ca/long-beach, tx/plano). Combined with each selected category.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (advanced)",
            "type": "array",
            "description": "Optional: paste Angi listing or pro-profile URLs to scrape directly (e.g. a category list page or a company page). Most users can leave this empty and use the dropdowns above.",
            "items": {
              "type": "string"
            }
          },
          "maxPagesPerList": {
            "title": "Max pages per listing",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many result pages to paginate per category + location listing. More pages = more pros.",
            "default": 3
          },
          "maxItems": {
            "title": "Max pros to save",
            "type": "integer",
            "description": "Maximum number of pros to save. 0 = no limit.",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Maximum parallel profile requests. Keeping this low gives the most reliable results.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Angi works best with a US residential proxy. Keep the default unless you supply your own US residential proxy.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}