LinkedIn Company Scraper - Profile, Posts & Competitors avatar

LinkedIn Company Scraper - Profile, Posts & Competitors

Pricing

from $3.00 / 1,000 results

Go to Apify Store
LinkedIn Company Scraper - Profile, Posts & Competitors

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

Thodor

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

14 days ago

Last modified

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

  1. 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
  2. Click Start.
  3. 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 scrapersThis 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 passFeed a column of LinkedIn URLs, get industry, size, founded, HQ, website, and follower count per row, ready for a CRM
๐ŸฅŠ Map a marketsimilar_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 growthWeekly 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.

LinkedIn Company Scraper output showing company name, industry, size, headquarters, follower count, exact employee count and website for each scraped LinkedIn company

{
"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.
}

โš ๏ธ people is 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

FieldNotes
name, headline, description, websiteThe basics, present on essentially every public company page
industry, size, founded, type, specialtiesLinkedIn's own About block. size is the displayed bracket, like 501-1,000 employees
employee_countExact headcount, which often falls outside the displayed bracket: Vercel 1,006 against 501-1,000, PostHog 211 against 51-200
followersExact count. A growth metric when you run on a schedule
is_paid_organizationtrue when the company pays LinkedIn for a premium page. A budget signal when qualifying accounts
headquarters, addressCity string plus a parsed {street, locality, postal_code, country} object
urnLinkedIn's stable numeric organization ID. Use it as a join key across runs and actors
postsUp to the last 10 posts with text, publish date, reactions, comments, reaction_types, image, and anyone tagged in the body
reaction_typesWhich reactions a post drew (LIKE, PRAISE, EMPATHY, INTEREST). Separates a celebrated win from a sympathetic one
peopleNamed people visible on the page, each with a profile URL and a sources list saying where they were seen
similar_pagesThe 10 companies LinkedIn shows as similar. Competitors, chosen by how members actually browse
affiliated_pagesThe company's own sub-brands and showcase pages. The product portfolio, not the competitor set
errorSet 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 requests
resp = 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