LinkedIn Company Scraper — Public Pages, No Login avatar

LinkedIn Company Scraper — Public Pages, No Login

Pricing

$1.50 / 1,000 per company returneds

Go to Apify Store
LinkedIn Company Scraper — Public Pages, No Login

LinkedIn Company Scraper — Public Pages, No Login

Bulk-scrape public logged-out LinkedIn company pages: industry, company size band, HQ and postal address, founded year, specialties, website, company type, followers and employees-on-LinkedIn. Companies, not people. No account and no cookie. $1.50 per 1,000 companies — the cheapest in the lane.

Pricing

$1.50 / 1,000 per company returneds

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Paste LinkedIn company URLs or slugs, get structured company records back: companyName, industry, companySize, employeesOnLinkedIn, headquarters, streetAddress, addressLocality, addressRegion, postalCode, addressCountry, foundedYear, specialties, website, companyType, followerCount, tagline, description, logoUrl and the stable numeric companyId.

Three things define this Actor, and they are the first thing on the page on purpose:

  1. It reads only the public, logged-out company page. Exactly what a signed-out browser is served at https://www.linkedin.com/company/<slug>/. There is no LinkedIn account, no member cookie, no li_at, no session token anywhere in this Actor — not as a required field, not as an optional field, not as a documented "advanced" path. Nothing of yours can be rate-limited, restricted or banned, because nothing of yours is used.
  2. It returns companies, not people. No employee names, no profiles, no staff rosters. companySize is the published band LinkedIn renders (1,001-5,000 employees). LinkedIn localises to the proxy exit IP, so the band and industry occasionally come back in another language (11-50 працівників) — filter on the numeric companySizeMin / companySizeMax, never on the band string. employeesOnLinkedIn is the count LinkedIn shows a signed-out visitor ("View all 2,942 employees"). Those are two numbers. They are not a list of humans.
  3. It does not search or discover LinkedIn. You supply the companies. A multi-word company name is rejected by the input, because resolving a name means running LinkedIn search — the auth-gated part of the site, and the part that carries the real risk. Note that a one-word entry cannot be told apart from a slug and is fetched as one: typing twilio gets you whoever holds the twilio vanity slug, which may not be the company you meant. Paste the URL from the company's own LinkedIn page when you want certainty.
{
"companies": [
"stripe",
"https://www.linkedin.com/company/shopify/",
"hubspot",
"notionhq",
"figma"
]
}

Click Try for free and hit Start — that block is literally the input this Actor ships with. It returned 5 of 5 companies and cost $0.0075.

$0.0015 per company returned — $1.50 per 1,000. A company that 404s, that fails every proxy rung, or that duplicates a company already in your results is never billed.


Read this before you buy rows

Five things that would otherwise turn into a refund request.

  1. LinkedIn's robots.txt disallows this path, and every other path. Quoted verbatim below. It is not ambiguous and this page does not pretend otherwise — read it and make your own call before you run anything.
  2. foundedYear is present on about 56% of companies and specialties on about 82% — and foundedYear collapses to 26% on a list of mega-caps (see the footnote below the table). These are optional fields a company fills in or does not. The full measured fill table is further down — it is sorted so the gaps are impossible to miss.
  3. website is whatever the company typed into LinkedIn's Website box, not their corporate domain. Figma's currently reads https://figma.bot/Config2026Recap — a campaign link. Most companies put their homepage there; some do not. Same for description: it is the About text as written, and some companies use it for a campaign line rather than a company blurb.
  4. employeesOnLinkedIn and companySize disagree, and both are correct. companySize is the self-declared band; employeesOnLinkedIn is how many LinkedIn members currently list that company. Anthropic reads 501-1,000 employees with 5,700 members. Use the band for firmographics and the count for reach.
  5. A retired vanity slug follows LinkedIn's redirect — check what it lands on. When LinkedIn 301s a slug and then answers HTTP 999, this Actor re-fetches under the slug it was sent to and records the original in redirectedFromSlug. Sometimes that is a true rename (/company/mailchimpintuitmailchimp, /company/monzo-bankmonzo). Sometimes the vanity slug now belongs to an unrelated company: /company/gitlab lands on domifyio ("Domify", 2-10 employees), /company/basecamp on basecamppt (a Portuguese agency), /company/uber on ubercreativedigitalagency. Any row with a non-null redirectedFromSlug is billed and should be reviewed before you trust it — filter on that field. Use the exact slug from the company's own LinkedIn URL to avoid this entirely. A slug that simply does not exist returns a logged 404 and no charge.

robots.txt — the actual lines, unedited

Fetched from https://www.linkedin.com/robots.txt on 2026-08-15 (HTTP 200, 120,190 bytes). The file contains one User-agent: * group. It is the last group in the file, and this is it in full:

User-agent: *
Disallow: /
# Notice: If you would like to crawl LinkedIn,
# please email whitelist-crawl@linkedin.com to apply
# for white listing.

Disallow: / covers /company/<slug>/, the only path this Actor requests. That User-agent: * group contains no Allow: line at all, so nothing carves the path back out. The file's only company-specific rules are Disallow: /companyDir*, Disallow: /pages-extensions/FollowCompany* and a single Allow: /companyDir* — all of them sit in other, named crawler groups, none of them names a path this Actor touches, and none of them applies to a generic client, which falls into the catch-all group above.

So, stated plainly: this Actor requests a path that LinkedIn's robots.txt disallows for any crawler that is not on their whitelist. It fetches only pages LinkedIn serves publicly to a signed-out visitor, it does not log in, and it does not defeat any challenge — but it is not robots-compliant, and LinkedIn's User Agreement prohibits automated collection regardless of technical access. Whether that is acceptable is your decision, in your jurisdiction, for your use case. Do not run this if the answer is no.


What you get

One row per unique company. scrapedAt is a full UTC timestamp.

GroupFieldsExample
IdentitycompanyName, companyUrl, companySlug, companyId, inputSlug, redirectedFromSlugStripe · https://www.linkedin.com/company/stripe/ · 2135371
Positioningtagline, description, industryHelp increase the GDP of the internet. · Technology, Information and Internet
SizecompanySize, companySizeMin, companySizeMax, employeesOnLinkedIn5,001-10,000 employees · 5001 · 10000 · 17163
Locationheadquarters, streetAddress, addressLocality, addressRegion, postalCode, addressCountrySouth San Francisco, California · 354 Oyster Point Blvd · 94080 · US
FirmographicsfoundedYear, companyType, website, specialties, specialtiesCount2010 · Privately Held · https://stripe.com
ReachfollowerCount, logoUrl1,663,354

companySizeMin / companySizeMax are the band parsed into numbers so you can filter without string-matching (10,001+ employees gives min 10001, max null).

The dataset ships with a saved table viewCompanies — so you do not have to configure columns.


Field fill — measured on 66 live companies

Every company this Actor has returned on the Apify platform: 66 distinct companyIds across 55 runs, Apify datacenter proxies, 2026-08-15 → 2026-08-27. Sorted by fill, so the sparse fields are impossible to miss.

FieldFillNotes
companyName100%
companyUrl / companySlug100%
companyId100%the numeric urn:li:organization: id — stable across renames
logoUrl100%200×200 CDN URL
industry100%LinkedIn's own taxonomy string
companySize / companySizeMin100%the published band
employeesOnLinkedIn98.5%members listing this employer
website98.5%see caveat 3 above
companyType98.5%Public Company, Privately Held, Nonprofit, …
followerCount98.5%
description97.0%
addressCountry95.5%
headquarters93.9%city + region as LinkedIn prints it
addressLocality93.9%
specialties81.8%averaged 9.4 entries where present
streetAddress80.3%
postalCode78.8%
addressRegion77.3%
foundedYear56.1%optional field; many companies leave it blank
tagline53.0%the one-line strapline under the company name
companySizeMax47.0%null for 10,001+ bands by definition

Uniqueness: companyId is unique in every dataset — 27/27, 27/27, 18/18 on the largest three runs. Nothing was double-billed.

Fill depends on company size — read this before you budget for the optional fields. The table above spans a mix of company sizes. The optional profile fields are the ones the biggest companies most often leave blank, so an enterprise-only list fills far thinner than that overall average. Measured on a 27-company mega-cap run (2026-08-19): foundedYear 25.9% (vs 56.1% overall) and tagline 14.8% (vs 53.0% overall). companySizeMax is null on 100% of them, because 10,001+ employees has no upper bound to extract. The always-present fields — name, id, url, logo, industry, size band, type, followers, employees-on-LinkedIn — are unaffected: 100% on that same mega-cap run.


How it works, and what it does not do

The signed-out company page server-renders everything above, in three places on the same document:

  • the About us <dl> — industry, size band, headquarters, type, founded, specialties, website;
  • a JSON-LD Organization node — description, slogan, the full postal address, logo, employee count;
  • the top card — name, tagline, follower count, and the employee count.

That is one HTTP GET per company on the happy path — up to four retries with a rotated session, plus one capped residential pass, when LinkedIn serves the sign-in wall instead. No browser, no Chromium, no JavaScript execution, no CAPTCHA solving, no challenge bypass — and no login, which is the point.

/company/<slug>/about/ is not used: for a signed-out visitor it 302s to /uas/login (verified 2026-08-15 on stripe, ibm and hubspot). Everything this Actor returns comes off the base page instead. If a page will not serve without signing in, the Actor logs it and returns nothing for that company rather than reaching for a credential.

Transport, measured through Apify proxies (not a home IP)

RungSampleResult
Apify DATACENTER, rotating session60 slugs queued, 2026-08-20 (runs 6CQI5yHkcVYszpaob, ieITTQwtuuYNNW5CF)every company attempted inside the run's time budget returned a row; the runs stopped on the wall clock at 29 and 18 of 60 attempted, not on blocks
Apify RESIDENTIAL, one sticky session per companybounded fallback only — never exercised on any billed run to date

Residential is not the default: it exists only as a bounded fallback for the day LinkedIn walls the shared datacenter pool, capped at max(3, 10% of your list) per run, and every run logs how much of the cap it used.


Pricing, and how it compares

$0.0015 per company returned. $1.50 per 1,000. Nothing else is charged — no run-start fee, no per-dataset-item fee.

Checked live against the Apify Store on 2026-08-15:

ActorPrice per company
This Actor$0.0015
datadoping/linkedin-company-scraper$0.00155
automation-lab/linkedin-company-scraper$0.00345 + $0.005 per run
harvestapi/linkedin-company (lane leader)$0.004 + run-start
data-slayer/linkedin-company-scraper$0.004 + run-start
unseenuser/LinkedIn-Company-Scraper$0.004
scraper-engine/linkedin-company-about-scraper$0.00499 + run-start
scrapeverse/linkedin-company-profile-scraper-pay-per-event$0.006 + run-start

An honest note on "no cookies": most of the company-detail Actors in this lane also run without a member cookie — it is table stakes here, not a unique feature, and you should discount anyone selling it as one (including this page). What is not table stakes is the rest of it: a published per-field fill table measured on 66 live companies, every redirect disclosed in redirectedFromSlug, de-duplication on the numeric company id before anything is billed, and the robots.txt above quoted in full rather than summarised.

Cookie-based tooling (browser extensions, PhantomBuster-style session hijacking) is a different category and does carry account risk. This Actor is not in that category.


Input

FieldWhat it does
companiesOne company per line: a slug (stripe), a full company or showcase URL, a country-subdomain URL (uk.linkedin.com/company/…), or the bare linkedin.com/company/x form.
startUrlsBulk path: paste many URLs, upload a .txt/.csv, or link a Google Sheet. Entries must be full LinkedIn company URLs. Merged with companies and de-duplicated.
proxyConfigurationLeave on the default (Apify datacenter + capped residential fallback).
requestConcurrencyDefault 5. Measured on the platform at this setting: 12 companies in 8.9 s (run Fd9jLQe6qMfI9gfpZ), 5 companies in 6.9 s.
requestDelayMsDefault 400 ms per worker.

Both input fields are merged and de-duplicated before any request is made, so pasting stripe and https://www.linkedin.com/company/stripe/ in the same run costs you one row, not two.

Output

Every company that returns is one dataset item, pushed and charged in the same call, so a charge cap can never leave you with unpaid rows.

If you start the Actor with no input at all, it scrapes the documented 5-company sample above so you can see the output shape, and says so in the run status — you are billed for those 5 rows and nothing else. If a run returns nothing (every company 404'd or every proxy rung was walled), it ends with a status message asking you to re-run, and nothing is billed.

Limits

  • Public company pages only. Anything a signed-out visitor cannot see is out of scope, permanently.
  • No employees, no people, no posts, no jobs, no follower lists.
  • No search, no discovery, no enumeration — you bring the companies.
  • Optional profile fields (specialties, foundedYear, streetAddress, tagline) are blank when the company left them blank. See the fill table.
  • LinkedIn's robots.txt disallows this path. See the section above; it is your call.