LinkedIn Company Scraper - No Login, Bulk
Pricing
from $2.80 / 1,000 company scrapeds
LinkedIn Company Scraper - No Login, Bulk
Scrape public LinkedIn company & showcase pages without login or cookies. Firmographics, headcount, HQ, website, followers. HarvestAPI-compatible JSON. CSV/Sheet bulk. Pay per company from $2.80/1k (Gold).
Pricing
from $2.80 / 1,000 company scrapeds
Rating
0.0
(0)
Developer
Daniel Valev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
What does LinkedIn Company Scraper do?
LinkedIn Company Scraper is a LinkedIn company data API alternative for public LinkedIn company and showcase pages. Paste URLs or slugs — get structured firmographics from the same logged-out HTML a visitor sees: name, industry, size band, employees on LinkedIn, followers, HQ, website, logo, specialties, and more.
No LinkedIn login. No li_at cookie. No browser automation. Pure HTTP at 256 MB, with optional residential fallback when datacenter exits are blocked.
Output is compatible with harvestapi/linkedin-company so you can swap Actors without renaming CRM or warehouse columns. Extra provenance fields (input, redirectedFromSlug, websiteDomain, scrapedAt) are additive.
Try it free with the built-in sample (5 companies, no input required), or use the examples below.
Who is this LinkedIn company scraper for?
Sales, RevOps & ABM
- Enrich account lists with industry, headcount band, HQ, and website
- Build TAM lists from known
/company/URLs or slugs - Feed CRM, Clay, or outbound tools with consistent JSON
Market research & competitive intelligence
- Snapshot competitor firmographics at a point in time
- Compare size bands and follower counts across a sector
- Export CSV/Excel for decks and dashboards
Data engineering & AI pipelines
- HarvestAPI-shaped rows for warehouses and reverse ETL
- Schedule weekly refreshes via Apify; read
STATSfor fill-rate QA - Call from Apify API, webhooks, Make/Zapier, or MCP
Why use this scraper?
- Drop-in HarvestAPI shape — same core keys (
universalName,employeeCountRange,specialities, …) - Bulk input —
stringListplus CSV / Google Sheet viastartUrls - Pay only for unique companies returned — failed, blocked, 404, and duplicate rows are free
- Fast HTTP engine — no Playwright CU overhead for guest company pages
- Honest scope — company/showcase pages only; no fake phone or employee roster data
- Run telemetry —
STATSandFAILEDin the key-value store every run
How it compares
| This Actor | Typical Store LinkedIn company scrapers | |
|---|---|---|
| Login | Not required | Sometimes cookies / accounts |
| Output | HarvestAPI-compatible core | Often custom schemas |
| Transport | HTTP (256 MB) | Often browser-heavy |
| Bulk | CSV / Sheet + slug list | Often URL-only |
| Pricing | PPE from ~$2.80 / 1k (Gold) | Harvest from $3.00 / 1k; others vary |
| Name → URL search | Not in MVP (URLs/slugs only) | Some Actors include search |
If you already use harvestapi/linkedin-company, point the same downstream mapper at this dataset — shared field names, fewer migration surprises.
How to scrape LinkedIn company pages
- Create a free Apify account (or open this Actor in Console).
- Open LinkedIn Company Scraper.
- Add Companies — slugs (
stripe), full URLs, country subdomains (uk.linkedin.com/company/…), or showcase URLs. - Optionally add Start URLs from a CSV or Google Sheet (one company URL per row).
- Set Max companies and leave Residential fallback on if you hit authwalls at scale.
- Click Start. Download JSON, CSV, or Excel from the dataset — or pull via API.
- Inspect
STATS(bytes, fill rates) andFAILED(blocked / 404 inputs) in the run’s key-value store.
Tip: Run once with an empty input to verify health — the Actor scrapes five sample companies and states that in the status message.
What data can you extract?
| Category | Fields |
|---|---|
| Identity | id, universalName, linkedinUrl, name, tagline, logo |
| Firmographics | industries, companyType, description, foundedOn, specialities |
| Size & social | employeeCount, employeeCountRange, employeeCountRangeText, followerCount |
| Web & HQ | website, websiteDomain, locations (HQ + listed offices when present) |
| Media | logos, backgroundCovers |
| Provenance | input, redirectedFromSlug, scrapedAt |
| Guest-only gaps | phone (always null logged-out), fundingData (only if on guest page) |
Missing values are null (arrays empty). The Actor never invents employee rosters or phone numbers.
Output example
Cloud sample run 5ON0VYpTGxImbDxqJ (truncated):
{"id": "2135371","universalName": "stripe","linkedinUrl": "https://www.linkedin.com/company/stripe","name": "Stripe","tagline": "Help increase the GDP of the internet.","website": "https://stripe.com","logo": "https://media.licdn.com/dms/image/…/stripe_logo","foundedOn": { "year": 2010 },"employeeCount": 16622,"employeeCountRange": { "start": 5001, "end": 10000 },"followerCount": 1748499,"description": "Stripe builds programmable financial services…","companyType": "Privately Held","locations": [{"country": "US","geographicArea": "California","city": "South San Francisco","line1": null,"headquarter": true,"description": "Headquarters"}],"specialities": ["Payments", "Billing", "Connect"],"industries": ["Technology, Information and Internet"],"phone": null,"input": "stripe","websiteDomain": "stripe.com","scrapedAt": "2026-10-05T16:45:02.000Z"}
Download the full dataset as JSON, CSV, Excel, HTML, or XML from the run page.
Input
See the Input tab in Console for the full form. Main fields:
| Field | Description |
|---|---|
companies | URLs or slugs (stripe, https://www.linkedin.com/company/shopify/, showcase URLs) |
startUrls | Bulk CSV / Google Sheet / pasted URLs (requestListSources) |
maxItems | Max unique companies returned and charged (default 1000) |
maxConcurrency | Parallel requests, 1–10 (default 5) |
proxyConfiguration | Apify DATACENTER by default |
residentialFallback | One RESIDENTIAL (US) retry after DC blocks, capped per run |
includeFailedRows | Optional non-charged { input, error, reason } rows in the dataset |
Example input
{"companies": ["stripe","https://www.linkedin.com/company/shopify/","https://uk.linkedin.com/company/revolut/"],"startUrls": [],"maxItems": 100,"maxConcurrency": 5,"residentialFallback": true}
How much does it cost to scrape LinkedIn companies?
Pay per event. You pay only for the company event — one charge per unique company row written to the dataset.
| Plan | Per 1,000 companies | vs HarvestAPI (~$3–4 / 1k) |
|---|---|---|
| Free / Bronze | $3.75 | Slightly below $4 entry tier |
| Silver | $3.25 | Below $3.50 |
| Gold | $2.80 | Below $3.00 |
Not charged: failed inputs, HTTP 404, blocked/authwall pages, duplicates, optional failed-row dataset entries.
No custom start fee in code. Keep Apify’s synthetic apify-actor-start at the default; disable apify-default-dataset-item in Console to avoid double-charging.
With usage included in PPE (recommended), users see one predictable price per company — similar to top Store LinkedIn company Actors.
Field fill rates (cloud baseline)
From health-check run 5ON0VYpTGxImbDxqJ — 5 sample companies, 256 MB, ~197 s, ~369 KB avg HTML per success (STATS.avgBytesPerSuccess):
| Field | Fill % |
|---|---|
| id, name, website, logo, employeeCount, employeeCountRange, followerCount, description, companyType, locations, industries | 100 |
| tagline, foundedOn, specialities | 80 |
Sparse or non-English pages may leave optional fields empty — check STATS.fieldFillRates on your own target list.
Honest limits
- Logged-out company/showcase pages only — not
/company/…/about/(guest redirect to login), not people, posts, jobs, or employee lists phoneis alwaysnullon guest pages- No company-name → URL resolver in MVP — provide URLs or slugs (CSV/Sheet friendly); resolver hook is planned without breaking the input pipeline
- Website may be a tracking or jobs URL as listed on LinkedIn
- LinkedIn may block (HTTP 999 / authwall) — session rotation + capped residential fallback; see
FAILEDfor reasons redirectedFromSlugflags when LinkedIn redirects to a different canonical slug
Migrate from harvestapi/linkedin-company
Core columns align: id, universalName, linkedinUrl, name, employeeCount, employeeCountRange, followerCount, locations, specialities, industries, etc.
Map the same ETL; read extra fields only if you need audit (input, scrapedAt) or redirects (redirectedFromSlug).
Not supported here (yet): bulk search by company name (searches on Harvest) — use URLs/slugs or pre-resolve names elsewhere.
API, CLI, and MCP
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('valev-lab/linkedin-company-scraper').call({companies: ['stripe', 'https://www.linkedin.com/company/shopify/'],maxItems: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
CLI
apify call valev-lab/linkedin-company-scraper --input '{"companies": ["stripe", "shopify"],"maxItems": 2}'
MCP — add this Actor to your Apify MCP tools, then run with the same JSON input. See the API tab in Console for OpenAPI and hosted MCP URL.
Each run also stores STATS and FAILED in the default key-value store (not billed).
FAQ
Do I need a LinkedIn account or cookie?
No. The Actor reads only public pages LinkedIn serves to logged-out visitors. Your account is never used.
Is this the same schema as HarvestAPI LinkedIn Company?
The core firmographic keys match harvestapi/linkedin-company. Extra provenance keys are documented above and do not replace Harvest fields.
Why is phone always null?
Guest company pages do not expose phone numbers in the HTML this Actor parses. We do not guess.
What happens when LinkedIn blocks the request?
The session rotates (datacenter, then optional residential). Persistent failures are listed in FAILED with reasons such as blocked or authwall. Those rows are not charged.
Can I scrape from a CSV?
Yes. Use Start URLs with a CSV or Google Sheet, or paste URLs into Companies.
Responsible use
This Actor reads public logged-out HTML only. It does not log in, solve CAPTCHAs, or bypass authwalls. LinkedIn’s User Agreement and robots.txt restrict automated access — you are responsible for lawful, compliant use in your jurisdiction.
Our Actors extract only what is published on public company pages. Results may include business contact URLs LinkedIn chooses to display; handle exports under GDPR and applicable privacy rules when required.
Disclaimer: This tool is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn® is a registered trademark of LinkedIn Corporation.
Support
Open an issue on the Actor’s Issues tab in Apify Console with the run ID and (if safe) a sample company URL that failed.
Changelog
1.0.0
- MVP: URL/slug/showcase input, logged-out HTTP scrape, HarvestAPI-compatible output, PPE
companyevent,STATS/FAILEDtelemetry - Verified cloud health check run
5ON0VYpTGxImbDxqJ