LinkedIn Company Scraper avatar

LinkedIn Company Scraper

Pricing

Pay per usage

Go to Apify Store
LinkedIn Company Scraper

LinkedIn Company Scraper

Scrape LinkedIn company data with the LinkedIn Company Scraper. Extract company names, industries, employee counts, locations, and descriptions. Ideal for market research, lead generation, and competitor analysis. Fast, accurate, and scalable for single or bulk company profiles.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

2

Bookmarked

41

Total users

8

Monthly active users

4 days ago

Last modified

Share

LinkedIn Company Scraper — Profiles, Posts and Similar Pages

LinkedIn Company Scraper extracts public company-profile data from any list of LinkedIn /company/ URLs — name, industry, size, headquarters, specialties, recent posts, employee preview, and similar pages. No login, no cookies, no Sales Navigator. Every response is structured JSON, ready to pass directly to an LLM, index into a vector store, or feed into a CRM enrichment pipeline. Point it at the companies you care about and get one clean, consistent row back per URL.

What is LinkedIn Company Scraper?

LinkedIn Company Scraper fetches the public, logged-out /company/<slug>/ page for every URL you supply, parses the page's embedded JSON-LD (Organization and DiscussionForumPosting data) plus specific HTML blocks (About section, employee preview, similar-pages sidebar), and normalizes everything into one JSON row per company. It's one of the few company-profile scrapers that returns recent posts alongside firmographic data in a single pass — most stop at the About section and leave post activity to a separate tool. No LinkedIn account, cookies, or Sales Navigator seat is required; every field comes from the page LinkedIn already serves to an anonymous visitor.

  • Extracts core firmographics: name, industry, company size band, founded year, employee count
  • Extracts full location data: city/state/country plus headquarters street address
  • Pulls up to 10 recent company posts with URL, publish date, and text
  • Pulls a public employee preview (name, title, profile link) — the same handful of names LinkedIn shows logged-out visitors
  • Pulls similar/related company pages from the About sidebar
  • Auto-escalates from your chosen proxy (or direct) to Apify Residential proxy on a block, with configurable retries and concurrency

What data can you get with LinkedIn Company Scraper?

Every run returns one normalized JSON object per input URL, covering seven groups of fields:

Result TypeExtracted FieldsPrimary Use Case
Company profilename, description, slogan, type, industry, size, employeeCount, foundedFirmographic research, CRM enrichment
Location & HQlocation (city/state/country), headquarters, headquartersStreetAddressTerritory planning, market segmentation
Brand & webwebsite, logoEnriching contact records, brand monitoring
Specialtiesspecialties[]ICP matching, keyword/content research
Recent postsposts[].url, posts[].datePublished, posts[].text (up to 10)Content and activity monitoring
Employee previewemployees[].name, employees[].title, employees[].link, employees[].image (up to 10)Prospecting, org-chart sampling
Similar pagessimilarPages[].name, similarPages[].link, similarPages[].imageCompetitor discovery, market mapping
Run statusinputUrl, success, errorDebugging failed or partial runs

Recent company posts

The posts field is what separates this Actor from a bare About-page scraper: it reads the DiscussionForumPosting entries embedded in the company page's own JSON-LD and returns up to the 10 most recent, each with a direct post URL, an ISO-8601 publish timestamp, and the post text. There's no separate "posts" run or extra request — it comes from the same fetch that pulls the profile. A typical entry looks like:

{
"url": "https://www.linkedin.com/posts/netflix_venicefilmfestival-dreamteam-activity-7376631561569484801-JgLk",
"datePublished": "2025-09-24T15:00:15.442Z",
"text": "At the Venice Film Festival 2025, we proudly showcased 4 World Premieres..."
}

If a company hasn't posted recently, or LinkedIn doesn't render the block for that page, posts comes back as an empty array — it is never backfilled or guessed.

Employee preview

employees[] captures the small, public "People at" preview LinkedIn shows to logged-out visitors — typically a handful of names, each with a profile link and, where shown, a job title and photo. It is capped at 10 entries per company and is not the full employee directory, which LinkedIn gates behind a login. Because it comes from the same page fetch as the rest of the profile, it costs nothing extra to include. It's useful as a first-pass prospecting signal — a quick read on who's visible at a company — before running a dedicated people-search Actor for full coverage.

How does LinkedIn Company Scraper differ from the official LinkedIn API?

LinkedIn's official APIs return company data only to businesses accepted into its Partner Program — there is no general-purpose, self-serve endpoint a developer can call for arbitrary company profiles. LinkedIn Company Scraper works against any public company URL without that approval process.

FeatureLinkedIn Official APILinkedIn Company Scraper
Access requirementsPartner Program application and approvalAny Apify account — paste URLs and run
Company profile fieldsScoped to the approved partner use caseFull public About-page fields in one schema
Recent postsNot exposed to general developersUp to 10 recent posts per company, included by default
Employee dataRequires a separate Talent/Sales Navigator partnershipPublic employee preview included in the same row
Setup timeBusiness verification, OAuth app reviewMinutes — no app review
Output consistencySchema defined per approved integrationOne consistent JSON row per company, every run

The official API is the right choice if you already hold a LinkedIn Partner Program integration and need first-party guarantees for a production product. LinkedIn Company Scraper is the right choice when you need public company data now, without an approval cycle.

How to scrape LinkedIn with LinkedIn Company Scraper?

  1. Open LinkedIn Company Scraper on Apify and start a new run.
  2. Paste one or more LinkedIn company URLs into the required urls field, e.g. https://www.linkedin.com/company/netflix/.
  3. Optionally set a proxy group, and tune concurrency, maxRetries, and requestTimeoutSec for your batch size.
  4. Click Start — each URL is fetched independently and pushed to the dataset the instant it succeeds.
  5. Download the results as JSON, CSV, Excel, or XML, or pull them via the Apify API/SDK.

Example request body:

{
"urls": ["https://www.linkedin.com/company/netflix/", "https://www.linkedin.com/company/spotify/"],
"concurrency": 3,
"maxRetries": 3,
"requestTimeoutSec": 30
}

How to scrape multiple companies in one job

urls accepts an array with any number of entries — list every company you want to cover in the same run instead of starting a separate job per company. Each URL is processed independently behind an asyncio.Semaphore, bounded by the concurrency value you set (1–20, default 3), so a large batch doesn't hit LinkedIn with unlimited parallel requests at once. Because each row is pushed to the dataset as soon as its URL finishes, you can start consuming results for the companies that resolved quickly while slower or retried URLs are still in flight, instead of waiting for the entire batch to complete.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
urlsYesarrayOne or more public LinkedIn company URLs, one per line["https://www.linkedin.com/company/netflix/"]
proxyNoobjectApify proxy configuration; starts direct or with your chosen group, auto-escalates to Residential on a block{ "useApifyProxy": true }
concurrencyNointegerNumber of company URLs fetched in parallel (1–20, default 3)3
maxRetriesNointegerAttempts per URL, with exponential backoff, before giving up and saving an error row (1–10, default 3)3
requestTimeoutSecNointegerSeconds to wait for a response before treating the attempt as failed and retrying (5–120, default 30)30
{
"urls": [
"https://www.linkedin.com/company/netflix/"
],
"concurrency": 3,
"maxRetries": 3,
"requestTimeoutSec": 30
}

Common pitfall: each entry in urls must be a full LinkedIn company URL (https://www.linkedin.com/company/<slug>/), not a bare slug or a personal profile URL — a malformed or non-company URL will fail with an HTTP or parsing error and be saved as an error row rather than silently skipped.

⬆️ Output

Results are pushed to the Apify dataset row by row, in real time, as each URL finishes — you don't need to wait for the full batch. Every row is a typed, normalized JSON object with the same 20 keys whether the fetch succeeded or not. Export as JSON, CSV, Excel, or XML from the Apify Console or API.

Scraped results

[
{
"inputUrl": "https://www.linkedin.com/company/netflix/",
"success": true,
"name": "Netflix",
"description": "Netflix is one of the world's leading entertainment services, with over 300 million paid memberships in over 190 countries enjoying TV series, films and games across a wide variety of genres and languages.",
"location": { "city": "Los Gatos", "state": "CA", "country": "US" },
"headquartersStreetAddress": "100 Winchester Circle",
"employeeCount": 17554,
"website": "https://jobs.netflix.com?utm_campaign=LIHomePage&utm_source=linkedin",
"logo": "https://media.licdn.com/dms/image/v2/netflix_logo",
"slogan": "Play, pause, and resume watching anytime and anywhere.",
"industry": "Entertainment Providers",
"size": "10,001+ employees",
"founded": 1997,
"headquarters": "Los Gatos, CA",
"type": "Public Company",
"specialties": ["Revolutionizing the way people watch TV shows and movies!"],
"similarPages": [
{ "link": "https://www.linkedin.com/company/spotify?trk=similar-pages", "name": "Spotify" },
{ "link": "https://www.linkedin.com/company/google?trk=similar-pages", "name": "Google" }
],
"employees": [
{ "link": "https://www.linkedin.com/in/aaronhipple?trk=org-employees", "name": "Aaron Hipple", "title": "Audio Software Engineer" }
],
"posts": [
{
"url": "https://www.linkedin.com/posts/netflix_venicefilmfestival-dreamteam-activity-7376631561569484801-JgLk",
"datePublished": "2025-09-24T15:00:15.442Z",
"text": "At the Venice Film Festival 2025, we proudly showcased 4 World Premieres..."
}
],
"error": ""
},
{
"inputUrl": "https://www.linkedin.com/company/spotify/",
"success": true,
"name": "Spotify",
"description": "Spotify is a digital music, podcast, and video service that gives you access to millions of songs and other content from creators all over the world.",
"location": { "city": "Stockholm", "state": "", "country": "SE" },
"headquartersStreetAddress": "Regeringsgatan 19",
"employeeCount": 11365,
"website": "https://www.spotifyjobs.com",
"logo": "https://media.licdn.com/dms/image/v2/spotify_logo",
"slogan": "Music for everyone.",
"industry": "Technology, Information and Media",
"size": "10,001+ employees",
"founded": 2006,
"headquarters": "Stockholm",
"type": "Public Company",
"specialties": ["Music", "Podcasts", "Streaming"],
"similarPages": [
{ "link": "https://www.linkedin.com/company/netflix?trk=similar-pages", "name": "Netflix" }
],
"employees": [],
"posts": [],
"error": ""
},
{
"inputUrl": "https://www.linkedin.com/company/this-slug-does-not-exist/",
"success": false,
"name": "",
"description": "",
"location": { "city": "", "state": "", "country": "" },
"headquartersStreetAddress": "",
"employeeCount": 0,
"website": "",
"logo": "",
"slogan": "",
"industry": "",
"size": "",
"founded": "",
"headquarters": "",
"type": "",
"specialties": [],
"similarPages": [],
"employees": [],
"posts": [],
"error": "HTTP 404"
}
]

How can I use the data extracted with LinkedIn Company Scraper?

  • Sales prospecting and RevOps: append industry, size, employeeCount, and headquarters to CRM accounts at scale, and use employees[] as a first-pass contact signal before a dedicated people search.
  • Competitive intelligence: track a competitor's slogan, specialties[], and posts[].text to see how their public positioning and announcements shift over time.
  • AI engineers and LLM developers: an agent issues a batch of company URLs, receives structured JSON back, and passes description, specialties, and posts straight to a model as grounding context — no HTML parsing on the agent's side.
  • Market researchers: use similarPages[] to map a competitive set from a single seed company, then run the same batch again later to see which players enter or leave that set.

How do you monitor a company's public presence over time?

Monitoring here means re-running the same list of company URLs on a schedule and diffing the output between runs to catch what changed. Because posts[] returns up to the 10 most recent posts on each fetch, a new post appearing between two runs is a direct activity signal; a shrinking posts[] array, or an empty one where there used to be entries, can mean the company stopped posting or LinkedIn stopped rendering the block for that page. Beyond posts, diff employeeCount for headcount growth or contraction, specialties[] for repositioning, and similarPages[] for a competitor set that's shifting.

A practical loop: keep a fixed list of target company URLs, run LinkedIn Company Scraper against it on a recurring schedule, store each run's dataset, and compare posts[].url and employeeCount against the previous run to flag the deltas that matter — a new post, a headcount jump, or a new entry in similarPages[]. Because every row carries the same inputUrl across runs, joining this run's dataset to the last one on that key is enough to compute the diff without any extra bookkeeping. Apify's built-in Scheduler can trigger these runs on a recurring interval; there is no internal diffing step in the Actor itself, so the comparison happens in whatever pipeline consumes the dataset — a script, a warehouse job, or a workflow tool.

Integrate LinkedIn Company Scraper and automate your workflow

LinkedIn Company Scraper works with any language or tool that can send an HTTP request.

REST API with Python

import requests
API_TOKEN = "your_apify_token"
ACTOR_ID = "scrapier~linkedin-company-scraper-actor"
resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR_ID}/run-sync-get-dataset-items",
params={"token": API_TOKEN},
json={"urls": ["https://www.linkedin.com/company/netflix/"]},
)
resp.raise_for_status()
companies = resp.json()
for company in companies:
print(company["name"], company["industry"], len(company["posts"]))

MCP for query-grounded AI agents

LinkedIn Company Scraper is reachable through Apify's MCP server (mcp.apify.com), which exposes any public Actor as a callable tool to MCP-compatible clients such as Claude Desktop and Cursor. An agent registers the Actor by its full name (scrapier/linkedin-company-scraper-actor), then calls it with a list of company URLs, receives the normalized JSON rows back, and grounds its answer in that data — the company's real industry, size, HQ, and recent posts — instead of guessing from training data or hallucinating fields it was never given.

Scheduled monitoring and delivery

Use Apify's Scheduler to run LinkedIn Company Scraper against a fixed list of company URLs on a recurring interval, then pull each run's dataset via the Apify API to compare against the previous run. There is no built-in webhook push from the Actor itself; polling the dataset or wiring an Apify webhook on run completion are the supported delivery patterns.

Yes — scraping publicly accessible LinkedIn company pages is generally lawful; LinkedIn Company Scraper only reads what any logged-out visitor already sees, with no login, cookie injection, or Sales Navigator access involved. In hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019, cert. denied 2022), the court held that scraping publicly available LinkedIn data does not violate the Computer Fraud and Abuse Act. Because this Actor returns business and public-record data rather than sensitive personal data, LinkedIn's Terms of Service and database-rights considerations are the primary constraints here, not GDPR/CCPA-style personal-data rules — though the small employee-preview names should still be handled carefully if you store them. Scraping for one-off monitoring carries a different risk profile than bulk scraping for AI training or resale. Consult your legal team for commercial use cases involving bulk data storage.

Frequently asked questions

Does LinkedIn Company Scraper need a LinkedIn account or cookies?

No. It only reads the public, logged-out /company/ page for each URL you supply. There is no authenticated mode, and supplying credentials would not unlock additional fields.

Can I control how fast the scraper runs?

Yes, with concurrency (1–20, default 3) — the number of company URLs fetched in parallel. Higher values finish a batch faster but increase the chance of hitting a block and triggering the Residential proxy fallback.

How does LinkedIn Company Scraper handle LinkedIn's anti-bot measures?

On an HTTP 403, 407, 429, 999, or an authwall redirect, the Actor automatically escalates from your chosen proxy (or direct) to Apify's Residential proxy group and retries with exponential backoff, up to maxRetries attempts, before saving the URL as an error row.

Does LinkedIn Company Scraper extract recent company posts?

Yes — the posts[] array, sourced from the DiscussionForumPosting entries in the company page's own JSON-LD, with url, datePublished, and text per post. It's capped at the 10 most recent and comes back empty if the company hasn't posted recently or the block isn't rendered for that page.

How many results does LinkedIn Company Scraper return per query?

One row per input URL. Within that row, posts[] and employees[] are each capped at 10 entries in the source code; similarPages[] reflects whatever LinkedIn's sidebar currently renders for that company, with no fixed cap.

How do I use LinkedIn Company Scraper to monitor a company's activity over time?

Run the same list of company URLs on a recurring schedule via Apify's Scheduler, then diff posts[].url, employeeCount, and similarPages[] against the previous run's dataset to flag new posts, headcount changes, or a shifting competitive set.

Does LinkedIn Company Scraper work with Claude, ChatGPT, and AI agent frameworks?

Yes. It's callable as an HTTP endpoint by any agent framework, and it's also reachable through Apify's MCP server as a registered tool — an agent can call it with company URLs and ground its response in the returned JSON rather than answering from memory.

How does LinkedIn Company Scraper compare to other LinkedIn company scrapers?

As observed on their live Apify listings on 2026-07-26, some competing company-profile scrapers (for example, Automation Lab's LinkedIn Company Scraper) return firmographic and location fields but no recent posts, employee preview, or similar-pages data — those require a separate posts scraper or people scraper. LinkedIn Company Scraper returns all of that in one row per company, in a single fetch.

Can I use LinkedIn Company Scraper without managing proxies or LinkedIn credentials?

Yes. The Actor starts direct (or with whatever proxy group you choose) and automatically escalates to Apify's own Residential proxy pool on a block — you never need to supply a LinkedIn login, and proxy infrastructure is handled for you unless you choose to override it.

What happens if a company URL fails to load?

The row is still written to the dataset with success: false, an error message describing the failure (e.g. "HTTP 404"), and every other field left empty — failed URLs are never silently dropped from the output.

Your feedback

Found a bug or a field that doesn't match what's documented here? Let us know through the Actor's Issues tab on Apify or Scrapier's support contact — reports like this go straight into fixing the extractor.