LinkedIn company scraper and API: company data as JSON, no login
Company size, the number of employees on LinkedIn, followers, industry, headquarters and every office are on the public company page of almost every business, and LinkedIn offers no open API to read them for a list of companies. This page shows how to get them as a table from page URLs, company names, websites or a keyword search with filters, what each field means, and where the public page stops.
What LinkedIn offers, and what it does not
| Route | What you get |
|---|---|
| Official APIs (partner programs) | Organization data for approved apps, mostly about pages you administer. No lookup of arbitrary companies, no bulk export. |
| Company search on the website | Filters by location, industry and size, but results and filters need a login, and there is no export. |
| Public company pages | Name, tagline, description, website, industry, company type, size band, employees on LinkedIn, followers, founded year, specialties, headquarters and office addresses, logo, recent posts, similar pages, and the number of open jobs. Visible without an account. This is what the scraper reads. |
The scraper
The LinkedIn Company Scraper on Apify returns one record per company, with the field names the most used LinkedIn company Actors use, so an existing integration switches by changing the Actor name. Four ways in, mixed freely in one run:
- Company pages:
linkedin.com/company/stripe, showcase pages, subpages like/about, country addresses, Sales Navigator company links, the page name alone or a numeric company ID. - Company names:
Revolut,Česká spořitelna. The company with exactly that name wins, the most followed one when several share it. - Websites:
stripe.com,notion.so. Each website leads to the company's own LinkedIn page, including brands that list a campaign or careers link there instead of their domain and brands renamed since (the old domain redirects to the new one). - Keyword search with filters:
digital marketing agencyinLondon, UKwith 11-50 employees, by industry name or LinkedIn industry ID. Only companies that pass every filter are saved and charged.
Per company: name, universalName, linkedinUrl, id, tagline, description, website, industries, companyType, companySize, employeeCount, employeeCountRange, followerCount, foundedOn, specialities, headquarter and locations with country and state names, logo, backgroundCover, jobSearchUrl, openJobCount (the jobs the company lists on LinkedIn worldwide at the time of the run, with openJobCountText for figures LinkedIn rounds, such as 2,000+), similarOrganizations, affiliatedOrganizations and the recent posts with date, text, reactions, comments, images and shared posts.
Calling it from code
curl -X POST "https://api.apify.com/v2/acts/alfalfa~linkedin-company-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"searches":["stripe.com","hubspot.com","Revolut"],"includePosts":false}'
Fifteen websites come back in under half a minute. For longer lists start the run asynchronously and read the dataset when it finishes; schedules, webhooks and the n8n, Make and Zapier nodes work as for any Apify Actor. The API overview shows the pattern.
Things to know before you trust the numbers
- Two different sizes.
companySizeis the band the company picked (51-200 employees);employeeCountis how many LinkedIn members list the company as their employer. They often differ, in both directions. - Posts are the recent ones. A public page shows the latest posts, usually up to ten. For a longer history, run on a schedule and keep the new ones.
- Login-only data is not there. Employee lists, funding rounds and phone numbers are shown only to signed-in members, and the scraper collects no data about individual people: a post shared from a personal profile keeps its text but not the person's name.
- A website is not always the company's own. Big brands often list a campaign, careers or short link on LinkedIn, and acquired firms or communities list their parent's domain. The scraper prefers the main page of the brand and reports a website it cannot tie to a page as not found.
- Open jobs are a worldwide count.
openJobCountis what LinkedIn lists for the company across all countries at the time of the run; above 1,000 LinkedIn rounds down and shows a plus, kept inopenJobCountText. A hiring signal, not a payroll figure. - Narrow filters return fewer companies. A niche keyword in one small city may have only a handful of matching companies; the search stops when hardly any of the pages it checks pass the filters. Broader filters or other words find more.
Uses that pay for themselves
- CRM enrichment. Paste the websites or company names from your CRM and add industry, size band, employee count, headquarters and the LinkedIn URL to every account.
- Lead lists. A keyword plus a city and a size band gives a table of companies with websites and addresses, ready for outreach tools.
- Competitor tracking. A weekly run over rival pages records follower growth, employee count, open jobs and what they post.
- Hiring signals. Sort a list of accounts by
openJobCount: a company opening dozens of roles is growing, buying tools and worth a call this month. - Market maps. The similar pages LinkedIn shows for each company are a quick way to find lookalikes; feed them back in for their details.
Questions people ask
Is this allowed?
Company pages are published to be found and are visible to anyone without an account. Reading public pages without logging in is the position US courts took in the hiQ v. LinkedIn cases. Use the data responsibly: company records are not personal data, but anything you add about people is covered by GDPR.
Why is it cheaper than other LinkedIn company scrapers?
A company page is a few dozen kilobytes and no account has to be kept alive, so the cost per thousand companies is cents. $1 per 1,000 on the free plan and $0.70 on the Business plan, posts included, no start fee; companies from a filtered search cost $1 per 1,000 more, because most pages a narrow filter checks do not pass it.
Does it include open jobs?
Yes. openJobCount gives the number of jobs the company lists on LinkedIn worldwide at the time of the run, at no extra charge; switch Include open jobs count off for a faster run. For the jobs themselves use the LinkedIn jobs scraper.
How do I get more than a few hundred companies from a search?
Split the search: one line per city, per industry or per wording. Every line runs as its own search and a company found twice is saved once.
Open the LinkedIn Company Scraper Read: LinkedIn jobs scraper