{
  "description": "Provide at least one company URL, domain, or name. Headcount and firmographics work without a cookie; employee rows are optional and require your own LinkedIn session cookie.",
  "properties": {
    "companyDomains": {
      "default": [],
      "description": "Company website domains, e.g. stripe.com or notion.so. The resolver follows LinkedIn's page website to pick the correct same-name company.",
      "editor": "stringList",
      "prefill": [
        "stripe.com"
      ],
      "title": "Company domains",
      "type": "array"
    },
    "companyNames": {
      "default": [],
      "description": "Company display names, e.g. Stripe or Microsoft. Name-only input is validated; ambiguous bare names (Notion, Linear, Cal) return an error row asking for a URL or domain.",
      "editor": "stringList",
      "prefill": [],
      "title": "Company names",
      "type": "array"
    },
    "companyUrls": {
      "default": [],
      "description": "LinkedIn company page URLs. Accepts https://www.linkedin.com/company/stripe/, linkedin.com/company/stripe, or company/stripe.",
      "editor": "stringList",
      "prefill": [],
      "title": "Company LinkedIn URLs",
      "type": "array"
    },
    "connectionDegree": {
      "default": "",
      "description": "Roster filter: restrict to 1st, 2nd, or 3rd+ degree connections. Cookie roster only.",
      "enum": [
        "",
        "F",
        "S",
        "O"
      ],
      "enumTitles": [
        "All connections",
        "1st degree only",
        "2nd degree only",
        "3rd degree+"
      ],
      "prefill": "",
      "title": "Connection degree",
      "type": "string"
    },
    "cookies": {
      "description": "Optional LinkedIn session cookie for the employee roster. Accepts the li_at value or a full cookies JSON array. Never required for headcount/firmographics.",
      "editor": "textarea",
      "isSecret": true,
      "title": "LinkedIn cookie (optional)",
      "type": "string"
    },
    "functions": {
      "default": [],
      "description": "Roster filter: one or more LinkedIn job functions. Empty means all functions. Cookie roster only. Allowed values: Engineering, Sales, Marketing, Operations, Finance, Human Resources, Design, Product, Customer Service, Information Technology, Legal, Other.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Job functions",
      "type": "array"
    },
    "includeEmployees": {
      "default": false,
      "description": "When true, also request the employee roster. Requires a valid LinkedIn session cookie and is capped by LinkedIn at 2,500 visible results per query.",
      "prefill": false,
      "title": "Include employee roster",
      "type": "boolean"
    },
    "language": {
      "default": "",
      "description": "Roster filter: primary profile language. Cookie roster only.",
      "enum": [
        "",
        "en",
        "es",
        "fr",
        "de",
        "pt",
        "it",
        "nl",
        "zh",
        "ja"
      ],
      "enumTitles": [
        "Any language",
        "English",
        "Spanish",
        "French",
        "German",
        "Portuguese",
        "Italian",
        "Dutch",
        "Chinese",
        "Japanese"
      ],
      "prefill": "",
      "title": "Profile language",
      "type": "string"
    },
    "location": {
      "description": "Roster filter: best-effort location match on the employee's LinkedIn location, e.g. London. Cookie roster only.",
      "editor": "textfield",
      "prefill": "",
      "title": "Location",
      "type": "string"
    },
    "maxEmployees": {
      "default": 100,
      "description": "Roster cap per company (1-2500). Ignored when includeEmployees is false. Large companies are sampled.",
      "maximum": 2500,
      "minimum": 1,
      "prefill": 100,
      "title": "Max employees per company",
      "type": "integer"
    },
    "maxItemsTotal": {
      "default": 500,
      "description": "Hard cap across company summaries, employee rows, and error rows (1-10000).",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 1,
      "title": "Max dataset items",
      "type": "integer"
    },
    "proxyConfiguration": {
      "description": "Optional advanced override. The actor works without a proxy and chooses a working connection automatically.",
      "editor": "proxy",
      "title": "Proxy configuration",
      "type": "object"
    },
    "seniorityLevels": {
      "default": [],
      "description": "Roster filter: one or more LinkedIn seniority levels. Empty means all levels. Cookie roster only. Allowed values: Entry, Associate, Mid-Senior, Director, Executive.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [],
      "title": "Seniority levels",
      "type": "array"
    },
    "startPage": {
      "default": 1,
      "description": "Resume the roster from this page (1-250, 10 employees per page). Use it to continue a capped run.",
      "maximum": 250,
      "minimum": 1,
      "prefill": 1,
      "title": "Roster start page",
      "type": "integer"
    },
    "titleKeywords": {
      "description": "Roster filter: free-text role or headline match, e.g. Software Engineer or VP Sales. Cookie roster only.",
      "editor": "textfield",
      "prefill": "",
      "title": "Title / headline keywords",
      "type": "string"
    }
  },
  "schemaVersion": 1,
  "title": "LinkedIn Company Headcount & Team Directory Scraper Input",
  "type": "object"
}
