{
  "openapi": "3.0.1",
  "info": {
    "title": "LinkedIn Company Employees Scraper & Email Finder — No Login",
    "description": "Find a company's employees on LinkedIn without login. Pass company names or URLs, filter by title and seniority, and get name, current title, employer, location and profile URL, plus an optional email finder. Each row is verified against your company and graded high, medium or low, with the reason.",
    "version": "0.0",
    "x-build-id": "fuR5dm3Ux5k689fBJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~linkedin-company-employees-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-linkedin-company-employees-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/memo23~linkedin-company-employees-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-linkedin-company-employees-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/memo23~linkedin-company-employees-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-linkedin-company-employees-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": {
          "companies": {
            "title": "Companies (names or LinkedIn URLs)",
            "type": "array",
            "description": "One company per line — a plain name (e.g. \"OpenAI\") or a LinkedIn company URL (e.g. https://www.linkedin.com/company/openai/). Names and URLs can be mixed.",
            "items": {
              "type": "string"
            }
          },
          "companySearchTerms": {
            "title": "Search a different phrase for a company",
            "type": "object",
            "description": "<p><b>Optional — leave empty unless a run told you to use it.</b> Changes the phrase searched for ONE company, without changing how that company is identified in your results.</p><p>A LinkedIn URL carries a <b>handle</b>, not always the company name: <code>linkedin.com/company/notionhq/</code> searches for <code>notionhq</code>, which returned 2 profiles where <code>Notion</code> returned 20.</p><p><b>Key</b> — the company exactly as you supplied it above: its handle (<code>notionhq</code>), its full LinkedIn URL, the name you typed, or a numeric id such as <code>105621</code>. <b>Value</b> — the phrase to search instead. Example: <code>{ \"notionhq\": \"Notion\", \"105621\": \"Anthropic\" }</code>. Quotes are added for you.</p><p>Your output does not move: the <code>company</code> field on every row, de-duplication and the per-company limit all keep using the key you supplied. Note the phrase is also what each result is verified against, and what appears in <code>currentEmployer</code> when the employer could not be read from the result — so a wrong phrase lets the wrong company's people through. The optional email finder still looks the company up by your key, not by this phrase. Ignored when you supply cookies.</p>"
          },
          "targetTitles": {
            "title": "Target titles (ICP)",
            "type": "array",
            "description": "Job titles to target, one per line (e.g. CEO, Head of Sales, Gerente General). Leave empty to use a built-in English/Spanish decision-maker set (CEO, CTO, Founder, Owner, Director, Presidente, Dueño…). A seniority filter alone replaces the built-in set. For runs of more than 50 companies the built-in set is skipped unless you set titles here or a seniority filter.",
            "items": {
              "type": "string"
            }
          },
          "seniorityFilter": {
            "title": "Seniority level",
            "type": "array",
            "description": "Optional seniority buckets to expand into titles. Combined with Target titles. Unknown values are ignored.",
            "items": {
              "type": "string",
              "enum": [
                "owner",
                "partner",
                "cxo",
                "vp",
                "director",
                "manager",
                "senior",
                "entry",
                "training",
                "unpaid"
              ],
              "enumTitles": [
                "Owner",
                "Partner",
                "CxO (CEO/CTO/CFO…)",
                "VP",
                "Director",
                "Manager",
                "Senior",
                "Entry",
                "Training / Intern",
                "Unpaid / Volunteer"
              ]
            },
            "default": []
          },
          "location": {
            "title": "Location filter",
            "type": "string",
            "description": "Optional location hint added to discovery (e.g. \"San Francisco\", \"United States\", \"Germany\"). Improves relevance; leave empty for all locations."
          },
          "maxItems": {
            "title": "Max employees per company",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of employees to return per company. Keep this bounded to control cost and avoid over-broad results.",
            "default": 50
          },
          "verifyProfiles": {
            "title": "Verify profiles (confirm employer & title)",
            "type": "boolean",
            "description": "Recommended. Reads each row's current employer, title and location from its own public web result, grades the employer against your company (high / medium / low, with the reason) and withholds rows graded low. Off, the raw matches are returned, all tagged low. No extra requests and no login.",
            "default": true
          },
          "enrichEmails": {
            "title": "Find contact email (experimental)",
            "type": "boolean",
            "description": "If enabled, finds one contact email per company (from its website or by name discovery) and adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort.",
            "default": false
          },
          "deepVerify": {
            "title": "Deep verify (fetch each public profile page)",
            "type": "boolean",
            "description": "Advanced / best-effort. Also fetches each profile's public LinkedIn page and re-grades the row from it, by the same rules. LinkedIn heavily gates these pages, so this is slow, and a page that cannot be read leaves the row as the result graded it. Leave off unless you specifically need it.",
            "default": false
          },
          "googlePages": {
            "title": "Discovery pages per company × title",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many search result pages (20 results each) to fetch per company and target title. More pages = more candidates but higher cost. Default 3, max 10.",
            "default": 3
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum concurrent requests. Lower = gentler and steadier; higher = faster but more likely to hit rate limits.",
            "default": 10
          },
          "startUrls": {
            "title": "Start URLs (advanced — LinkedIn company URLs)",
            "type": "array",
            "description": "Optional. LinkedIn company URLs to include, in addition to (or instead of) Companies. Useful for request lists / Google Sheets sources.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "cookies": {
            "title": "Cookies (optional — enables authoritative mode)",
            "type": "array",
            "description": "<p><b>Optional.</b> Leave empty for cookie-free discovery mode (no login). <b>Provide cookies</b> for authoritative LinkedIn-API mode (full company roster + richer data). Install <a rel=\"noopener noreferrer nofollow\" target=\"_blank\" href=\"https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg\">EditThisCookie</a>, log into LinkedIn, export cookies, and paste them here. The minimum required are <code>li_at</code> and <code>JSESSIONID</code>. Cookie mode reads company URLs from <code>startUrls</code> only; <code>companies</code> and the search filters apply to the no-cookie path.</p>"
          },
          "sdoKey": {
            "title": "scrape.do token (optional override)",
            "type": "string",
            "description": "Advanced. Bring-your-own scrape.do token used to fetch search results and public profiles. Leave blank to use the built-in token."
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes traffic through its own residential proxy at no extra cost to you. Only set this to use your own proxies."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}