{
  "openapi": "3.0.1",
  "info": {
    "title": "Directory Leads Scraper — Yellow Pages, BBB, Superpages & More",
    "description": "Search Yellow Pages, Superpages, BBB, Yellow Pages Canada and Thumbtack by keyword and location and get one deduplicated lead per business: phone, address, website, rating, years in business, plus emails and social profiles from its website. No login, dataset-only, MCP-ready.",
    "version": "0.1",
    "x-build-id": "01ZYzFEQyMmZma7S6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/inovaflow~directory-leads-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-inovaflow-directory-leads-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/inovaflow~directory-leads-scraper/runs": {
      "post": {
        "operationId": "runs-sync-inovaflow-directory-leads-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/inovaflow~directory-leads-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-inovaflow-directory-leads-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": "What to search",
            "type": "array",
            "description": "One search per line, with the place in it — e.g. `dentists in Boston, MA`, `plumbers in Austin, TX`, `roofing contractors in Toronto, ON`. Or type only the trade (`dentists`) and set \"Location\" below once for all of them.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location (optional)",
            "type": "string",
            "description": "City and state/province used for every search that does not name one — e.g. `Boston, MA` or `Toronto, ON`. US and Canada are covered."
          },
          "directories": {
            "title": "Directories",
            "type": "array",
            "description": "Which directories to search. Leave empty to search every directory that covers the location's country (US: Yellow Pages, Superpages, BBB, Thumbtack; Canada: Yellow Pages Canada, BBB). The same business found in several directories is delivered once.",
            "items": {
              "type": "string",
              "enum": [
                "yellowpages",
                "superpages",
                "bbb",
                "yellowpages-ca",
                "thumbtack"
              ],
              "enumTitles": [
                "Yellow Pages (yellowpages.com)",
                "Superpages (superpages.com)",
                "BBB (bbb.org)",
                "Yellow Pages Canada (yellowpages.ca)",
                "Thumbtack (thumbtack.com)"
              ]
            },
            "default": []
          },
          "maxPerQuery": {
            "title": "Max listings per search and directory",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many listings to collect from each directory for each search (30 per page on Yellow Pages / Superpages, 15 on BBB, 35 on Yellow Pages Canada, one page of ~8 on Thumbtack). Listings that turn out to be the same business are merged, so the number of delivered leads is usually lower.",
            "default": 50
          },
          "enrichContacts": {
            "title": "Extract emails & socials from each website",
            "type": "boolean",
            "description": "Visits every business website (home + contact/about pages) and pulls out email addresses, extra phone numbers and Facebook / Instagram / LinkedIn / X / YouTube / TikTok / WhatsApp links. Charged only when something was found.",
            "default": true
          },
          "onlyWithEmail": {
            "title": "Only leads with an email address",
            "type": "boolean",
            "description": "Deliver (and pay for) only businesses where at least one email address was found on the website.",
            "default": false
          },
          "onlyWithWebsite": {
            "title": "Only businesses with a website",
            "type": "boolean",
            "description": "Skip businesses that list no website in any directory.",
            "default": false
          },
          "onlyWithPhone": {
            "title": "Only businesses with a phone number",
            "type": "boolean",
            "description": "Skip businesses that list no phone number in any directory (Thumbtack never shows one).",
            "default": false
          },
          "minRating": {
            "title": "Minimum rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Skip businesses rated below this many stars (1–5) in the directory. Businesses without a star rating are skipped too. Leave empty for no minimum."
          },
          "minReviews": {
            "title": "Minimum number of reviews",
            "minimum": 1,
            "type": "integer",
            "description": "Skip businesses with fewer directory reviews than this. Businesses without a review count are skipped too."
          },
          "includeAds": {
            "title": "Include sponsored listings",
            "type": "boolean",
            "description": "Keep businesses that appear as paid/sponsored placements on the directory page (they are real local businesses too). They are flagged with `isAd: true`.",
            "default": true
          },
          "startUrls": {
            "title": "Directory search URLs (optional)",
            "type": "array",
            "description": "Paste search or category pages copied from yellowpages.com, superpages.com, bbb.org/search, yellowpages.ca or thumbtack.com (e.g. `https://www.yellowpages.com/search?search_terms=plumbers&geo_location_terms=Austin%2C+TX`). Each is paged like a search.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxContactPages": {
            "title": "Max pages per website",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many pages of each business website to read when extracting contacts (homepage + contact-like pages).",
            "default": 3
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many directory pages and business websites are fetched in parallel.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Used for BBB, Yellow Pages Canada and Thumbtack pages; Apify datacenter proxies are the default and work for all shipped directories. Yellow Pages and Superpages are read through the Actor's own connection (their edge blocks proxy ranges) and fall back to this proxy only if that is blocked.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}