Piotr VassevPiotr Vassev

How to Scrape LinkedIn Company Data for Account Research

When enriching a company list, the first task is matching the right organization. The second is understanding what each number means. A LinkedIn size band, an associated-member count, and a hiring count describe different things.

The LinkedIn Company Scraper accepts company names, slugs, or profile URLs and returns public company information, LinkedIn job counts, and related pages. I maintain this Apify Actor. You do not need LinkedIn cookies or an account for its documented workflow.

LinkedIn company profile research

Prefer known profile URLs for matching

Names are resolved through LinkedIn company search. A name shared by several organizations can therefore need review. If you already know the correct profile, provide its URL or exact slug instead. The input also documents support for showcase pages, which should be distinguished from standalone companies in your account list.

Open the Actor on Apify, switch Input to JSON, and enter this three-company example:

{
  "companies": [
    "https://www.linkedin.com/company/stripe",
    "https://www.linkedin.com/company/notionhq",
    "https://www.linkedin.com/company/vercel"
  ],
  "maxItems": 3,
  "proxyConfiguration": {"useApifyProxy": false}
}

Click Start and inspect the completed dataset. maxItems limits companies across the run; its default is 100 and its minimum is one. Inputs beyond the cap are reported in the log, so compare the returned count with the list you intended to enrich.

Review companyName, companyWebsite, companyHeadquarters, and companyUrl before importing results into a CRM. The Actor normalizes LinkedIn profile URLs, but a normalized URL cannot correct a company you selected incorrectly.

Keep the three size fields separate

The historical Vercel example in the README contains:

{
  "companySlug": "vercel",
  "companyId": "16181286",
  "companySize": "501-1,000 employees",
  "companyEmployeeCount": 1000,
  "companyEmployeesOnLinkedIn": 1012,
  "openRoles": 113,
  "openRolesIsLowerBound": false
}

These are documentation values from an earlier observation, not current company metrics. companyEmployeeCount is simply the upper bound of the size band. It is not an exact payroll figure. companyEmployeesOnLinkedIn counts associated member profiles, which can differ from both payroll headcount and the self-reported band.

For account segmentation, retain the original companySize and use the band consistently. If you use associated-member counts as a separate research signal, label them accordingly. Do not describe a difference between 1,000 and 1,012 as twelve newly hired employees.

Other firmographic fields include companyIndustry, companyType, companyFounded, companySpecialties, companyDescription, and companyFollowers. A follower count measures an audience signal, not customers or employees. Missing website or logo values remain null rather than being filled with guessed values.

Historical LinkedIn company output

Interpret hiring counts with their source

openRoles is the returned worldwide LinkedIn job count for the company. companyJobsUrl links to that search. If openRolesIsLowerBound is true, treat the number as a minimum because LinkedIn supplied a threshold such as “1,000+.”

A null count means it could not be read. A zero is different, but still describes LinkedIn's returned count, not every vacancy the company may advertise elsewhere. Neither a large count nor an increase proves net workforce growth: listings can span locations, remain open for long periods, or change independently of hiring outcomes.

For a worksheet, keep openRoles, openRolesIsLowerBound, companyJobsUrl, and scrapedAt together. Separate exact displayed counts, lower bounds, and unknowns before sorting accounts. Do not replace unknowns with zero.

Merge the export into an account review sheet

Export CSV for flat company fields and JSON if you need similarPages or affiliatedPages. Join verified profiles to your existing account IDs using the canonical URL or company ID, retaining the input company name for audit.

Create a match-status column and review ambiguous names before applying updates. Store profile descriptions and specialties as source claims, not independently verified capabilities. For refreshes, keep the prior value and collection time so a reviewer can see what changed.

If you are selecting software accounts of a certain size, filter by companyIndustry and companySize, then inspect the descriptions. Add hiring activity as context, with its count status visible. This produces an explainable shortlist without collapsing unrelated metrics into a supposed company-growth score.

similarPages can suggest additional accounts to research. affiliatedPages can point to subsidiaries or product pages. Put these in a discovery queue and verify the relationship before adding them to a parent-company hierarchy; LinkedIn page links are not proof of legal ownership.

Check unresolved companies and cost

The log and key-value store's RUN_SUMMARY report companies that could not be found or read. Review those records before declaring your input list fully enriched. A wrong slug or an access interstitial can both produce missing output. The documentation says a run fails if every company fails to resolve.

Prices as of September 6, 2026 are $0.004 per profile on FREE, $0.0035 on BRONZE, $0.003 on SILVER, and $0.002 on GOLD, PLATINUM, or DIAMOND. Three successful FREE-tier profiles cost $0.012 in profile events. The event table also lists a start charge of $0.00005 per GB of allocated memory, minimum one event, despite older descriptive text saying there is no start fee.

A price change is scheduled for September 10. Consult live pricing and separately billed usage before scheduling. Failed companies do not produce profile-result fees; that does not remove the run-start charge.

The LinkedIn company Node.js example supports programmatic exports. For the actual job rows behind a count, use the Company Jobs Scraper. The Jobs Search Scraper, Jobs Monitor, and Job Details Scraper address separate hiring-research steps.

Frequently asked questions

Is companyEmployeesOnLinkedIn an audited employee headcount?

No. It is LinkedIn’s count of member profiles associated with the company. It can differ from payroll headcount and from the company’s self-reported size band.

What does companyEmployeeCount mean?

It is the numeric upper bound parsed from companySize. A value of 1000 for a 501–1,000 band is not a claim that the company employs exactly 1000 people.

What does a zero openRoles value establish?

It indicates a zero count returned for the company’s LinkedIn job search at collection time. It does not prove the company has no vacancies on its own career site or other channels.

Piotr Vassev

Piotr Vassev

Founder of FalconScrape. Building production-grade web scraping systems and data automation pipelines for businesses worldwide.

Connect on LinkedIn