{
  "openapi": "3.0.1",
  "info": {
    "title": "People Search - B2B Decision Makers by Title & Industry",
    "description": "B2B people search: find founders, heads of sales and other decision makers by job title, industry keyword and country. Each person's company website is read to confirm the industry, with the confirming line quoted. Optional verified work emails. No LinkedIn login, no data vendor.",
    "version": "0.0",
    "x-build-id": "mmSViDipzLpsqaqDJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/leadproof~people-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-leadproof-people-search",
        "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/leadproof~people-search/runs": {
      "post": {
        "operationId": "runs-sync-leadproof-people-search",
        "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/leadproof~people-search/run-sync": {
      "post": {
        "operationId": "run-sync-leadproof-people-search",
        "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",
        "required": [
          "titles",
          "locations"
        ],
        "properties": {
          "titles": {
            "title": "Job titles",
            "type": "array",
            "description": "The roles to find, written the way people are titled, for example \"Founder\", \"Head of Sales\" or \"Purchasing Manager\". Up to 10. Related titles at the same level are found too (see Title matching).",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Where the people work. Each entry is an object with countryCode (two letters, required) and optionally region and city, for example {\"countryCode\": \"GB\"} or {\"countryCode\": \"US\", \"region\": \"TX\"}. Up to 5. A large country is searched region by region as the list grows."
          },
          "keywords": {
            "title": "Industry keywords",
            "maxItems": 20,
            "type": "array",
            "description": "What the company should do, for example \"digital marketing agency\", \"dental supplies\" or \"cybersecurity\". Each keyword is searched on its own, and each person's company website is read to confirm it, with the confirming line quoted in the row. Up to 20. Leave empty to find the titles in any industry.",
            "items": {
              "type": "string"
            }
          },
          "maxPeople": {
            "title": "Maximum people",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many people to return, across all titles and locations. Only people whose title, place and company are all supported by a quoted source are returned, so a run can return fewer than this; it never pads the list. Search effort and time grow with this number.",
            "default": 20
          },
          "personalEmails": {
            "title": "Personal emails",
            "type": "boolean",
            "description": "Find a personal work email for each person returned: one the company publishes beside the person's name, else the common patterns from the name and the company's domain (first.last@, first@, flast@ and others), each checked for deliverability until one accepts mail. Only a mailbox that accepts mail is returned. A domain that accepts every address (catch-all) returns nothing. Company mailboxes such as info@ are never returned. Each verified email is charged as its own event.",
            "default": false
          },
          "requireB2bEvidence": {
            "title": "Companies must sell to businesses",
            "type": "boolean",
            "description": "Return only people whose company's own pages show it sells to businesses (wholesale, distributors, professional customers, agencies, clinics and the like), with the line quoted. Off: selling to businesses is still read and reported, but not required.",
            "default": false
          },
          "titleMatchMode": {
            "title": "Title matching",
            "enum": [
              "related",
              "exact"
            ],
            "type": "string",
            "description": "related (default): the requested titles and their synonyms at the same level, for example Head of Sales also finds Sales Director. exact: only the requested titles, after normalizing case, punctuation and abbreviations.",
            "default": "related"
          },
          "linkedInMode": {
            "title": "Search method",
            "enum": [
              "profile_search"
            ],
            "type": "string",
            "description": "How people are found: Google's index of public profiles, searched by title, keyword and place; the profiles themselves are never opened and no account is used. The only method offered.",
            "default": "profile_search"
          },
          "locationScope": {
            "title": "Location basis",
            "enum": [
              "organization_location",
              "person_work_location"
            ],
            "type": "string",
            "description": "organization_location (default in this preview): the person is proven to work for an organization (role, affiliation and current status as strict as ever), and the organization's own pages prove it is located in the place: its structured address, a head-office statement, or its only published address. A branch or office of the organization in the place is not enough, because it does not place every employee there. Each row says which basis it matched on and never copies the organization's location into the person's. person_work_location: only a statement about the person (their own entry, their structured work location, or a roster of their branch) places them; the organization's location never counts.",
            "default": "organization_location"
          },
          "maxTitleCloseness": {
            "title": "How far a title may stand from the requested one",
            "enum": [
              "exact",
              "close",
              "broad"
            ],
            "type": "string",
            "description": "profile_search only. close allows a synonym, a seniority word or a scope qualifier; broad also a level equivalent or a combined or adjacent function. A person whose title stands further away is a candidate (title_further_than_asked), never a result. titleMatchMode exact stays the strictest.",
            "default": "broad"
          },
          "industries": {
            "title": "Industries (include)",
            "type": "array",
            "description": "Optional. Only companies whose own pages support one of these industries: agriculture, manufacturing, healthcare, education, government, financial_services, construction, retail, hospitality, logistics, energy, telecommunications, nonprofit. A company whose industry is unknown does not qualify and is listed as a candidate.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeIndustries": {
            "title": "Industries (exclude)",
            "type": "array",
            "description": "Optional. Leave out companies whose own pages support one of these industries. Same names as above. Exclusion wins over inclusion.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeCompanies": {
            "title": "Companies (include)",
            "type": "array",
            "description": "Optional. Only these companies. Each entry is a name, a domain, or {\"name\": \"Acme Ltd\", \"domain\": \"acme.co.ke\"}. A domain is the most reliable identifier. A company matches only as the same entity: a parent company does not match its subsidiaries.",
            "default": []
          },
          "excludeCompanies": {
            "title": "Companies (exclude)",
            "type": "array",
            "description": "Optional. Leave out these companies, in the same shape as above. A company both included and excluded is refused. A company that only shares part of its name with an excluded one is held back as a candidate rather than returned.",
            "default": []
          },
          "checkCompanies": {
            "title": "Check each company once",
            "type": "boolean",
            "description": "Read each person's company website once (home page and a few pages it links to) to confirm the industry keywords and whether it sells to businesses, with quotes. Off: only the company name and the indexed profile line are used, and far fewer people qualify.",
            "default": true
          },
          "requireIndustryEvidence": {
            "title": "Keywords must be supported",
            "type": "boolean",
            "description": "A person is returned only when a keyword is confirmed by a quoted line from the company name, the profile line or the company's own pages. Off: keywords steer the search but are not required.",
            "default": true
          },
          "minB2bStrength": {
            "title": "Selling to businesses: evidence strength",
            "enum": [
              "weak",
              "strong"
            ],
            "type": "string",
            "description": "profile_search only, with requireB2bEvidence. strong keeps as results only people whose company has a line naming a trade channel outright (wholesale, distributor, private label, reseller, retailers, key accounts); a line that only says the trade is served (for professionals) leaves them candidates with b2b_weak.",
            "default": "weak"
          },
          "judgeCompanies": {
            "title": "Judge the companies",
            "type": "boolean",
            "description": "An AI model that answers only structured questions reads each checked company's pages and decides what the company is to the keywords and whom it sells to; the lines it accepts are quoted as the evidence. It also sets aside a website that belongs to another company and tries the next one. Off, or unavailable: fixed word rules read the pages.",
            "default": true
          },
          "includeCandidates": {
            "title": "Write candidates",
            "type": "boolean",
            "description": "Also write the people found but not returned (another place, a title further than asked, a company that could not be confirmed) to a separate candidates dataset, each with what was missing. Candidates are never charged.",
            "default": true
          },
          "maxSearchQueries": {
            "title": "Maximum searches",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper bound on searches for the whole run. When empty, twice Maximum people (at least 12)."
          },
          "maxOrganizations": {
            "title": "Organizations to explore",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Upper bound on company websites checked. When empty, four times Maximum people (at least 20)."
          },
          "maxRunSeconds": {
            "title": "Time limit (seconds)",
            "minimum": 60,
            "maximum": 21600,
            "type": "integer",
            "description": "No new search or page read starts after this many seconds. When empty, twelve seconds per person asked for (at least 15 minutes, at most 6 hours). People are written as they qualify, so the first ones arrive within a minute or two."
          },
          "maxDependencyChargeUsd": {
            "title": "Search spend ceiling (USD)",
            "minimum": 0.01,
            "maximum": 50,
            "type": "number",
            "description": "Upper bound on what the searches and page reads of this run may cost the Actor. When empty, 3 cents per person asked for (at least $0.50, at most $50). It is not what you are charged: you pay only for the people returned and the emails found."
          },
          "cache": {
            "title": "Cache",
            "type": "object",
            "description": "Reuse what earlier runs collected: result pages (serpDays), company pages (companyDays) and indexed profile lines (profileDays), each within its age limit and judged again by this run. mode: read_write (default), read_only, write_only or off. Faster and cheaper; off always searches afresh.",
            "default": {
              "mode": "read_write"
            }
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Search interface language, for example en or sw.",
            "default": "en"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}