{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn People Search Scraper — 35+ Filters, Free Counts",
    "description": "LinkedIn people search by title, seniority, employer, company size, industry, past employer, tenure, city: 35+ filters, no login. Free counts and market breakdowns before you buy, then $0.95 per 1,000 people, about 4× below the most used people search. Full profiles $3.20, with emails & phones $8.",
    "version": "0.1",
    "x-build-id": "8THAjTZZc8Eirn0Wh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2bsearch~people-database-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2bsearch-people-database-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/b2bsearch~people-database-search/runs": {
      "post": {
        "operationId": "runs-sync-b2bsearch-people-database-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/b2bsearch~people-database-search/run-sync": {
      "post": {
        "operationId": "run-sync-b2bsearch-people-database-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",
        "properties": {
          "mode": {
            "title": "What to return",
            "enum": [
              "people",
              "count",
              "market"
            ],
            "type": "string",
            "description": "people = the rows, paid per person. count = how many people match, no per-row charge. market = the segment's shape, no per-row charge: countries, seniority, employer size and industry, career start year, top job titles and top employers, plus how many have a personal email. Size and compare first, then buy rows.",
            "default": "people"
          },
          "maxResults": {
            "title": "Maximum result rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many people (default 500, maximum 50,000; 10,000 on the profile tiers). You pay per person delivered — $0.95 per 1,000 in the row tier — so set it to the number you need. Ignored by count and market modes. Free Apify plan: up to 100 from Console, 25 via the API.",
            "default": 500
          },
          "profileDetail": {
            "title": "How much to return per person",
            "enum": [
              "row",
              "profile",
              "contacts"
            ],
            "type": "string",
            "description": "Paid per person, never per search. row = name, title, employer, location and email flags, $0.95 per 1,000; profile = the full career profile, no contacts, $3.20 per 1,000; contacts = plus emails, phones and social links, $8 per 1,000 people with a contact that reaches them today (the rest at the profile price). Profile tiers cap a run at 10,000.",
            "default": "row"
          },
          "mustHave": {
            "title": "Must have",
            "uniqueItems": true,
            "type": "array",
            "description": "Deliver and charge only people who have all of these; the rest are skipped free and counted in one note row. Personal and work email work on every tier; phone, social profiles and \"work email at the current employer\" need emails & phones. Personal email also narrows the free count.",
            "items": {
              "type": "string",
              "enum": [
                "email",
                "personalEmail",
                "workEmail",
                "currentWorkEmail",
                "phone",
                "github",
                "twitter",
                "facebook"
              ],
              "enumTitles": [
                "Any email address",
                "Personal email (gmail, yahoo, ISP mail)",
                "Work email (any company address)",
                "Work email at the current employer",
                "Direct phone (not a switchboard)",
                "GitHub profile",
                "Twitter / X profile",
                "Facebook profile"
              ]
            }
          },
          "compact": {
            "title": "Compact rows (for AI agents)",
            "type": "boolean",
            "description": "Returns a short row instead of the full record: identity, current role, location, the 5 latest positions, education, top skills and any contacts — about 2 KB per person instead of 10+ KB. Made for AI agents and LLM pipelines with a context limit. Same price. Off by default: a run returns the complete record.",
            "default": false
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Where the people live: two-letter codes (us, de, gb...), up to 60. Combine with country groups; leave both empty to search every country by title, headline or employer.",
            "items": {
              "type": "string"
            }
          },
          "countryGroups": {
            "title": "Country groups",
            "uniqueItems": true,
            "type": "array",
            "description": "Whole regions at once, added to the countries above: eu, eea, dach, nordics, baltics, benelux, cee, cis, post_soviet, mena, gcc, latam.",
            "items": {
              "type": "string",
              "enum": [
                "eu",
                "eea",
                "dach",
                "nordics",
                "baltics",
                "benelux",
                "cee",
                "cis",
                "post_soviet",
                "mena",
                "gcc",
                "latam"
              ],
              "enumTitles": [
                "European Union (27)",
                "EEA (30)",
                "DACH: Germany, Austria, Switzerland",
                "Nordics",
                "Baltics",
                "Benelux",
                "Central & Eastern Europe",
                "CIS",
                "Post-Soviet",
                "Middle East & North Africa",
                "Gulf (GCC)",
                "Latin America"
              ]
            }
          },
          "titleKeywords": {
            "title": "Job title keywords",
            "type": "array",
            "description": "Match any of these words in the current job title (founder, cto, \"vice president\"...). Each 3-64 characters, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "titleMatch": {
            "title": "Job title matching",
            "enum": [
              "substring",
              "word"
            ],
            "type": "string",
            "description": "How job title keywords match. Leave empty: a list with a short title (4 letters or fewer: cto, cro, vp, ceo) matches whole words, otherwise the letters match anywhere. substring: \"cto\" also hits \"director\" (89,024 people in Poland); word: whole words only (3,049)."
          },
          "headlineKeywords": {
            "title": "Headline keywords",
            "type": "array",
            "description": "Match any of these words in the profile headline — what people say they do (\"fractional cfo\", \"rust\", \"growth\"). Each 3-64 characters, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "seniority": {
            "title": "Seniority",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only people whose current role falls in these seniority buckets. Buckets are assigned from the job title, so they work across title spellings ('CTO', 'Chief Technology Officer', 'Head of Technology' all land in cxo). At most 6.",
            "items": {
              "type": "string",
              "enum": [
                "cxo",
                "vp",
                "director",
                "manager",
                "founder",
                "other"
              ],
              "enumTitles": [
                "C-level (CxO)",
                "VP",
                "Director",
                "Manager",
                "Founder",
                "Other / individual contributor"
              ]
            }
          },
          "companyDomains": {
            "title": "Employer site domains",
            "type": "array",
            "description": "Keep only people currently working at these companies, by site domain (stripe.com). Brand domains resolve to the real employer. At most 1,000.",
            "items": {
              "type": "string"
            }
          },
          "employerIndustries": {
            "title": "Employer industries",
            "type": "array",
            "description": "Current employer's industry: names in either wording, any case (Software Development also finds Computer Software), or taxonomy ids — a sector id covers everything under it. Up to 20 names and 50 ids. Examples: Financial Services, Hospitals and Health Care.",
            "items": {
              "type": "string"
            }
          },
          "employeeCountMin": {
            "title": "Employer size — minimum headcount",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only people at employers with at least this many employees."
          },
          "employeeCountMax": {
            "title": "Employer size — maximum headcount",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only people at employers with at most this many employees."
          },
          "pastEmployerDomains": {
            "title": "Past employer site domains",
            "type": "array",
            "description": "People who USED to work at these companies, by site domain (stripe.com) — talent from a competitor, alumni of a former customer. People still there are left out unless you turn on \"count people still there\". At most 100.",
            "items": {
              "type": "string"
            }
          },
          "segments": {
            "title": "Segments to compare (count and market modes)",
            "type": "array",
            "description": "Compare up to 10 segments in one run: each is {\"name\": ..., plus the fields that differ}, laid over the input above. Example: [{\"name\":\"Germany\",\"countries\":[\"de\"]},{\"name\":\"Poland\",\"countries\":[\"pl\"]}]. Count and market modes only."
          },
          "maxPerCompany": {
            "title": "People per company (at most)",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Account-based lists: deliver at most this many people per current employer across the whole run. The rest are skipped free and counted in one note row."
          },
          "excludeDatasets": {
            "title": "Skip people from earlier runs",
            "type": "array",
            "description": "Pick datasets of earlier runs of this Actor: everyone in them is left out of this run and never charged again. Run the same search weekly and get only the new people."
          },
          "localityKeywords": {
            "title": "City / locality keywords",
            "type": "array",
            "description": "Narrow inside the chosen countries by city or region text (example: san francisco, greater london). 3-64 characters each, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "excludeCountries": {
            "title": "Exclude countries",
            "type": "array",
            "description": "Two-letter codes to drop, for example a group minus one country (eu without de).",
            "items": {
              "type": "string"
            }
          },
          "headlineAlsoKeywords": {
            "title": "Headline must also contain",
            "type": "array",
            "description": "A second list ANDed with headline keywords: the headline needs one word from each list. Example: headline keywords head of, director + also data, analytics = data leaders only. 3-64 characters each, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "pastTitleKeywords": {
            "title": "Past job title keywords",
            "type": "array",
            "description": "Match any of these words in a PAST job title — people who used to be something. 3-64 characters each, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "excludeTitleKeywords": {
            "title": "Exclude job title keywords",
            "type": "array",
            "description": "Drop people whose current title contains any of these words (example: junior, assistant, intern). 3-64 characters each, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "excludeHeadlineKeywords": {
            "title": "Exclude headline keywords",
            "type": "array",
            "description": "Drop people whose headline contains any of these words (example: student, retired, freelance). 3-64 characters each, at most 10.",
            "items": {
              "type": "string"
            }
          },
          "languages": {
            "title": "Speaks languages",
            "type": "array",
            "description": "Languages listed on the profile, two-letter codes (en, de, es). The language data is being built: until it lands, a run with this field stops with a note and nothing is charged.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanyDomains": {
            "title": "Exclude current employers",
            "type": "array",
            "description": "Drop people currently working at these companies, by site domain — your customers, your competitors, your own company. At most 1,000.",
            "items": {
              "type": "string"
            }
          },
          "includeUnknownEmployerSize": {
            "title": "Keep employers with no size on file",
            "type": "boolean",
            "description": "About half the companies on file carry no headcount, and a size filter drops all of them. Turn on to keep them — useful when small companies matter, since unknown size is usually small.",
            "default": false
          },
          "employerHqCountries": {
            "title": "Employer HQ countries",
            "type": "array",
            "description": "Keep people whose current employer is headquartered in these countries, wherever the person lives — for example people in Poland working for US companies.",
            "items": {
              "type": "string"
            }
          },
          "leftPastEmployerAfterYear": {
            "title": "Left the past employer in or after",
            "minimum": 1990,
            "maximum": 2100,
            "type": "integer",
            "description": "With past employer domains or countries: keep people whose last day there falls in this year or later."
          },
          "leftPastEmployerBeforeYear": {
            "title": "Left the past employer in or before",
            "minimum": 1990,
            "maximum": 2100,
            "type": "integer",
            "description": "With past employer domains or countries: keep people who left in this year or earlier."
          },
          "pastEmployerCountries": {
            "title": "Past employer HQ countries",
            "type": "array",
            "description": "Instead of domains: people who used to work at a company headquartered in these countries (\"worked at a US company, left after 2022\"). Two-letter codes.",
            "items": {
              "type": "string"
            }
          },
          "stillThereCounts": {
            "title": "Count people who are still at the past employer",
            "type": "boolean",
            "description": "Off by default. A past employer match means a completed position there — and an internal promotion also closes one, so roughly a third of matches are people who never left (measured: 668 of 2,102 on one employer). By default those are dropped and you get actual leavers; turn this on to keep everyone who ever held a role there.",
            "default": false
          },
          "careerStartYearMin": {
            "title": "Career started in or after",
            "minimum": 1950,
            "maximum": 2100,
            "type": "integer",
            "description": "Year of the person's first recorded position. Use with 'career started in or before' to target experience bands (a 2015 start is roughly 10 years of experience)."
          },
          "careerStartYearMax": {
            "title": "Career started in or before",
            "minimum": 1950,
            "maximum": 2100,
            "type": "integer",
            "description": "Year of the person's first recorded position."
          },
          "currentRoleStartedAfterYear": {
            "title": "Started the current role in or after",
            "minimum": 1990,
            "maximum": 2100,
            "type": "integer",
            "description": "Recent job changers: keep only people whose current position began in this year or later."
          },
          "currentRoleStartedBeforeYear": {
            "title": "Started the current role in or before",
            "minimum": 1950,
            "maximum": 2100,
            "type": "integer",
            "description": "Tenure: people who have held their current role since this year or longer (2022 = at least about three years in the role)."
          },
          "currentRoleStartedAfterDate": {
            "title": "Started the current role after (date)",
            "type": "string",
            "description": "Job changers to the month: YYYY-MM or YYYY-MM-DD. Start dates are dense through 2025 and thin for the last months, so use a window of a year or more."
          },
          "requireCurrentPosition": {
            "title": "Only people with a current position on record",
            "type": "boolean",
            "description": "Drop rows where no current employer is known.",
            "default": false
          },
          "onlyBetweenJobs": {
            "title": "Only people between jobs",
            "type": "boolean",
            "description": "Keep only people with no current position on record — open-to-work candidates, recently laid off.",
            "default": false
          },
          "connectionsMin": {
            "title": "Minimum connections",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only people with at least this many connections — a rough proxy for an active, established profile."
          },
          "connectionsMax": {
            "title": "Maximum connections",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only people with at most this many connections."
          },
          "activeAfter": {
            "title": "Profile active after (date)",
            "type": "string",
            "description": "Keep people whose profile shows activity on or after this date, YYYY-MM or YYYY-MM-DD."
          },
          "updatedAfter": {
            "title": "Record refreshed after (date)",
            "type": "string",
            "description": "Keep people whose record was refreshed on or after this date, YYYY-MM or YYYY-MM-DD — the same stamp as the row's updatedAt and _freshness, so `older` rows can be left out. Works for counts and market rows too."
          },
          "excludeLowSignal": {
            "title": "Skip low-signal profiles",
            "type": "boolean",
            "description": "Drop people with under 10 connections and no known career start — the self-declared \"CEO at <famous brand>\" pattern. Off by default: across the whole database many such profiles are sparse but real, so turn it on for leadership searches at well-known companies. Every row carries the lowSignal column either way.",
            "default": false
          },
          "excludePersonIds": {
            "title": "Skip these person IDs",
            "type": "array",
            "description": "personId values from earlier rows to leave out (up to 10,000). Easier: pick the earlier datasets above.",
            "items": {
              "type": "string"
            }
          },
          "sampleSeed": {
            "title": "Random sample (seed)",
            "minimum": 1,
            "type": "integer",
            "description": "Return one random page of up to 100 people spread across the whole segment instead of the first rows. The same seed returns the same people — for research samples you can reproduce."
          },
          "marketTopN": {
            "title": "Market mode: top job titles and employers",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many job titles and employers the market breakdown lists (default 25, up to 100).",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}