LinkedIn Company Scraper — By URL, Name or Domain | $1/1k
Pricing
from $1.00 / 1,000 results
LinkedIn Company Scraper — By URL, Name or Domain | $1/1k
Public LinkedIn company data without login or cookies: name, website, industry, size, headquarters, founded, specialties, followers, logo, locations, similar pages and open jobs. Look up by URL, slug, id, company name or website domain (with match confidence). No people data.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Raffy
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
7 hours ago
Last modified
Categories
Share
What does LinkedIn Company Scraper do?
LinkedIn Company Scraper turns public LinkedIn company pages into clean, structured data: name, website, industry, company size, headquarters and address, founded year, type, specialties, followers, logo, cover image, office locations, similar pages and open jobs. It works as a LinkedIn company data API without an account: paste company URLs, the name from the page address (stripe), numeric company ids, type company names, or give company website domains (stripe.com) to find their LinkedIn page, and get one row per company as JSON, CSV or Excel.
It reads only what LinkedIn shows to visitors who are not logged in. No LinkedIn account, no cookies, no login, no browser. Company facts only: no employee lists, no people, no posts.
Use cases for this LinkedIn company scraper
- Lead generation and CRM enrichment: add website, industry, size range, headquarters and follower count to a list of accounts.
- Market mapping: pull the companies LinkedIn lists as similar pages and affiliated pages to find competitors and subsidiaries.
- Hiring signals:
openJobsCountshows how many jobs a company has open on LinkedIn right now. - Data cleaning: turn company names from a spreadsheet into LinkedIn company ids, page URLs and websites.
- AI agents: call it with a company name or URL and get a self-describing row back in seconds.
What data can LinkedIn Company Scraper extract?
| Field | Type | Description |
|---|---|---|
name | string | Company name as shown on LinkedIn |
url | string | The company's public LinkedIn page, https://www.linkedin.com/company/<slug>/ |
companyId | string | LinkedIn's numeric company id (the id LinkedIn's job search filters by) |
slug | string | The company name in the page address |
tagline | string | One-line tagline under the name, when the company set one |
description | string | The company's own "About us" text |
website | string | Company website |
industry | string | LinkedIn industry, e.g. Software Development |
companySize | string | Size range as LinkedIn shows it, e.g. 1,001-5,000 employees |
companySizeMin / companySizeMax | integer | The range as numbers (companySizeMax is empty for 10,001+) |
employeesOnLinkedIn | integer | How many LinkedIn members list the company as employer (a number, no names) |
headquarters | string | Headquarters as shown, e.g. Redmond, Washington |
address | object | Headquarters address: street, city, region, postalCode, country (ISO code) |
locations | array | Office addresses from the Locations section, primary office first |
founded | integer | Year founded |
type | string | Public Company, Privately Held, Nonprofit, ... |
specialties | array | Specialties the company lists |
followerCount | integer | LinkedIn followers |
logoUrl | string | Logo image URL |
coverImageUrl | string | Cover (banner) image URL |
similarPages | array | Names of the companies LinkedIn lists under "Similar pages" |
affiliatedPages | array | Names of affiliated pages (subsidiaries, showcase pages) |
openJobsCount | integer | Open jobs LinkedIn shows for the company, when it shows the number |
inputName | string | The company name you typed, for rows found through Company names |
inputDomain | string | The website domain you gave, for rows found through Website domains |
matchedBy | string | How a domain was matched: homepageLink (the website links this LinkedIn page), slugGuess (linkedin.com/company/<name in the domain>) or nameSearch (LinkedIn's company search) |
matchConfidence | string | high: the LinkedIn page lists this domain as its website. medium: the website links this page, or the page has the site's exact name, but the page lists another website (a parent company, careers site or short link) |
status | string | ok, not_found or error (see below) |
error | string | Plain reason when status is not ok |
scrapedAt | string | ISO 8601 time of extraction |
Fields a company did not fill in on LinkedIn are left out of its row. In a 100-company test run every ok row had name, companyId, industry, companySize, followerCount and employeesOnLinkedIn; 98% had a website and a description, 84% specialties, 44% a founded year.
Result status (tri-state output)
status | Meaning | Billed? |
|---|---|---|
ok | The company page was read. | Yes |
not_found | LinkedIn has no company page at that address, or no company matches the name you typed. | No |
error | The page could not be read after several retries (for example LinkedIn kept showing its sign-in wall); error says why. | No |
How to scrape LinkedIn company data
- Click Try for free (or Start) - the prefilled example returns 6 well-known companies in under a minute.
- Put your companies into Companies, one per line:
https://www.linkedin.com/company/stripe/,stripeor2135371. Or type names into Company names to look up. - Set Maximum results and click Start.
- Open the Output tab or export the dataset as JSON, CSV, Excel, XML or HTML.
To automate it, use the API tab (Node.js, Python, curl), a Schedule, or the Apify MCP server.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls (Companies) | array of strings | 6 example companies | Company URLs (any country site, /about/ and other sub-pages work), slugs like tata-consultancy-services, or numeric company ids. Other text is looked up as a company name. |
companyNames | array of strings | - | Company names to look up with LinkedIn's public company search. The example companies are skipped when you use this. |
domains (Website domains to match) | array of strings | - | Company website domains (stripe.com, https://www.siemens.com/) to match to their LinkedIn company page. The example companies are skipped when you use this. See "Find a LinkedIn company page from a website domain" below. |
maxItems | integer | 20 | Stop after this many rows |
proxyConfiguration | object | Apify Proxy (datacenter) on | LinkedIn slows down one IP after about 60 pages; the datacenter proxy spreads the requests. No residential proxy needed. |
Example input:
{"startUrls": ["https://www.linkedin.com/company/stripe/","posthog","1035"],"companyNames": ["Revolut", "Tata Consultancy Services"],"maxItems": 20}
Find a LinkedIn company page from a website domain
Have a list of company websites (from a CRM, a lead list or sign-ups) and need their LinkedIn pages? Put the domains into Website domains to match:
{"domains": ["stripe.com", "siemens.com", "https://www.revolut.com/"],"maxItems": 100}
For each domain the Actor:
- reads the company's own homepage and follows the LinkedIn company link on it (
matchedBy: homepageLink); - otherwise tries
linkedin.com/company/<name in the domain>/(slugGuess); - otherwise searches LinkedIn's public company search for the site's name (
nameSearch).
A page is kept only when the website links it, or when the page lists that same domain as its website (matchConfidence: high), or when it has exactly the site's name (medium). Each row carries inputDomain, so you can join it back to your list. A domain with no verified page gets a free not_found row. Only company pages are read; links to people's profiles on a website are ignored. Filter on matchConfidence = high when you need only matches confirmed by the website itself.
Output
A real row from a run on the Apify platform (29 Sep 2026; description, specialties and image URLs shortened here):
{"url": "https://www.linkedin.com/company/posthog/","status": "ok","scrapedAt": "2026-09-29T18:53:01.901Z","companyId": "37415928","slug": "posthog","name": "PostHog","tagline": "Make your product self-driving. Get started with npx @posthog/wizard","description": "At PostHog, we're working to increase the number of successful products in the world. ...","website": "https://posthog.com/","industry": "Software Development","companySize": "51-200 employees","companySizeMin": 51,"companySizeMax": 200,"employeesOnLinkedIn": 231,"headquarters": "San Francisco","address": { "city": "San Francisco", "country": "US" },"locations": ["San Francisco, US"],"founded": 2020,"type": "Privately Held","specialties": ["analytics", "open source", "product analytics", "session replay", "error tracking"],"followerCount": 57479,"logoUrl": "https://media.licdn.com/dms/image/v2/D560BAQGQUyE_CXUxIw/company-logo_200_200/...","coverImageUrl": "https://media.licdn.com/dms/image/v2/D563DAQEA7rvhEksP6g/image-scale_191_1128/...","similarPages": ["ElevenLabs", "Linear", "Buffer", "Camunda", "Supabase", "Haus", "Ashby", "Todoist", "GitLab", "Checkly"]}
Rows that are not data explain themselves and are free:
[{ "url": "https://www.linkedin.com/company/this-company-does-not-exist-zz9q/", "status": "not_found", "error": "HTTP 404: page does not exist" },{ "url": "https://www.linkedin.com/jobs-guest/api/typeaheadHits?typeaheadType=COMPANY&query=zzqqxxnonexistentco", "status": "not_found", "error": "LinkedIn has no company matching \"zzqqxxnonexistentco\"." }]
Speed and reliability (real runs)
All numbers are from runs on the Apify platform at the default 1,024 MB with the default datacenter proxy.
| Run | Companies | Time | Result |
|---|---|---|---|
| Default input (no arguments) | 6 | about 10 s | 6 ok |
| 100 company slugs from 20+ countries | 100 | 59 s | 91 ok, 9 not_found (slugs that do not exist), 0 error |
Mixed input: renamed URL, numeric id, typed names, /about/ URL | 9 | 6 s | 6 ok, 3 not_found |
| 40 typed company names (US, Europe, Asia, Latin America, Africa) | 40 | 44 s | 40 ok |
| 15 more typed names, some for companies with no open jobs | 15 | 21 s | 13 ok, 2 not_found (Grab, Dangote Group) |
| Mixed input after the 2026-10-19 lookup fixes: URLs from 5 country sites, slugs, ids, a Sales Navigator link, renamed and showcase pages, 14 typed names (including Grab, Reliance Industries and Dangote Group) | 43 | 72 s | 41 ok, 2 not_found (both made-up test entries), 0 error |
| 90 company website domains (US, Europe, India, Latin America, Africa, Asia) | 90 | 98 s and 108 s (two runs) | 88 ok (70 high, 18 medium), 2 not_found |
Before building it, we measured 147 requests to 49 companies from Apify's datacenter: 97% returned the company page on the first attempt, the rest were renamed pages (followed automatically) and a few HTTP 429 slow-downs, which the Actor retries from another IP.
How much does it cost to scrape LinkedIn company data?
Pay per event, platform compute and proxy included:
| Event | Price |
|---|---|
| Actor start | $0.005 per run |
Result (status: ok company) | $0.001 per company ($1 per 1,000) |
Examples: the default 6-company run costs $0.011; 1,000 companies cost $1.005; 10,000 companies $10.005. Rows with status not_found or error are never billed. Cap spending with Maximum results and the run's Max total charge; the Actor stops cleanly when either is reached.
Tips
- Page URLs, slugs and ids are the fastest input (one request per company). A typed name needs three requests (search, company id, page), so it takes a little longer; the result costs the same.
- Check
inputNameagainstnamefor looked-up names. The Actor takes LinkedIn's first suggestion that starts with the name you typed, which is usually the main company page. For a group with many country pages (for example "Banco Santander"), LinkedIn's first suggestion can be one country's page; paste the exact company URL when that matters. - Put many companies into one run instead of many small runs; you pay the start fee once.
Limitations
- Company-level facts only. Employee lists, member profiles, people's names, e-mails and phone numbers, and company posts are out of scope by design.
- LinkedIn shows logged-out visitors company pages only by their name address (
/company/stripe/). A numeric id is turned into that address through the company's open jobs on LinkedIn; a company with no open jobs gives anerrorrow that asks for the URL instead. - A typed name is found through the same open jobs (worldwide, not only in one country). When the company has none anywhere, the Actor tries the page addresses that match the name (for example
/company/toyota/, then LinkedIn's own name for it) and keeps only a page with the right company id. If the company's address is something else entirely, the row isnot_found; paste the URL instead. - Website domains: a company whose homepage blocks automated visits is matched by its name instead. Some big brands' homepages show a country version (for example samsung.com from a German IP), so the linked page can be that country's page; check
nameandmatchConfidence. openJobsCount,founded,taglineandspecialtiesappear only when LinkedIn shows them for that company.employeesOnLinkedIncounts LinkedIn members who list the company, which differs from the headcount the company reports;companySizeis the range the company chose.- Values are in English; showcase pages (
/showcase/...) work, school pages are not supported. - Results reflect the public page at the time of the run. If LinkedIn changes its layout, rows come back as
erroruntil the Actor is updated; report it in the Issues tab.
FAQ
Do I need a LinkedIn account, cookies or a proxy? No. The Actor reads the public company pages LinkedIn shows to anonymous visitors; the datacenter proxy it uses is included in the price.
Is it legal to scrape LinkedIn company pages? It collects only company information LinkedIn publishes to visitors who are not signed in, and no member data. You are responsible for how you use the data; read the notice below and LinkedIn's terms.
Can an AI agent call it? Yes. With no input at all it returns 6 companies in seconds. Agents can pass company URLs, slugs, ids or names as plain strings, and every row says whether it is data (ok), an empty answer (not_found) or a failure (error).
How fresh is the data? Every run reads LinkedIn live; nothing is cached.
Why did I get fewer rows than Maximum results? You gave fewer companies, several inputs led to the same company page (it is returned once), or the run's charge limit was reached. The run log says which.
Related Actors
- LinkedIn Jobs Scraper - use it for the job postings themselves: title, location, salary, seniority and the full description, filtered by company, keyword and date.
- LinkedIn Jobs Scraper — Hiring Leads with Emails - use it when you need hiring-manager contact emails for companies that are hiring.
- Companies House Scraper - use it to verify a UK company's legal status, incorporation date, registered office and SIC codes.
- USPTO Trademark Scraper - use it to see which US trademarks a company or brand owns, with status and filing dates.
Legal and data-protection notice
This Actor extracts only company information that LinkedIn publishes to visitors who are not signed in. It does not log in, does not work around access controls, and does not extract member data such as names, profile links, photos, e-mail addresses or phone numbers; the "Employees at" block and company posts on the page are skipped. Company descriptions are written by the companies themselves. Personal data is protected by the GDPR in the European Union and by other laws worldwide, so do not use any personal data without a legitimate reason. You are responsible for complying with LinkedIn's terms of service and applicable law when you use the extracted data.
This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by LinkedIn Corporation. LinkedIn is a trademark of LinkedIn Corporation; all trademarks belong to their respective owners.