LinkedIn Company Scraper - Profile, Posts & Competitors
Pricing
from $3.00 / 1,000 results
LinkedIn Company Scraper - Profile, Posts & Competitors
LinkedIn company scraper tool that turns one company URL into firmographics, recent posts with engagement, visible people, and the 10 most similar companies. No cookies.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Thodor
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
A LinkedIn company scraper tool that turns one company URL into a full company record. Paste linkedin.com/company/vercel, get back the firmographics, the last posts with engagement, the people visible on the page, and the ten companies LinkedIn considers most similar. Load it into a spreadsheet as CSV or Excel, or pull JSON over the API. No login, no cookies, no LinkedIn account.
Most company scrapers stop at the About block. This one also reads what the page is doing: posts with reaction and comment counts, the exact employee count behind the displayed bracket, and LinkedIn's own answer to "who competes with this company". Watching a company's job openings instead? The LinkedIn Company Jobs Scraper takes the same URL and returns every opening.
๐ How to export LinkedIn company data to a spreadsheet
- Paste your companies into Company URLs. Three formats work:
- A) Company page URL:
https://www.linkedin.com/company/vercel - B) Country subdomain:
https://be.linkedin.com/company/vercel - C) Bare slug:
vercel
- A) Company page URL:
- Click Start.
- Open the Output tab and click Export for CSV, Excel, JSON, or HTML.
Enriching a whole list? The Bulk edit tab on the URL field takes one entry per line, so a spreadsheet column pastes straight in.
๐ So what do you get?
| ๐ข Firmographics: industry, size, founded, HQ | ๐ฅ Exact employee count, not the bracket | ๐ฃ Last 10 posts with engagement |
|---|---|---|
| ๐ฅ The 10 most similar companies | ๐งโ๐ผ Visible people, with profile URLs | ๐ Exact follower count |
| ๐งฉ Affiliated sub-brand pages | ๐ Paid-page flag | ๐ Website and specialties |
| ๐ Parsed postal address | ๐ Stable organization URN | โ ๏ธ Per-company error flag |
โ๏ธ Compared to typical company scrapers
| Typical scrapers | This actor | |
|---|---|---|
| ๐ฅ Headcount | โ ๏ธ The displayed bracket | โ
Exact: Vercel shows 501-1,000, the real number is 1,006 |
| ๐ฃ Posts | โ Not included | โ Last 10, with reactions and comments |
| ๐ฅ Competitors | โ | โ LinkedIn's own 10 similar companies |
| ๐งฉ Sub-brands | โ | โ Affiliated and showcase pages |
| ๐ Your LinkedIn account | โ ๏ธ Cookie scrapers put it at risk | โ Never used, nothing to ban |
On Vercel, similar_pages comes back as Supabase, Lovable, Replit, Netlify, Cursor, Anthropic, GitLab, Stripe, Zapier, and Notion, and affiliated_pages as v0 by Vercel, Next.js, AI SDK, and Turborepo: the competitor set and the product portfolio, kept separate.
๐ฏ Three things people run this for
| How | |
|---|---|
| ๐งพ Enrich a lead list in one pass | Feed a column of LinkedIn URLs, get industry, size, founded, HQ, website, and follower count per row, ready for a CRM |
| ๐ฅ Map a market | similar_pages is LinkedIn's own read of who competes with whom, derived from member browsing. Diff it across weekly runs and you watch a market re-classify itself |
| ๐ Track messaging and growth | Weekly run on a Schedule: followers, headcount, and post engagement become trend lines. Vercel's acquisition post pulled 952 reactions against a 90 to 420 baseline |
๐ฅ Input
{"start_urls": [{ "url": "https://www.linkedin.com/company/vercel" },{ "url": "https://www.linkedin.com/company/supabase" }]}
start_urls: LinkedIn company pages as{ "url": "..." }objects. Country subdomains and bare slugs work too
That is the whole input.
๐ค Output
One dataset row per company. Everything in a record comes from a single page fetch.

{"input_url": "https://www.linkedin.com/company/vercel","slug": "vercel","urn": "urn:li:organization:16181286","name": "Vercel","headline": "Software Development","followers": 248188,"employee_count": 1006,"size": "501-1,000 employees","website": "https://vercel.com","industry": "Software Development","headquarters": "San Francisco, California","type": "Privately Held","founded": "2015","specialties": "Next.js, Developer Velocity, Open Source, Developer Experience, React, and Web Development","address": { "street": null, "locality": "San Francisco", "postal_code": "94133", "country": "US" },"people": [{ "name": "Bereket Engida", "profile_url": "https://www.linkedin.com/in/bekacru", "primary_source": "feed_post_body" }],"posts": [{"url": "https://www.linkedin.com/posts/vercel_vercel-acquires-better-auth-...","text": "Better Auth is joining Vercel.","published": "2026-07-07T16:27:04.177Z","reactions": 952,"comments": 25}],"similar_pages": [{ "name": "Supabase", "url": "https://www.linkedin.com/company/supabase", "industry": "IT Services and IT Consulting" }]// HIDDEN: description, is_paid_organization, affiliated_pages, reaction_types,// scraped_at, error. Real runs return up to 10 posts, the full people list,// and all 10 similar companies.}
โ ๏ธ
peopleis a starting point, not a roster. LinkedIn shows guests a handful of employees and redacts most names as "LinkedIn Member". Only people with a real name and profile URL are kept, employees plus anyone tagged in a recent post; on Vercel that was 8. A full employee list needs a dedicated employees scraper.
Fields
| Field | Notes |
|---|---|
name, headline, description, website | The basics, present on essentially every public company page |
industry, size, founded, type, specialties | LinkedIn's own About block. size is the displayed bracket, like 501-1,000 employees |
employee_count | Exact headcount, which often falls outside the displayed bracket: Vercel 1,006 against 501-1,000, PostHog 211 against 51-200 |
followers | Exact count. A growth metric when you run on a schedule |
is_paid_organization | true when the company pays LinkedIn for a premium page. A budget signal when qualifying accounts |
headquarters, address | City string plus a parsed {street, locality, postal_code, country} object |
urn | LinkedIn's stable numeric organization ID. Use it as a join key across runs and actors |
posts | Up to the last 10 posts with text, publish date, reactions, comments, reaction_types, image, and anyone tagged in the body |
reaction_types | Which reactions a post drew (LIKE, PRAISE, EMPATHY, INTEREST). Separates a celebrated win from a sympathetic one |
people | Named people visible on the page, each with a profile URL and a sources list saying where they were seen |
similar_pages | The 10 companies LinkedIn shows as similar. Competitors, chosen by how members actually browse |
affiliated_pages | The company's own sub-brands and showcase pages. The product portfolio, not the competitor set |
error | Set to scrape_failed on a company that could not be fetched, so a bad URL never silently disappears |
โ๏ธ Use it as a LinkedIn company API
Every run is an HTTP endpoint: POST the same JSON as the form and the records come back in the response body.
Python
import requestsresp = requests.post("https://api.apify.com/v2/acts/thodor~linkedin-company-scraper/run-sync-get-dataset-items",params={"token": "YOUR_APIFY_TOKEN"},json={"start_urls": [{"url": "https://www.linkedin.com/company/vercel"}]},)for company in resp.json():print(company["name"], company["employee_count"], company["followers"])
Node.js
import axios from "axios";const { data } = await axios.post("https://api.apify.com/v2/acts/thodor~linkedin-company-scraper/run-sync-get-dataset-items",{ start_urls: [{ url: "https://www.linkedin.com/company/vercel" }] },{ params: { token: process.env.APIFY_TOKEN } });console.log(data[0].name, data[0].employee_count, data[0].similar_pages.length);
curl
curl -X POST "https://api.apify.com/v2/acts/thodor~linkedin-company-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"start_urls":[{"url":"https://www.linkedin.com/company/vercel"}]}'
Swap run-sync-get-dataset-items for runs to fire async and collect results by webhook; a long account list can outlive the 5-minute sync window. The apify-client SDK works too, in Python and JavaScript, and the Clay, n8n, Make, Zapier, and Google Sheets integrations take the same input.
๐ก Tip: no need to write the JSON by hand. Fill in the form on the Input tab, switch the editor from Form to JSON, and copy the result into your code.
๐ฐ How much does it cost to scrape LinkedIn company pages?
Billing is per company record, at the per-1,000 rate on the price card on this page. Everything in a record, the posts, the people, the similar companies, comes from a single page fetch, so there are no per-section add-ons. A failed company is not billed.
โ FAQ
Do I need a LinkedIn account or cookies? No.
Can I scrape LinkedIn company pages for free? Yes. Registering on Apify comes with $5 of free platform credit every month, no credit card needed, which covers over a thousand companies here.
Can I look up a company by name or domain? Not here, it needs the LinkedIn URL or slug. A company-search or URL-finder actor is the right tool for turning names or domains into LinkedIn URLs first.
Does it include funding, revenue, or investor data? No. Those are not on the public LinkedIn company page. Crunchbase-style enrichment is a different product.
How do I get the company's job openings too?
The urn in every record is the organization ID, and the LinkedIn Company Jobs Scraper takes the same company URL, so enrichment and hiring data join cleanly.
Why is followers sometimes surprising?
It is read from the company's own header or its own post cards. Reposts from other accounts display those accounts' follower counts, and the actor deliberately ignores those.
What language is the data in?
Pages are always requested in English, so labels like Software Development are consistent across countries. The description is whatever the company wrote, so a Belgian company's About may be in Dutch.
What happens when LinkedIn blocks a request? The actor retries through a US proxy on a fresh IP, up to 5 times. If 15 requests fail back to back, the run stops with an explanation instead of grinding on, and every company scraped before the stop stays in the dataset.
Is this legal?
Company firmographics are public, deliberately published information and not personal data. The people field does contain names and profile URLs, so if you store it, GDPR and similar rules apply to you as the data controller.
๐ Support
Missing a field, or a page that parses badly? Message me in the Issues tab with the company URL and I'll look into it quickly. I'm a solo dev, so don't hesitate.
Tracking who these companies are hiring? The LinkedIn Company Jobs Scraper takes the same URLs and returns every open position.
- Thodor