LinkedIn Company Scraper avatar

LinkedIn Company Scraper

Pricing

from $5.00 / 1,000 company profile delivereds

Go to Apify Store
LinkedIn Company Scraper

LinkedIn Company Scraper

LinkedIn Company Scraper turns company URLs, slugs or plain names into company facts with no cookies or login: industry, size, employees on LinkedIn, HQ, founded, type, website, specialties and followers. $0.005 per company delivered; not-found and mismatched rows are free.

Pricing

from $5.00 / 1,000 company profile delivereds

Rating

0.0

(0)

Developer

Agnes Maina

Agnes Maina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Run on Apify

LinkedIn Company Scraper: company data from a URL or a name, no login

LinkedIn Company Scraper turns a LinkedIn company URL, a slug or a plain company name into structured company facts: industry, size, headquarters, founded year, website, specialties, followers and employees on LinkedIn. No cookies, no login, and you pay $0.005 per company delivered, with not-found rows free.

What you get

One row per company you ask for. Every field below comes from the public LinkedIn company page.

FieldWhat it holds
nameCompany name as shown on LinkedIn
taglineThe company's own tagline
industryIndustry as LinkedIn lists it
companySizeSize band, for example 5,001-10,000
employeesOnLinkedInPeople on LinkedIn who list this company as their employer
headquartersHeadquarters as listed, or city and region from the page address
city, region, countryCodeHeadquarters split out, country as ISO 3166 two letters
foundedYear founded
companyTypePrivately Held, Public Company, Nonprofit and so on
specialtiesSpecialties list, null when LinkedIn shows none
websiteCompany website
followersLinkedIn followers
aboutThe About text
logoUrlLogo image URL
linkedinUrlThe company page that was read
slugThe company's LinkedIn URL name, handy as a dedupe key
inputWhat you typed, so you can join results back to your list
chargedtrue when this row was billed
reasonWhy the row was or was not billed
scrapedAtWhen the row was collected, ISO 8601

A RUN_SUMMARY record in the key-value store counts requested, delivered, charged, not found, blocked and name-mismatch rows for the run.

Try it in 30 seconds

  1. Open the Actor page and click Try for free.
  2. The input is prefilled with a URL, a slug and a company name. Keep them or paste your own list.
  3. Click Start. Rows show up in the Companies table as each page is read.

The Apify free plan gives you $5 of platform credit every month. At $0.005 per company that covers roughly 990 companies a month once the run-start fees are counted, with no credit card needed.

Example output

This is the Stripe row, parsed from the page saved on 2026-09-29 (the same page the test suite checks against):

{
"input": "stripe",
"linkedinUrl": "https://www.linkedin.com/company/stripe",
"slug": "stripe",
"name": "Stripe",
"tagline": "Help increase the GDP of the internet.",
"industry": "Technology, Information and Internet",
"companySize": "5,001-10,000",
"employeesOnLinkedIn": 16622,
"headquarters": "South San Francisco, California",
"city": "South San Francisco",
"region": "California",
"countryCode": "US",
"founded": 2010,
"companyType": "Privately Held",
"specialties": null,
"website": "https://stripe.com",
"followers": 1737436,
"about": "Stripe builds programmable financial services. Millions of companies...",
"logoUrl": "https://media.licdn.com/dms/image/v2/...",
"charged": true,
"reason": "company profile delivered",
"scrapedAt": "2026-09-29T13:02:14.637Z"
}

Typing the name Kenya Airways gives the same shape: slug kenya-airways, industry Airlines and Aviation, size 1,001-5,000, 8,706 employees on LinkedIn, founded 1977, country KE.

Pricing

Pay per event, two events:

EventPriceWhen
Actor start$0.005Once per run
Company$0.005Per company delivered with name, industry, size and location present

Worked example: a run of 1,000 companies that all resolve costs 1,000 x $0.005 + $0.005 = $5.00 + $0.005 = $5.005. If 40 of those companies have no LinkedIn page, you pay for 960, so $4.805.

You are not charged for a company when:

  • the page does not exist (reason: "company page not found")
  • the page loads but the facts block is missing, for example a login wall (reason: "missing name, industry, size, location" or the subset that was missing)
  • you typed a name and the page found belongs to a different company (reason: "name does not match page (...)")

Those rows still land in the dataset with charged: false, so you can see exactly what was tried. Set a spending limit on the run and the Actor stops cleanly when it is reached.

How this compares

Checked against the Apify Store on 2026-09-30. Prices are the free-tier per-company price from each Actor's current pricing; some competitors drop the price on paid Apify plans.

ActorPrice per companyLogin or cookies required?Accepts plain company names?Charges for not-found?
This Actor (agnes.developer.queen/linkedin-company-scraper)$0.005 (+ $0.005 per run)NoYes, mixed with URLs and slugsNo, free with a reason
harvestapi/linkedin-company$0.004 ($0.003 on Gold and up)NoYes, separate name search fieldNot stated
bebity/linkedin-premium-actor$0.003Not statedYes, as search termsNot stated for companies
riceman/linkedin-company-data-insights-scraper$0.02471 ($0.01563 on Gold and up)NoNo, URLs onlyNo, charges per company successfully scraped

This Actor is not the cheapest per row. What you get for the extra fraction of a cent: one input list that takes URLs, slugs and names together, a name check that refuses to bill you for the wrong company, and a reason on every free row.

Input

FieldTypeRequiredNotes
companiesarray of stringsYes1 to 1,000 entries per run. Each entry is a company URL, a slug or a company name.

Accepted forms:

  • URL: https://www.linkedin.com/company/stripe (country subdomains such as ke.linkedin.com work too)
  • Slug: stripe
  • Name: Kenya Airways, Procter & Gamble
{
"companies": [
"https://www.linkedin.com/company/stripe",
"asana",
"Kenya Airways"
]
}

How it works

  1. URLs and slugs go straight to the company page.
  2. A name is first turned into a likely slug (Kenya Airways becomes kenya-airways). If that page does not exist, or its name does not match what you typed, the Actor runs a Google search limited to linkedin.com/company and tries the first company slug it finds.
  3. Each page is fetched through a US residential proxy with a fresh session per attempt, up to 3 attempts.
  4. Facts are parsed from the page's fact list, top card and structured data. If the facts are missing the row is marked unreadable and not charged.

Measured on 2026-09-29: 20 out of 20 mixed inputs (URLs, slugs and names including Safaricom, Procter & Gamble, Kenya Airways, Notion and Equity Bank) delivered.

Use cases

  • CRM enrichment. Push a column of company names or domains-turned-names from HubSpot or Salesforce, get industry, size band and HQ back, and fill the empty fields.
  • ABM account lists. Filter a target list by companySize and industry before sales spends time on it.
  • Investor and market mapping. Pull founded year, company type, HQ country and follower counts for every company in a sector map.
  • Lead scoring by size and industry. employeesOnLinkedIn and companySize make a simple firmographic score without a paid data vendor.
  • Dedupe by slug. Different spellings of one company ("P&G", "Procter & Gamble") resolve to one slug, which makes a clean join key.

Integrations

Run it from the API with curl:

curl -X POST "https://api.apify.com/v2/acts/agnes.developer.queen~linkedin-company-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["https://www.linkedin.com/company/stripe", "Kenya Airways"]}'

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("agnes.developer.queen/linkedin-company-scraper").call(
run_input={"companies": ["stripe", "Kenya Airways"]}
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["name"], row["industry"], row["companySize"], row["charged"])

Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('agnes.developer.queen/linkedin-company-scraper')
.call({ companies: ['stripe', 'Kenya Airways'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

No-code and agent tools:

  • Make, n8n and Zapier: use the Apify app or node, pick "Run an Actor", paste agnes.developer.queen/linkedin-company-scraper and map your company column to companies.
  • Google Sheets: send results to a sheet with the Apify Google Sheets integration, or pull the dataset CSV link straight into a sheet.
  • Clay: call the Actor through Clay's Apify integration and map the returned fields into columns.
  • MCP: add https://mcp.apify.com?actors=agnes.developer.queen/linkedin-company-scraper to any MCP client so an AI assistant can look up companies on demand.

FAQ

Can I scrape a LinkedIn company page without logging in?

Yes. This Actor reads the public company page that LinkedIn serves to logged-out visitors. You never hand over cookies, a session or a LinkedIn account, so there is no account to get restricted.

What if I only have the company name?

Type the name. The Actor guesses the slug, checks the page name against what you typed, and falls back to a Google lookup when the guess is wrong. The resolved linkedinUrl and slug come back on the row so you can verify the match.

Does it return employee count?

It returns two numbers: companySize, the size band the company picked (for example 1,001-5,000), and employeesOnLinkedIn, the count of LinkedIn members who list the company as their employer. It does not return the list of employees.

Why was a company not charged?

Look at reason. A free row means the page does not exist, the page loaded without the facts block, or the page found belongs to a different company than the name you typed. You only pay when name, industry, size and location are all present.

Does it get followers?

Yes, followers is the follower count shown on the page. LinkedIn rounds it on some pages.

How accurate is the name match?

Every significant word you typed (ignoring words like Inc, Ltd, PLC, Group) has to appear in the page name, or the page name has to sit fully inside what you typed. "Kenya Airways" matches "Kenya Airways PLC". "Twiga Foods" does not match a page called "Twiga Staffing", and that row comes back free. For exact results, pass the company URL.

Can I scrape LinkedIn company data in bulk?

Yes, up to 1,000 companies per run. For bigger lists, split them across runs or call the Actor from a loop through the API.

Does it work with showcase or school pages?

No. Use the main company page URL. Showcase and school pages have a different layout.

The Actor only reads company pages that are publicly visible without logging in, and it collects company facts, not personal data. You are responsible for how you use the data and for complying with LinkedIn's terms, GDPR, CCPA and any other laws that apply to you. If you are unsure, ask a lawyer.

Where is the data stored?

In your Apify dataset for the run. Export it as JSON, CSV, Excel or XML, or read it through the API.

Support

Found a company that comes back wrong or free when it should not? Open an issue on the Actor's Issues tab with the input you used and the run ID. Fixes ship with a saved page fixture so the same bug does not come back.

Docs and examples: https://github.com/agnesthedeveloper/linkedin-company-scraper