{
  "openapi": "3.0.1",
  "info": {
    "title": "Local Lead Finder Pro — $4/1K · Emails, Phones & Website Audits",
    "description": "Find US local businesses or enrich website lists with public contacts and source-qualified website audit signals. Bulk export: JSON, CSV, Excel and API. PPE: $4/1K business results; start fee extra.",
    "version": "1.3",
    "x-build-id": "KimNFLzsLUMsKXwTb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apivault_labs~local-business-lead-finder-pro/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apivault_labs-local-business-lead-finder-pro",
        "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/apivault_labs~local-business-lead-finder-pro/runs": {
      "post": {
        "operationId": "runs-sync-apivault_labs-local-business-lead-finder-pro",
        "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/apivault_labs~local-business-lead-finder-pro/run-sync": {
      "post": {
        "operationId": "run-sync-apivault_labs-local-business-lead-finder-pro",
        "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": {
          "workflow": {
            "title": "Workflow",
            "enum": [
              "auto",
              "findLeads",
              "enrichUrls",
              "combined"
            ],
            "type": "string",
            "description": "Choose how leads are created. Auto-detect preserves existing integrations: category + location searches, Website URLs enrich directly, and providing both combines them.",
            "default": "auto"
          },
          "category": {
            "title": "Business Category",
            "type": "string",
            "description": "Type of business to search for. Examples: plumbers, restaurants, dentists, auto-repair, lawyers, hair-salons. Leave empty if you only want to enrich your own list via 'Website URLs'."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City and state. Examples: 'New York NY', 'Los Angeles CA', 'Chicago IL', 'Miami FL'. Search results may include nearby towns, so review the returned address before outreach. Leave empty if you only want to enrich your own list via 'Website URLs'."
          },
          "startUrls": {
            "title": "Website URLs (direct enrichment mode)",
            "type": "array",
            "description": "Optional. Paste your own list of business website URLs (or bare domains) to enrich them directly — skips the YellowPages search entirely. Each URL is crawled for emails, phones, real social profiles, owner name, tech stack, mobile/SEO audit and a lead score. Use this to turn a raw domain list (CSV from your CRM) into a fully-enriched lead list. Works alongside or instead of category+location.",
            "items": {
              "type": "string"
            }
          },
          "pages": {
            "title": "Pages to Scrape",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of result pages to scrape (each page ~30 businesses).",
            "default": 1
          },
          "onlyWithoutWebsite": {
            "title": "Only Without Website",
            "type": "boolean",
            "description": "Return listings with no business website linked by the directory. This does not prove the business has no website elsewhere.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Number of YellowPages pages to scrape in parallel.",
            "default": 3
          },
          "timeout": {
            "title": "Timeout (seconds)",
            "minimum": 30,
            "maximum": 300,
            "type": "integer",
            "description": "Maximum time to wait for each YellowPages page.",
            "default": 120
          },
          "enrichWebsites": {
            "title": "Check websites (alive + tech stack + emails + phones)",
            "type": "boolean",
            "description": "Read public website pages for contacts and HTML technology/SEO signals. Blocked or unreachable responses are unknown; certificate verification stays enabled.",
            "default": true
          },
          "crawlSubpages": {
            "title": "Crawl /contact + /about for more contacts",
            "type": "boolean",
            "description": "When a lead's homepage has no email, also fetch its /contact, /about and /team pages to dig out the real inbox, owner name and social links. Cost-aware: subpages are only fetched when the homepage came up empty, so most leads still cost a single request.",
            "default": true
          },
          "verifyEmails": {
            "title": "Check email syntax and DNS signals",
            "type": "boolean",
            "description": "DNS-only contact confidence, not mailbox verification. MX records do not prove deliverability or catch-all status. Guesses stay separate from published addresses.",
            "default": true
          },
          "extractOwnerName": {
            "title": "Extract owner / decision-maker name",
            "type": "boolean",
            "description": "Extract explicitly published founder/owner names when available. Article authors and unnamed team members are not treated as business owners.",
            "default": true
          },
          "enrichEmailGuesses": {
            "title": "Generate email guesses",
            "type": "boolean",
            "description": "Generate plausible email addresses (info@, contact@, hello@, office@) from the business website domain. Use these as fallback when no real email is scraped. Verify with a tool like Hunter or NeverBounce before sending.",
            "default": true
          },
          "enrichSocialUrls": {
            "title": "Build social search URLs",
            "type": "boolean",
            "description": "Add 1-click search links for Facebook, Instagram, LinkedIn, Google Maps and Google search — useful to verify online presence in seconds.",
            "default": true
          },
          "includeOutreachPitch": {
            "title": "Generate outreach pitch",
            "type": "boolean",
            "description": "Editable rule-based draft grounded in available signals; no claims about revenue, conversions or guaranteed results.",
            "default": true
          },
          "enrichBrandAge": {
            "title": "Check earliest public website archive",
            "type": "boolean",
            "description": "Years since the earliest returned archive snapshot, not business age or domain registration date. Unknown when the public archive is unavailable.",
            "default": true
          },
          "enrichGeocode": {
            "title": "Geocode addresses (lat/lng via OpenStreetMap)",
            "type": "boolean",
            "description": "Optional public address geocoding, serialized to at most one request per second. Coordinates can be unknown or approximate.",
            "default": false
          },
          "excludeChains": {
            "title": "Exclude corporate chains / franchises",
            "type": "boolean",
            "description": "Drop national chains and franchises (Roto-Rooter, Aamco, Subway, Domino's, Great Clips, Anytime Fitness, RE/MAX, Servpro, Verizon, AT&T, ~50 brands matched by name). Most agencies skip these because corporate marketing controls the spend.",
            "default": false
          },
          "minLeadScore": {
            "title": "Minimum lead score (0-100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Drop leads below this composite score. Score combines: no-website bonus, website-on-DIY-builder, dead-website, review count, rating, years in business. Tiers: cold <35, warm 35-54, hot 55-74, on-fire 75+.",
            "default": 0
          },
          "maxResults": {
            "title": "Max results (after enrichment + sorting)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum delivered and billed leads, after scoring and filtering. Does not cap the number of discovered candidates.",
            "default": 25
          },
          "outputPreset": {
            "title": "Output detail",
            "enum": [
              "sales",
              "contacts",
              "full"
            ],
            "type": "string",
            "description": "Sales returns qualification and outreach fields. Contacts focuses on reachable contact data. Full returns every available field. Existing calls that omit this field keep the legacy full output.",
            "default": "sales"
          },
          "exportFormat": {
            "title": "Export format",
            "enum": [
              "default",
              "csv",
              "both"
            ],
            "type": "string",
            "description": "Output shape. 'default' = full JSON. 'csv' = flat record with HubSpot/Pipedrive-friendly column names. 'both' = full JSON plus a nested '_csv' field.",
            "default": "default"
          },
          "runBudgetSecs": {
            "title": "Collection time budget (seconds)",
            "minimum": 30,
            "maximum": 600,
            "type": "integer",
            "description": "Finite overall collection/enrichment budget. Completed leads survive a timeout, with PARTIAL diagnostics.",
            "default": 170
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}