{
  "openapi": "3.0.1",
  "info": {
    "title": "BizQuest Businesses For Sale Scraper",
    "description": "Scrapes business-for-sale listings from BizQuest: title, location, asking price, revenue, EBITDA, images, broker contact and listing URL.",
    "version": "0.0",
    "x-build-id": "aOGMhjkQkJey7SwFr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datacach~bizquest-businesses-for-sale-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datacach-bizquest-businesses-for-sale-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/datacach~bizquest-businesses-for-sale-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datacach-bizquest-businesses-for-sale-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/datacach~bizquest-businesses-for-sale-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datacach-bizquest-businesses-for-sale-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": {
          "crawlAllStates": {
            "title": "Scrape every US state",
            "type": "boolean",
            "description": "When on, the Actor reads BizQuest's sitemap, finds the listing page for every US state, and scrapes each one. This is the way to get the full catalog, because BizQuest caps any single search at 10,000 results while each individual state stays below that ceiling. Filling in Location below automatically turns this off, since a location is a more specific instruction. When off and no location is given, only the Start URLs are scraped. On the free plan this is always off, and a single listing page is scraped instead.",
            "default": true
          },
          "location": {
            "title": "Location",
            "type": "array",
            "description": "Where to look for businesses. Type a US state, city, county or metro area, one per line — for example \"Texas\", \"Houston, TX\", \"Los Angeles County, CA\" or \"New York City Metro Area, NY\". Each entry is matched against BizQuest's own location pages, so you get exactly what the site's own search returns. Add the two-letter state code when a city name exists in several states, otherwise the most popular match is used and the alternatives are listed in the log. Filling this in turns off the all-states crawl. Free plan uses only the first location.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Limit results to these industries. Leave empty to get every industry. The filter is applied to every page the run scrapes, whether it comes from Location, Start URLs or the all-states crawl.",
            "items": {
              "type": "string",
              "enum": [
                "Auto & Automotive",
                "Building & Construction Service",
                "Business Service",
                "Chemicals",
                "Clothing & Fashion",
                "Communication & Media",
                "Educational",
                "Entertainment & Leisure",
                "Financial",
                "Food & Beverage",
                "General Merchandise",
                "Hair & Beauty",
                "Health & Medical",
                "Home & Garden",
                "Home & Office Furniture",
                "Internet Related",
                "Machinery",
                "Manufacturing",
                "Moving, Storage & Delivery",
                "Non-Classifiable Establishments",
                "Office",
                "Personal Product & Service",
                "Professional Service",
                "Real Estate",
                "Retail Stores",
                "Technology",
                "Transportation",
                "Wholesale & Distribution"
              ]
            },
            "default": []
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Specific BizQuest listing pages to scrape, for example https://www.bizquest.com/businesses-for-sale-in-texas-tx/ for one state or https://www.bizquest.com/restaurant-and-food-businesses-for-sale/ for one industry. Paste listing pages, not individual business detail pages. Leave empty to rely on the full crawl above. Free plan uses only the first URL.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the run once this many listings have been collected. Set to 0 for no limit, which scrapes roughly 45,000 listings for the full catalog and takes around half an hour. Keep this low while you are testing so runs finish quickly and cheaply. Free plan is capped at 50 listings.",
            "default": 100
          },
          "requestDelaySeconds": {
            "title": "Delay between requests",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "How long to pause between page requests. The default of 2 seconds matches the Crawl-delay that BizQuest declares in its robots.txt. Setting a lower value makes the run faster but stops honouring what the site asks of automated clients.",
            "default": 2
          },
          "includeBrokerContact": {
            "title": "Include broker contact details",
            "type": "boolean",
            "description": "When on, each listing also includes the broker's full name and phone number. These are personal data of identifiable individuals, so only turn this on if you have a lawful basis to collect and store them under GDPR, CCPA or your local equivalent. When off, those two fields are removed from every result and the rest of the listing data is unaffected.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "This Actor does not need a proxy. BizQuest does not block by IP address, so the default direct connection works reliably and costs you nothing in proxy usage. Only enable a proxy if you are running at unusually high volume or from a network that is already restricted.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}