Linkedin Company Profile Scraper
Pricing
$19.99/month + usage
Linkedin Company Profile Scraper
LinkedIn Company Profile Scraper extracts company details including name, industry, size, description, specialties, posts, and engagement stats. Perfect for market research, lead generation, or competitor analysis. Export structured data in JSON, CSV, or Excel for easy insights.
Pricing
$19.99/month + usage
Rating
5.0
(6)
Developer
Scraper Engine
Maintained by CommunityActor stats
4
Bookmarked
281
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
LinkedIn Company Profile Scraper — Industry, Size, HQ and Followers
LinkedIn Company Profile Scraper extracts structured data from any public LinkedIn company page — name, industry, size, headquarters, follower count, specialties, and a sample of recent posts and employees — returned as clean, typed JSON with no parsing required. It fetches each company URL directly, with no LinkedIn login, and pushes every result to the dataset the moment it finishes so you can watch a large URL list complete in real time. Add your company URLs below and start a run.
🏢 What is LinkedIn Company Profile Scraper?
LinkedIn Company Profile Scraper is an Apify Actor that turns a list of public LinkedIn company page URLs into structured company records — firmographics, follower and employee counts, specialties, and a sample of recent posts and employees — in a single run. It works entirely logged out: the source code makes a plain HTTP request to each URL with browser-style headers, so no LinkedIn account, cookie, or session is required. It's built for sales and growth teams enriching account lists, market researchers tracking companies at scale, and developers or AI engineers who need LinkedIn firmographic data as clean JSON rather than scraped HTML.
🔓 What LinkedIn company data is publicly available to scrape?
LinkedIn renders a company page's core "About" details, follower count, and a preview of employees and posts to any visitor without requiring a login — that is exactly what this Actor reads.
| Data category | Publicly available (no login) | Restricted (requires LinkedIn login) |
|---|---|---|
| Company identity (name, description, logo, slogan) | ✅ | |
| Industry, size band, founding year, organization type | ✅ | |
| Headquarters / address | ✅ | |
| Follower count | ✅ | |
| Specialties | ✅ | |
| Employee sample (up to 10 shown on the page) | ✅ | Full employee directory |
| Recent posts (up to 10 shown on the page) | ✅ | Full post history and comments |
| Similar/related company pages | ✅ | |
| Page analytics, admin tools, contact/inquiry details | ✅ (Page Admin login) |
LinkedIn Company Profile Scraper only returns publicly visible data — what any visitor sees. Nothing behind a login wall.
📦 What data can I extract with LinkedIn Company Profile Scraper?
Every run returns one JSON row per input URL, built from the page's JSON-LD Organization block plus its visible "About", "Employees at" and "Similar pages" HTML sections. The table below lists every key the Actor writes to the dataset — not just the columns shown in the default dataset view.
| Field name | Description |
|---|---|
inputUrl | The LinkedIn company URL you submitted |
name | Company name |
description | Full "About" description text |
website | Company's external website URL, or null if not published |
logo | Company logo image URL |
slogan | Company tagline, or null if none is set |
industry | Industry as shown in the About section |
size | LinkedIn's employee-count band (e.g. "10,001+ employees") |
founded | Founding year, or empty if not published |
headquarters | Flat headquarters string as shown in the About section |
type | Organization type (e.g. "Public Company", "Privately Held") |
universalName | The company's URL slug, e.g. netflix |
companyUrn | LinkedIn's internal numeric organization ID, from urn:li:organization:<id> |
location | { city, state, country } parsed from the page's structured address data |
success | true once the page was fetched and parsed, false if every retry failed |
employeeCount | Numeric headcount from LinkedIn's structured data, or null when LinkedIn doesn't publish one |
followerCount | LinkedIn follower count, parsed from the page |
error | Error message when success is false, empty string otherwise |
scrapedAt | ISO 8601 timestamp of when the row was scraped |
specialties | Array of specialty tags the company lists |
similarPages | Array of related companies: { link, name, image } |
employees | Public sample of employees shown on the page, capped at 10: { link, name, title, image } |
posts | Sample of recent company posts, capped at 10: { url, datePublished, text } |
🏢 Identity & descriptive fields
inputUrl, name, description, website, logo, slogan, industry, size, founded, headquarters, type, universalName, companyUrn, location — what the company is, what it's called, and where it's registered.
📊 Quantitative & status fields
success, employeeCount, followerCount, error, scrapedAt — counts, run status, and timing.
🗂️ Media, posts and nested fields
specialties, similarPages, employees, posts — arrays of tags and nested objects sampled from the page.
🤖 Add-on: Need additional LinkedIn data?
If you only have keywords, brand names, or a business category and location rather than company URLs, LinkedIn Mass Company Profile Finder By Category Directory discovers matching LinkedIn company URLs first — feed its output straight into this Actor. If you need contact-level leads rather than company firmographics, Linkedin Lead Scraper & Company Website Enrichment finds public LinkedIn profiles and posts containing lead emails and enriches each company's website with tech-stack data.
🆚 How does LinkedIn Company Profile Scraper differ from the official LinkedIn API?
LinkedIn's Organization Lookup API requires an OAuth-authenticated, LinkedIn-approved developer app, and returns full company fields only for pages you administer — for a company you don't administer, the documented response is limited to id, name, vanityName, logoV2, locations, and primaryOrganizationType (per LinkedIn's Organization Lookup API documentation, checked 2026-07-30).
| Feature | LinkedIn Organization Lookup API | LinkedIn Company Profile Scraper |
|---|---|---|
| Access model | 3-legged OAuth app, reviewed and approved by LinkedIn | Apify account only, no LinkedIn app review |
| Data on a company you don't administer | Limited to id, name, vanityName, logoV2, locations, primaryOrganizationType | Full public page: description, industry, size, headquarters, specialties, posts, employee sample |
| Data on a company you administer | Full schema, including admin-only fields | Same public-page fields, regardless of admin status |
| Follower count | Separate Organization Network Size endpoint, requires OAuth + the org's URN | Read from the same page fetch, no separate call |
| Setup time | OAuth app registration and partner review | Add URLs and start a run |
Use LinkedIn's own API if you administer the company page and need authenticated write access. Use LinkedIn Company Profile Scraper when you need public firmographic data on companies you don't administer — competitors, prospects, or a market list — without an approval process.
🚀 How to use LinkedIn Company Profile Scraper
LinkedIn Company Profile Scraper runs on the Apify platform — no separate signup or API key is required beyond an Apify account.
- Open the Actor on its Apify Store listing (or find it in your Apify Console).
- Provide
urls— the required input — a list of one or more public LinkedIn company page URLs. - Optionally set
maxRetries,requestTimeoutSec,concurrency, or a startingproxyconfiguration. - Start the run.
- Download or stream results from the dataset as JSON, CSV, or any other Apify-supported export format.
How to scale to bulk company extraction
urls accepts an array, so a single run can process one company or thousands. Every URL is added to an Apify Request Queue, which deduplicates automatically — submitting the same URL twice, or restarting a failed run, doesn't produce duplicate rows. The concurrency input (1–20) controls how many company URLs are fetched in parallel within that one run.
💡 What can you do with LinkedIn company data?
- 🏢 A sales development rep prospecting target accounts uses
industry,size, andheadquartersto shortlist companies before outreach. - 📊 A market researcher tracking a competitor set uses
followerCountandemployeeCountacross repeated runs to watch growth trends over time. - 🧑💼 A recruiter sourcing candidates uses
specialtiesand theemployeessample to understand a company's focus areas and team composition. - 🤖 An AI engineer building a lead-enrichment agent feeds
description,industry, andspecialtiesinto a RAG pipeline or agent tool to auto-qualify inbound leads. - 🔍 An analyst building a due-diligence dataset uses
founded,type, andsizeto profile a list of companies consistently.
🛡️ How does LinkedIn Company Profile Scraper handle rate limits and blocking?
Each request goes out as a plain HTTP fetch with desktop-Chrome-style headers — there is no headless browser and no CAPTCHA-solving. If LinkedIn returns a block signal (HTTP 403, 407, 429, 999, or an authwall redirect), the Actor retries with exponential backoff (doubling up to a 10-second cap) and, on the first block, permanently switches that worker from its starting proxy — direct, or whatever you configured in proxy — to Apify Residential proxy for the rest of the run. Retries continue up to maxRetries attempts (default 3, configurable 1–10).
⚠️ If a URL still fails after all retries, the Actor still pushes a row for it, with success: false and an error message — and that row is billed the same as a successful one, since both are charged under the row_result event. Filter on success == true if you only want to count successfully scraped companies.
⬇️ Input
| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
urls | Yes | array of strings | List of public LinkedIn company page URLs to process. Duplicates are skipped automatically; each URL is scraped and saved independently. Minimum 1 item. | ["https://www.linkedin.com/company/netflix"] |
maxRetries | No | integer | Maximum fetch attempts per URL before giving up and recording an error row. Default 3, minimum 1, maximum 10. | 3 |
requestTimeoutSec | No | integer | Seconds to wait for a single page fetch before treating it as a timeout and retrying. Default 30, minimum 5, maximum 120. | 30 |
concurrency | No | integer | How many company URLs are processed in parallel. Default 3, minimum 1, maximum 20. | 5 |
proxy | No | object (proxy configuration) | Starting proxy for requests. Leave empty to start direct; the Actor switches to Apify Residential automatically on a block. | { "useApifyProxy": true } |
Example input
{"urls": ["https://www.linkedin.com/company/netflix","https://www.linkedin.com/company/microsoft"],"maxRetries": 3,"requestTimeoutSec": 30,"concurrency": 5,"proxy": {"useApifyProxy": true}}
⬆️ Output
Every run writes typed, normalized JSON to the Apify dataset — one row per input URL, with the same fixed set of keys whether or not LinkedIn published a given field. Results can be exported in any of Apify's supported dataset formats, including JSON, CSV, and Excel.
Example output
{"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 more than 190 countries.","location": { "city": "Los Gatos", "state": "California", "country": "US" },"employeeCount": 14000,"website": "https://about.netflix.com","logo": "https://media.licdn.com/dms/image/netflix-logo.png","slogan": "See what's next.","industry": "Entertainment Providers","size": "10,001+ employees","founded": 1997,"headquarters": "Los Gatos, California","type": "Public Company","specialties": ["Internet television network", "Original programming", "Streaming"],"similarPages": [{ "link": "https://www.linkedin.com/company/disney", "name": "Disney", "image": "https://media.licdn.com/dms/image/disney-logo.png" }],"employees": [{ "link": "https://www.linkedin.com/in/jane-doe", "name": "Jane Doe", "title": "Senior Software Engineer", "image": "https://media.licdn.com/dms/image/jane-doe.png" }],"posts": [{ "url": "https://www.linkedin.com/posts/netflix_activity-7123456789", "datePublished": "2026-07-15T09:00:00.000Z", "text": "We're hiring across engineering and content teams." }],"followerCount": 14500000,"universalName": "netflix","companyUrn": "165158","scrapedAt": "2026-07-30T10:15:00+00:00","error": ""}
⚙️ How does it work?
LinkedIn Company Profile Scraper reaches each company page with a plain HTTP request carrying desktop-browser headers — direct by default, or through a proxy you configure — and treats an authwall redirect or a 403/407/429/999 response as a block signal. Blocked or failed requests are retried with exponential backoff, and once a worker hits a block it switches permanently to Apify Residential proxy for the rest of the run. The page's response is parsed for its JSON-LD Organization data plus the visible "About", "Employees at", and "Similar pages" HTML sections — never a login-only view. Every row is passed through the same normalization step before being saved, so the output always has the same set of keys: a field LinkedIn doesn't publish for a given company comes back empty or null instead of being omitted.
🔌 Integrations
LinkedIn Company Profile Scraper works with whatever you already use to call Apify Actors — the Apify API, its official client libraries, and any workflow tool that can make an HTTP request.
Calling LinkedIn Company Profile Scraper programmatically
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("linkedin-company-profile-scraper").call(run_input={"urls": ["https://www.linkedin.com/company/netflix"],"concurrency": 5,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item["industry"], item["followerCount"])
Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.
No-code tools (n8n, Make)
In n8n, use the HTTP Request node pointed at the Actor's run endpoint (https://api.apify.com/v2/acts/linkedin-company-profile-scraper/runs) with your API token, then fetch results from the resulting dataset ID. In Make, the Apify app's "Run Actor" module takes the same urls and optional-parameter input and can feed the dataset output directly into downstream scenario steps like CRM upserts or spreadsheet rows.
⚖️ Is it legal to scrape LinkedIn company profiles?
Scraping publicly accessible data — pages that don't require a login to view — is generally permitted; this is a data-collection question governed primarily by LinkedIn's Terms of Service and database-rights considerations, not by a personal-data regime. LinkedIn Company Profile Scraper returns only what a logged-out visitor can already see on a company's page. One caveat: the employees sample includes named individuals' profile links, titles, and photos, which are personal data — if you store or process that field in bulk, GDPR/CCPA obligations can attach to it specifically, even though the rest of the record is company data. Consult legal counsel if your use case involves bulk storage of personal data.
❓ Frequently asked questions
What LinkedIn company fields does LinkedIn Company Profile Scraper return?
The Actor returns name, industry, size, headquarters, and followerCount among 23 total fields per company, covering identity, quantitative, and nested/sample data — see the full field table above.
Does LinkedIn Company Profile Scraper require a LinkedIn account or login?
No. The Actor's source code makes a plain HTTP request with browser-style headers and no cookies or session — there is no credential input of any kind in the input schema.
How many company profiles can I extract in one run?
There's no fixed cap coded into the Actor — urls accepts an array of any length, and each URL is queued through an Apify Request Queue that deduplicates automatically. Throughput within a run is governed by concurrency (1–20 parallel URLs) and requestTimeoutSec.
What happens if a company page is private, deleted, or blocked?
If the page can't be fetched (blocked, timed out, or an HTTP error), the Actor retries with backoff and a proxy escalation to Apify Residential, up to maxRetries attempts. If every attempt fails, it still pushes one row for that URL with success: false and an error field describing the failure, so every input URL always produces exactly one output row.
Can I scrape multiple LinkedIn company profiles at once?
Yes. urls is an array — submit one URL or several thousand in a single run, and set concurrency to control how many are fetched in parallel.
Does LinkedIn Company Profile Scraper work with Claude, ChatGPT, and other AI agent tools?
It's callable as an HTTP endpoint through the Apify API by any agent framework that can make a request — pass urls as the run input and read the resulting dataset.
How is LinkedIn Company Profile Scraper different from scraping LinkedIn manually or writing your own script?
It handles proxy rotation, block detection, and retry logic for you — including the automatic Residential-proxy fallback implemented in the Actor's proxy-handling code — and writes each result to the dataset live as a normalized JSON row instead of raw HTML you'd have to parse yourself.
Does LinkedIn Company Profile Scraper return data in a format LLMs can use directly?
Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing or selectors needed. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.
What happens when LinkedIn changes its layout or anti-bot system?
The Actor is maintained, and every row is normalized to the same fixed set of output keys regardless of what the underlying page parsing finds, so downstream integrations built against this schema keep working.
Can I use LinkedIn Company Profile Scraper without managing proxies or browser infrastructure?
Yes. You can leave proxy empty to start direct, or select an Apify proxy configuration; either way, the Actor automatically escalates to Apify Residential proxy if LinkedIn blocks a request, with no separate proxy setup on your end.
Which LinkedIn company fields work best for AI training data and RAG indexing?
For RAG, index the high-information text fields: description, industry, and specialties. For structured training data, name, industry, size, and founded return as consistently typed primitives across every company record.
🔗 Related scrapers
| Scraper | What it extracts |
|---|---|
| LinkedIn Mass Company Profile Finder By Category Directory | Discovers LinkedIn company profile URLs from keywords or a business category + location — feed the URLs it finds into this Actor |
| Linkedin Lead Scraper & Company Website Enrichment | Public LinkedIn profiles and posts containing lead emails, plus per-company website tech-stack enrichment |
| Instagram Profile Post Scraper | Public Instagram profile posts, pinned posts, and comments |
| TikTok User Profile Scraper With Engagement Analytics | Public TikTok creator profile and engagement data |
💬 Your feedback
Found a bug or missing a field? Let us know through the Actor's Issues tab on the Apify Console, or message the developer directly from the Actor's Apify Store listing — reports help keep the schema stable as LinkedIn's pages change.