LinkedIn Companies Scraper - Company Pages, No Login
Pricing
from $0.87 / 1,000 public company profiles
LinkedIn Companies Scraper - Company Pages, No Login
Scrape public LinkedIn company pages from their URLs, with no login or cookies. Each row holds the company name, About text, follower count, employee count, headquarters address, website and logo. $0.90 per 1,000 companies.
Pricing
from $0.87 / 1,000 public company profiles
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Paste LinkedIn company page URLs and get back what each public page publishes: the company name, the About text, follower count, employee count, the headquarters address broken into parts, the website it links to and the logo. No account, no cookie, nothing to paste in.
The fields are the ones a signed-out visitor can see, and no more: no industry, no specialties and no
employee directory on the row. And website is the first link the page lists, which is not always
the company's main domain.
| Input | Public /company/ URLs |
| Output | One row per company: name, About text, followers, employee count, headquarters address, website, logo |
| Ceiling | 100 companies per run |
| Account needed | None |
| Price | $0.90 per 1,000 companies on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 5,500 |
🔍 What LinkedIn Companies Scraper does
You bring the company URLs. This fills in the page behind each one, one row per URL. The follower count is read off the page's own line, the one that reads "N followers on LinkedIn".
The company described on the page has to match the slug you asked for before a row is written. That check is there because company URLs get renamed, and without it you would get the new company's numbers filed under the old name.
A field the page does not publish comes back null. Nothing is filled in from elsewhere.
📋 What data you get from each LinkedIn company page
| What you get | Field |
|---|---|
| The company page link and its slug | companyUrl, companySlug |
| Company name | name |
| The About text | description |
| Followers on LinkedIn | followerCount |
| LinkedIn's employee figure | employeeCount |
| Headquarters, as one line and split into parts | headquarters, address |
| The first outbound link the page lists | website |
| The logo | logoUrl |
| When the row was read | retrievedAt |
▶️ How to scrape LinkedIn company pages
- Open LinkedIn Companies Scraper and click Try for free.
- Paste your URLs into Public LinkedIn company URLs, one per line.
- Set Maximum companies to at least the number of URLs you pasted.
- Click Start.
- Download the dataset as JSON, CSV or Excel, or read it from the Apify API.
Run it with nothing in the input and you get one labelled sample row, free.
💰 How much does it cost to scrape LinkedIn company pages?
$0.90 per 1,000 companies on the Free plan. Paid plans pay a little less: $0.89 on Starter, $0.88 on Scale and $0.87 on Business. On the free plan, the $5 Apify gives you each month covers about 5,500 companies.
One charge per company row. Sample rows and diagnostic rows are never charged, and a duplicate URL is billed once because it is only fetched once. A page that publishes no follower or employee count still counts as a company row and is still charged: you paid for the lookup, and the answer is that the page does not say.
📥 What you give it
{"companyUrls": ["https://www.linkedin.com/company/microsoft/","https://www.linkedin.com/company/apify/"],"maxCompanies": 10}
| Field | Default | What it is |
|---|---|---|
companyUrls | none | Up to 100 public /company/ URLs. Country addresses like ca.linkedin.com are normalised to www, and a URL you list twice is fetched once. The form opens with one example filled in. |
maxCompanies | 10 | 1 to 100. How many of those URLs the run actually fetches. |
requestTimeoutSecs | 20 | 5 to 60 seconds. How long to wait for one page. |
Set maxCompanies to match your list. It starts at 10. Paste 50 URLs and leave it and you get 10
rows and nothing for the other 40, not even a row saying they were skipped.
A long list needs a longer run. Pages are fetched one at a time and the run ends at the timeout on the actor's Settings tab, 180 seconds unless you raise it. A hundred URLs at a 60-second page timeout can outlast that.
📤 What you get back
A real row from a real run, with one internal field left out. The About text and the logo link are
long, so they are cut short with ...:
{"ok": true,"_sample": false,"sourceType": "public_company_profile","companyUrl": "https://www.linkedin.com/company/microsoft","companySlug": "microsoft","name": "Microsoft","description": "Every company has a mission. What's ours? ...","followerCount": 29087688,"employeeCount": 232078,"headquarters": "1 Microsoft Way, Redmond, Washington, 98052, US","address": {"type": "PostalAddress","streetAddress": "1 Microsoft Way","addressLocality": "Redmond","addressRegion": "Washington","postalCode": "98052","addressCountry": "US"},"website": "https://news.microsoft.com/","logoUrl": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_200_200/...","retrievedAt": "2026-09-14T05:45:25.226Z"}
| Field | How to read it |
|---|---|
companySlug | The key to join on across runs. |
followerCount | A number, or null when the page does not state one. |
employeeCount | LinkedIn's own figure for staff with a profile, not a headcount from an annual report. null when the page does not publish it. |
website | Note the row above: Microsoft's first link is its newsroom, not microsoft.com. Treat it as "a site this company links to", not "the corporate domain". |
🧾 Reading the output
Three kinds of row, and only real company rows cost anything.
| Row | How to spot it | Billed |
|---|---|---|
| A company | sourceType: "public_company_profile" | yes |
| The sample row | _sample: true, only on an empty input | no |
| A diagnostic | ok: false and _diagnostic: true | no |
There is no charged field on these rows. sourceType is what separates a real company row from a
sample or a diagnostic, so filter on it.
| Code | What it means |
|---|---|
BAD_INPUT | Not a /company/ slug URL. Numeric company ids, showcase pages and school pages are refused here. Nothing was requested for it. |
NO_RESULTS | The page came back without the company details, or they described a different company. A renamed company whose old URL now redirects lands here. |
NOT_SERVED | This company was not served this run. Re-run it later. Until 12 October 2026 this code was called BLOCKED. |
RATE_LIMITED | LinkedIn limited the run. Try again later. |
SERVER_ERROR | LinkedIn returned an error of its own. |
NETWORK | The page did not arrive inside requestTimeoutSecs, or LinkedIn answered with something unusable. A company URL that no longer exists at all shows up here rather than under a "not found" code. |
A sample or diagnostic row never fails the run.
💡 What people use it for
- Putting size and location against a list of target accounts before a sales push.
- Checking whether the companies in an old list still have a live page, and under which slug.
- Pulling About text for a partner directory or a pitch deck.
- Watching follower and employee counts move over time by re-running the same list on a schedule.
From a list of accounts to the ones worth calling, in two steps:
- Run this actor on your list and keep the companies whose
employeeCountandheadquartersfit. - Put their
companyUrlvalues into LinkedIn Company Posts Scraper to see what each one has announced lately.
🚧 What it does not do
- No employee list. Company pages do not publish one.
- No posts, jobs, funding, revenue, industry or specialties on the row.
- No lookup by name or domain. You bring the URLs.
- Slug URLs only. A numeric
/company/12345/URL, a showcase page or a school page is refused asBAD_INPUT. - A renamed company reads as
NO_RESULTS, because the page that answers is about a different slug than the one you asked for. Look the company up again and use the new URL. - URLs past
maxCompaniesget no row at all. They are dropped, silently. - No retries. A URL that fails, fails for that run.
- It is not an official LinkedIn tool. Dami's Studio is independent and is not affiliated with or endorsed by LinkedIn, or by any other company named on this page.
🧭 Which LinkedIn scraper do you need?
| If you want | Use |
|---|---|
| Size, followers, headquarters and website for company page URLs | This one |
| Recent posts from a company page | LinkedIn Company Posts Scraper |
| Job postings by keyword and location | LinkedIn Jobs Scraper |
| The ads a company runs, from LinkedIn's Ad Library | LinkedIn Ads Scraper |
❓ Questions people ask
Do I need a LinkedIn account to scrape company pages?
No, and there is no cookie field. Nothing to paste, nothing to renew.
Is employeeCount the real headcount?
It is LinkedIn's count of people who list that company on their profile. Close to headcount for most firms, wrong for some, and never an audited figure.
Why is website not the company's main domain?
Because the page lists it that way. It is the first link the page publishes, which is sometimes a newsroom or a careers site.
Why do the numbers differ from what I see on LinkedIn?
LinkedIn rounds big counts on the page ("29M followers") and the row does not. Counts also move day to day. If a field is missing, open the page in a private browser window: what a signed-out visitor sees there is what this actor reads.
Can I call it from code or connect it to an AI assistant?
Yes. The API tab has
ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP
client, connect
https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-companies-scraper. Either way
the run happens on your Apify account at the same price.
Is scraping LinkedIn legal?
This reads public company pages only, never anything behind a login. Apify's write-up on the legality of web scraping is a reasonable starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the run ID and one of the URLs that went wrong. The
errorCode on the diagnostic row usually explains it on its own.