LinkedIn Company Scraper — Bulk Company Data, No Cookies
Pricing
from $1.80 / 1,000 company scrapeds
LinkedIn Company Scraper — Bulk Company Data, No Cookies
Get LinkedIn company data in bulk from URLs, slugs or names, with no login or cookies: website, industry, size, employee and follower counts, company ID, tagline, all office locations, specialties and similar companies. Handles many renamed companies. Pay only for companies delivered.
Pricing
from $1.80 / 1,000 company scrapeds
Rating
5.0
(1)
Developer
Automation Lab
Maintained by CommunityActor stats
11
Bookmarked
1.1K
Total users
262
Monthly active users
a day ago
Last modified
Categories
Features
Share
What does LinkedIn Company Scraper do?
LinkedIn Company Scraper extracts company profile data from LinkedIn company pages in bulk. Get name, website, industry, company size, employee count, follower count, LinkedIn company ID, tagline, headquarters address, every office location, founded year, specialties, similar companies, affiliated pages and logo — all from publicly available company pages.
No login, no cookies, no LinkedIn account and no proxy setup. This scraper uses HTTP requests (no browser) and handles proxy routing internally. Many old URLs of renamed companies still work, and the row tells you the company's current URL. You pay only when a run returns at least one company.
Try it now with an exact company URL/slug, or use the optional companyNames input for company name resolution when you do not know the slug. Name-based results retain the submitted name, resolved LinkedIn URL, resolution confidence, and source so you can audit every match. Ambiguous names are skipped rather than guessed.
Build three AI prospecting workflows with live company data
Use the structured output as current context for an AI agent, CRM workflow, or account-scoring pipeline:
- Deep account research: combine industry, company size, headquarters, specialties, follower count, and website data to brief a sales rep or qualify a target account.
- Prospect list building: pass the company into LinkedIn Company Employees Scraper, enrich selected profile URLs with LinkedIn Profile Scraper, then use the company website with Website Contact Finder.
- Trigger-based prospecting: find recent U.S. private-funding disclosures with Company Funding Tracker, then enrich the company here before prioritizing accounts and contacts.
These Actors return public company, profile, filing, and website signals. Your scoring or AI step decides whether a company matches your ICP; the Actors do not guarantee contact details or buying intent.
What you get:
- Over 25 data fields per company, including company ID, all office locations and similar companies
- Renamed companies are handled: many old URLs still return the company, with its current URL in
canonicalUrl. From December 22, 2026 a stronger route also opens the rest, and pages moved to/school/ - A clear result for every run: the status message says how many companies you got out of how many you asked for, and why any are missing
- No charge without data: wrong slugs, deleted pages and pages that could not be loaded cost nothing
- Accepts full and regional LinkedIn URLs and simple slugs as the authoritative input path
- Optionally resolves
companyNamesthrough anonymous public search, with auditable resolution confidence and source
Use the website field for contact discovery
LinkedIn company pages often include the company website. Use that website field as the bridge from company enrichment to outreach preparation: send domains to Website Contact Finder, enrich with public emails/phones/socials, then verify email safety with Bulk Email MX Verifier and Bulk SMTP Email Verifier.
If your lead source is LinkedIn post engagement, use this actor to enrich each identified company first, then pass the domain into Website Contact Finder and email verification before outreach.
Build a cold-outreach lead workflow on Apify
Use this actor as one step in a scrape → enrich → verify → export workflow:
- Source B2B accounts or contacts with LinkedIn Company Employees Scraper, LinkedIn Company Scraper, Clutch.co Scraper, Yellow Pages Scraper, YellowPages Canada Business Scraper, or Substack Scraper.
- Find public contact signals with Website Contact Finder or Social Media Profile Finder when you have company domains/websites.
- Clean the list before outreach with Bulk Email MX Verifier for fast syntax/MX/disposable/role-risk screening, then Bulk SMTP Email Verifier when you need deeper mailbox and catch-all checks.
- Export to your outreach stack as CSV/Excel/JSON for Instantly, HubSpot, Salesforce, Pipedrive, Airtable, Make, Zapier, or n8n.
Use only public/business contact data and comply with CAN-SPAM, GDPR, and your outreach platform's rules. Prefer company emails over personal addresses, filter role-based/risky emails when needed, and do not send to invalid or unverified addresses.
Who is LinkedIn Company Scraper for?
Sales & Business Development teams
- Build targeted prospect lists with company size, industry, and headquarters data
- Enrich your CRM with LinkedIn company data at scale
- Identify companies by size range and location for territory mapping
Market Researchers & Analysts
- Track competitor company profiles and employee counts over time
- Analyze industry distribution and company sizes across a segment
- Collect company descriptions and specialties for competitive intelligence
Recruiters & HR Professionals
- Research target companies before outreach
- Identify company headquarters locations and sizes for hiring campaigns
- Track follower growth as a proxy for employer brand strength
Developers & Data Engineers
- Integrate LinkedIn company data into ETL pipelines via the Apify API
- Automate company profile enrichment for your application
- Feed structured company data to AI agents via MCP
Why use LinkedIn Company Scraper?
- No login or API key required — scrapes public company pages without authentication
- No proxy configuration required — the Actor handles Apify residential proxy routing internally
- Over 25 structured fields including company ID, address components, office locations, employee count, specialties and similar companies
- Lookalike lists —
similarCompaniesgives you related companies to scrape next, from the same page and at no extra cost - Fast — plain HTTP requests, no browser
- Flexible input — accepts full or regional LinkedIn URLs, company slugs, or optional company names when the slug is unknown
- Auditable name matching — name-resolved rows include
inputCompanyName,resolutionConfidence, andresolutionSource; ambiguous results are skipped - API access — integrate with 5,000+ apps via Zapier, Make, and the Apify API
- Scheduling — set up recurring runs to track company profile changes
- Export — download results as JSON, CSV, or Excel
What data can you extract?
Each company profile yields these fields. A field is left out when the company has not filled it in on LinkedIn.
| Category | Fields |
|---|---|
| 🏢 Company Info | name, tagline, description, industry, companyType, companySize |
| 🔢 Metrics | employeeCount, followerCount, foundedYear, companySizeMin, companySizeMax |
| 📍 Location | headquarters, street, city, state, country, postalCode, locations (every office, with the primary one marked) |
| 🌐 Online | linkedinUrl, canonicalUrl, universalName, companyId, website, logoUrl |
| 🏷️ Tags | specialties (array) |
| 🔗 Related | similarCompanies, affiliatedPages (name, LinkedIn URL, industry, location) |
Name lookups also add inputCompanyName, resolutionConfidence and resolutionSource. Every row has scrapedAt.
How much does it cost to scrape LinkedIn companies?
This Actor uses pay-per-event pricing — you pay only for what you scrape. No monthly subscription. All platform costs are included.
| Apify pricing tier | FREE | BRONZE | SILVER | GOLD | PLATINUM | DIAMOND |
|---|---|---|---|---|---|---|
| Per company | $0.00345 | $0.003 | $0.00234 | $0.0018 | $0.0012 | $0.00084 |
A one-time $0.005 start fee applies per run, charged with the first company it returns. A run that returns no companies costs nothing.
From November 20, 2026 the start fee drops to $0.001 and the per-company price becomes FREE $0.003, BRONZE $0.003, SILVER $0.0027, GOLD, PLATINUM and DIAMOND $0.0024.
Planned from December 22, 2026: a new blocked page recovered charge of FREE $0.001, BRONZE $0.001, SILVER $0.0009, GOLD, PLATINUM and DIAMOND $0.0008, on top of the per-company price. It applies only to a company page that LinkedIn blocks on ordinary requests and that a premium proxy opened, and only when that company is saved. Ordinary companies never pay it. Until then those blocked pages are not retrieved and cost nothing. Apify notifies users of the exact date.
Computed cost formula: multiply the number of successfully scraped companies by your tier's live per-company charge, then add the one-time run-start charge. This formula is an example calculation, not an additional Actor price.
Example runtimes: a single company usually takes about 4 seconds, and the default concurrency handles about 80–120 companies in 5 minutes.
Apify plan credits can change. Check your current plan allowance in Console before estimating how many profiles the included credits cover.
How to scrape LinkedIn company profiles
- Go to the LinkedIn Company Scraper page on Apify Store
- Click Try for free to open the actor in Apify Console
- Add exact targets in Company URLs or Slugs, or add names such as
Goldman Sachsunder Company Names to Resolve when you do not know the slug. Exact URLs/slugs are processed first. - Review name-resolved rows using
inputCompanyName,resolutionConfidence, andresolutionSource; ambiguous names are skipped rather than guessed. - Set Max Companies to control the combined number of exact and resolved profiles to scrape. Optionally adjust Max Concurrency (default 3, maximum 10) to balance batch speed and rate-limit pressure.
- Click Start and wait for the run to finish
- Download your data as JSON, CSV, or Excel from the Dataset tab
Example input — Tech companies:
{"companyUrls": ["google", "microsoft", "stripe", "apple", "meta"],"maxCompanies": 5,"maxConcurrency": 3}
Example input — Full URLs:
{"companyUrls": ["https://www.linkedin.com/company/netflix/","https://www.linkedin.com/company/spotify/","https://www.linkedin.com/company/airbnb/"],"maxCompanies": 10}
Example input — company names when slugs are unknown:
{"companyNames": ["Goldman Sachs", "Boston Consulting Group"],"maxCompanies": 10}
Company name resolution is best-effort and intentionally conservative. Verify resolutionConfidence and linkedinUrl before using resolved records in an automated workflow.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
🏢 Company URLs or Slugs (companyUrls) | string[] | [] | Exact LinkedIn company page URLs or slugs. This authoritative path is processed first. |
🔎 Company Names to Resolve (companyNames) | string[] | [] | Optional names resolved through anonymous public search. Ambiguous matches are skipped. |
📊 Max Companies (maxCompanies) | integer | 1000 | Maximum combined number of exact and resolved companies to scrape (up to 10,000). If your list is longer, the status message says how many were left out. |
⚡ Max Concurrency (maxConcurrency) | integer | 3 | Company pages processed at once (minimum 1, maximum 10). Results are still written in input order. |
Provide at least one entry in companyUrls or companyNames. Exact pages are deduplicated before scraping, and successful rows keep deterministic input order even when requests finish out of order.
Output example
{"name": "Stripe","linkedinUrl": "https://www.linkedin.com/company/stripe","canonicalUrl": "https://www.linkedin.com/company/stripe","universalName": "stripe","companyId": "2135371","tagline": "Help increase the GDP of the internet.","website": "https://stripe.com","description": "Stripe builds programmable financial services...","industry": "Technology, Information and Internet","companyType": "Privately Held","companySize": "5,001-10,000 employees","companySizeMin": 5001,"companySizeMax": 10000,"employeeCount": 14490,"followerCount": 1326322,"foundedYear": 2010,"headquarters": "South San Francisco, California","street": "354 Oyster Point Blvd","city": "South San Francisco","state": "California","country": "US","postalCode": "94080","locations": [{ "address": "354 Oyster Point Blvd, South San Francisco, California 94080, US", "isPrimary": true },{ "address": "1 Wilton Park, Wilton Terrace, Dublin, County Dublin D02 FX04, IE", "isPrimary": false }],"specialties": [],"similarCompanies": [{ "name": "Atlassian", "linkedinUrl": "https://www.linkedin.com/company/atlassian", "industry": "Software Development", "location": "Sydney, NSW" }],"affiliatedPages": [{ "name": "Stripe Partner Ecosystem", "linkedinUrl": "https://www.linkedin.com/showcase/stripe-partner-ecosystem", "industry": "Internet Publishing", "location": "South San Francisco, California" }],"logoUrl": "https://media.licdn.com/dms/image/v2/...","inputCompanyName": "Stripe","resolutionConfidence": "high","resolutionSource": "duckduckgo","scrapedAt": "2026-03-18T22:09:22.120Z"}
Tips for best results
- Start small — test with 3-5 companies first to verify the data matches your needs
- Use slugs — they're shorter and easier to manage than full URLs. Find the slug in the company's LinkedIn URL:
linkedin.com/company/SLUG - Check slug accuracy — if the status message says a company was not found, the slug might be different from what you expect. Use
companyNamesto attempt a conservative match, or visit the company's LinkedIn page to confirm the exact slug - Review resolved matches — company name resolution does not guarantee the intended company for ambiguous names. Check the resolved URL and resolution confidence; no employee, post, or personal contact data is extracted by
companyNames - Schedule runs — set up daily or weekly runs to track changes in employee count, follower count, or company description
- Combine with other scrapers — use company names from this scraper as input for job board scrapers or review scrapers
Integrations
- LinkedIn Company Scraper → Google Sheets: Automatically export company profiles to a spreadsheet for team collaboration and filtering
- LinkedIn Company Scraper → Slack/Discord: Get notified when new company data is available after a scheduled run
- LinkedIn Company Scraper → Make/Zapier: Trigger CRM updates when employee counts or company sizes change
- LinkedIn Company Scraper → HubSpot/Salesforce: Enrich account records with LinkedIn company data
- Scheduled runs: Track competitor employee growth and follower trends over time
- Webhooks: Process company data in real-time as soon as a run completes
API usage
Use the Apify API examples below to start runs, pass company slugs or URLs, and download the resulting dataset from your own scripts or workflows.
Using the Apify API
Node.js:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('automation-lab/linkedin-company-scraper').call({companyUrls: ['google', 'stripe', 'apify'],maxCompanies: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('automation-lab/linkedin-company-scraper').call(run_input={'companyUrls': ['google', 'stripe', 'apify'],'maxCompanies': 10,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL:
curl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-company-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"companyUrls": ["google", "stripe", "apify"], "maxCompanies": 10}'
Use with AI agents via MCP
LinkedIn Company Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).
Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:
Setup for Claude Code
$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/linkedin-company-scraper"
Setup for Claude Desktop, Cursor, or VS Code
Add this to your MCP config file:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/linkedin-company-scraper"}}}
Your AI assistant will use OAuth to authenticate with your Apify account on first use.
Example prompts
Once connected, try asking your AI assistant:
- "Use automation-lab/linkedin-company-scraper to get company info for Google, Microsoft, and Apple"
- "Scrape LinkedIn profiles for the top 10 fintech companies and export to a spreadsheet"
- "Compare employee counts of Stripe, Square, and PayPal using the LinkedIn company scraper"
Learn more in the Apify MCP documentation.
Is it legal to scrape LinkedIn?
This scraper only accesses publicly available LinkedIn company pages — the same data anyone can see without logging in. It does not bypass any authentication, access private data, or violate LinkedIn's terms for logged-in users.
Web scraping of public data is generally legal based on the US Court of Appeals ruling in hiQ Labs v. LinkedIn and similar precedents. However, always ensure your use case complies with applicable laws, including GDPR for European data.
Apify provides tools for ethical data collection. For more guidance, see Apify's web scraping legality guide.
FAQ
How fast is the LinkedIn Company Scraper?
Company pages are scraped in a bounded parallel pool. The default maxConcurrency of 3 improves batch throughput while remaining conservative; each company is written to the dataset as soon as it and every earlier company have finished, keeping the original input order. You can choose 1–10 based on batch size and rate-limit conditions.
How much does it cost to scrape 1,000 LinkedIn companies? At the BRONZE tier: $3.00 for 1,000 companies plus a $0.005 start fee per run that returns data. FREE-tier users pay $3.45 per 1,000 companies plus the same start fee.
How is this different from LinkedIn's official API? LinkedIn's Marketing API requires company admin access and OAuth approval, limiting what data you can access. This scraper extracts public profile data directly from company pages without any API key or approval process.
What if a company was renamed, or a URL in my list is old?
Usually it still works. LinkedIn hides many old company URLs from plain requests, and the Actor opens most of them with a second attempt at no extra cost. A page that stays blocked is reported in the status message as blocked by LinkedIn and costs nothing; from December 22, 2026 a premium route is planned to open those too, for the extra charge described under pricing. linkedinUrl keeps the URL you sent, and canonicalUrl and universalName give the company's current one, so you can update your list. companyId stays the same through renames.
Why are some companies not found?
The page was deleted, or the slug is wrong. These cost nothing, and the status message counts them. LinkedIn company slugs aren't always intuitive. For example, Goldman Sachs is goldman-sachs, not goldmansachs. You can submit the company under companyNames for best-effort company name resolution, or visit its LinkedIn page to confirm the exact slug.
Can I use numeric company IDs like linkedin.com/company/1441?
No. LinkedIn shows numeric company ID pages only to logged-in users, so this no-login scraper cannot read them. Use the company page URL with its name instead, for example linkedin.com/company/google. Numeric IDs are skipped quickly, are not charged, and the run's status message lists how many there were. Each row does give you the numeric ID in companyId. Person profile URLs (linkedin.com/in/...) are not company pages and are skipped too.
How reliable is company name resolution?
Names are looked up and scraped in the same parallel pool as company pages (see maxConcurrency), so long name lists finish much faster than one lookup at a time. Name lookups are slower than exact URLs; for lists of more than about 50 names, increase the run timeout. It uses anonymous public search and only accepts a strong, unambiguous LinkedIn company-page match. Each resolved row includes the original input, resolved URL, resolution confidence, and source. Ambiguous or unresolved names are logged and skipped rather than guessed. This workflow enriches company profiles only; it does not extract employees, posts, or personal contact details.
Why are some fields empty or null? Not all companies fill out every field on their LinkedIn profile. For example, some companies don't list their founded year, specialties, or full address. The scraper returns all available data.
Can I scrape thousands of companies in one run?
Yes, up to maxCompanies (10,000 at most). LinkedIn may occasionally return rate-limit or anti-bot responses (429/999), so the Actor keeps retries sequential per company and rotates proxy identity between attempts. Start with the default concurrency of 3; lower it for repeated rate-limit responses or split very large workloads into multiple runs.
What happens if my run is about to time out?
The default run timeout is 1 hour, which fits roughly 1,000–1,400 companies at the default concurrency. Results are saved as they are scraped, so nothing already scraped is lost. When the timeout is close, the Actor stops starting new companies and saves everything scraped so far. The run is then marked as failed, so API calls, schedules and integrations can tell that the list was not finished. Its status message says how many companies were scraped, unfinished or not started. The RUN_SUMMARY record in the run's key-value store lists the same counts. For bigger lists, increase the run timeout or split the list into several runs; you are only charged for companies that were scraped.
Does the Actor collect error reports? When a run or an operation fails, the Actor sends sanitized diagnostic input, the error details and the Actor, build and run IDs to our private GlitchTip error-tracking service so we can fix problems. Secret fields and URL query strings are removed, and reports are kept for 30 days.
How do I scrape LinkedIn company data without a LinkedIn API key?
LinkedIn's official Marketing API requires OAuth approval, a verified app, and company admin access — and it only returns data for companies where you have admin permissions. This scraper takes a different approach: it accesses publicly available company pages directly via HTTP, the same data anyone can see by visiting a LinkedIn company page in their browser. No API key, no OAuth, no approval process. You just paste company URLs or slugs (the slug is the identifier in the URL, like google in linkedin.com/company/google) and get structured data back immediately. This makes it suitable for competitive research, prospect enrichment, and market analysis at any scale.
How can I use LinkedIn company data for B2B lead generation?
LinkedIn company profiles contain the exact firmographic data that B2B sales teams need for lead qualification: industry, company size range, employee count, headquarters location, and website. A typical workflow is: (1) compile a list of target company slugs from LinkedIn search or a prospect database, (2) run the scraper to enrich all profiles in a single batch, (3) filter by companySize, industry, or country to match your ideal customer profile, (4) export to CSV and import into your CRM. At $0.003 per company on the Starter plan, enriching 1,000 prospects costs $3.00 — a fraction of what data enrichment services charge for the same information.
How often does LinkedIn company data change, and how do I track it?
Employee count is the most dynamic field — companies in growth mode can add hundreds of employees per quarter. Follower count grows steadily for companies actively posting content. Founded year, industry, headquarters, and company type rarely change. To track changes, set up a scheduled Apify run with a weekly or monthly cadence and pipe results to Google Sheets using the append mode. Compare the latest employeeCount and followerCount against previous snapshots to identify fast-growing companies — a useful signal for investors, recruiters targeting growth-stage companies, or sales teams timing outreach.
What is the difference between LinkedIn company size and employee count?
LinkedIn provides two distinct size metrics. companySize is a self-reported band (e.g., "201-500 employees", "1,001-5,000 employees") that the company sets on their profile — useful for filtering but imprecise. employeeCount is a real-time count of LinkedIn members who list that company as their current employer — more accurate and useful for tracking headcount changes over time. companySizeMin and companySizeMax give the band as numbers. For market sizing or hiring signal analysis, employeeCount is the more reliable metric; for quick categorical filters (SMB vs. enterprise), companySize bands are more convenient.
Can I scrape LinkedIn company specialties and use them for market segmentation?
Yes. The specialties field is an array of keywords the company uses to describe their focus areas (e.g., ["machine learning", "cloud infrastructure", "enterprise SaaS"]). These are self-tagged and vary in quality, but across a large dataset they're useful for clustering companies by technology stack, service type, or market focus. You can extract specialties for a list of companies in a sector and use frequency analysis to identify the most common focus areas, or filter for companies that include specific terms to build targeted prospect lists. The description field provides a longer free-text summary that can be processed with keyword matching or LLM-based classification for deeper segmentation.
Related actors
Use these related actors when you need company leads, reviews, jobs, news, or enrichment data alongside LinkedIn company profiles.
Other business data scrapers
- LinkedIn Company Employees Scraper — Find the people who work at a company
- LinkedIn Company Posts Scraper — Get a company's recent posts and engagement
- LinkedIn Jobs Scraper — Scrape job listings to spot hiring signals
- Indeed Scraper — Scrape job listings with company info, salaries, and descriptions
- Trustpilot Scraper — Extract company reviews and ratings from Trustpilot
- Google News Scraper — Scrape news articles by search query or topic
Server API: get one LinkedIn company over HTTP
LinkedIn Company Scraper is also a Server Actor. Besides normal runs, it answers short HTTP requests directly, without starting a run for each lookup. Copy the server URL from the Actor's Server tab (do not build it from the Actor name) and authenticate with your Apify token. Use normal Actor runs for lists of companies.
curl -sS "$SERVER_URL/company?url=https://www.linkedin.com/company/stripe/" -H "Authorization: Bearer $APIFY_TOKEN"curl -sS "$SERVER_URL/company?name=HubSpot" -H "Authorization: Bearer $APIFY_TOKEN"
| Method and path | Input | Output and charge |
|---|---|---|
GET / | None | ready: true, the routes and limits; no scraping or charge |
GET /company | Query url: a LinkedIn company page URL (regional hosts such as de.linkedin.com work) or a slug such as stripe; or query name: a company name (1–200 characters) resolved to its one unambiguous public LinkedIn page. Send url or name, not both | {ok,count,results} with one company record, the same as a normal run's dataset item (fields without a value are left out; name lookups add inputCompanyName, resolutionConfidence and resolutionSource); one Company scraped event (company-scraped); no start fee |
A company that is not found, an ambiguous name, a numeric company ID and a blocked page return an error and are free. Each request has a 60-second deadline and a 256 KiB response cap, and one server works on at most eight requests at once. Nothing is cached. Errors use { "ok": false, "error": { "code": "...", "message": "...", "retryable": false } }: 400 INVALID_URL or INVALID_INPUT; 402 spending limit; 404 COMPANY_NOT_FOUND or unknown route; 405 wrong method; 413 RESPONSE_TOO_LARGE; 422 LOGIN_REQUIRED (numeric company IDs are shown only after login); 502 BLOCKED, LINKEDIN_UNAVAILABLE, UPSTREAM_ERROR or charging failure; 503 server busy or stopping; 504 TIMEOUT. Failed requests are free. Retry only when retryable is true. The Server tab shows the full OpenAPI description.