LinkedIn Company Scraper avatar

LinkedIn Company Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
LinkedIn Company Scraper

LinkedIn Company Scraper

Extract companies from LinkedIn. Returns employee count, industry, headquarters, description, and specialties. Optional employee profile scraping. Pay-per-result.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

4

Monthly active users

17 hours ago

Last modified

Share

Enrich companies with LinkedIn data: employee count, industry, headquarters, description, specialties, website, founded year, follower count, top employees with profile URLs, and recent company posts.

HTTP-only, no browser needed. ~128MB RAM, pay-per-result.

How It Works

  1. If linkedin_url is provided, the actor extracts the company slug directly (recommended).
  2. If not provided, the actor searches Google via GOOGLE_SERP proxy to find the LinkedIn company page.
  3. The actor scrapes the public LinkedIn guest page (/organization-guest/company/{slug}) which contains full company data in structured HTML. No login or cookies required.
  4. Optionally scrapes the people page for employee profiles filtered by title.

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Apify MCP server URL:

https://mcp.apify.com?tools=santamaria-automations/linkedin-company-scraper

Example prompt once connected:

"Use linkedin-company-scraper to enrich these companies with LinkedIn data. Return the results as a table."

Clients that support dynamic tool discovery (Claude.ai, VS Code) receive the full input schema automatically via add-actor.

Input

{
"companies": [
{
"company_id": "acme-1",
"company_name": "Example Company Ltd.",
"linkedin_url": "https://www.linkedin.com/company/example-company"
},
{
"company_id": "acme-2",
"company_name": "Sample Widgets GmbH",
"website_domain": "sample-widgets.example"
}
],
"includeEmployees": true,
"maxEmployeesPerCompany": 10,
"employeeTitleFilters": ["HR", "CEO", "CTO"],
"requestDelay": 3000
}

Input Fields

FieldTypeRequiredDefaultDescription
companiesarrayYes-Companies to enrich
companies[].company_idstringYes-Your internal identifier
companies[].company_namestringYes-Company name
companies[].linkedin_urlstringRecommended-Direct LinkedIn URL (skips search)
companies[].website_domainstringNo-Improves search accuracy when no URL provided
includeEmployeesbooleanNofalseScrape employee profiles from people page
maxEmployeesPerCompanyintegerNo10Max employees per company (1-50)
employeeTitleFiltersstring[]No["HR","CEO","CTO","Recruiter","People","Talent"]Filter by title keywords
requestDelayintegerNo2000Delay between requests in ms
linkedinCookiestringNo-Optional li_at cookie for authenticated access (more data)
linkedinEmailstringNo-Optional: login to get li_at automatically
linkedinPasswordstringNo-Optional: login password

Output

Each company produces one dataset row:

{
"company_id": "acme-1",
"company_name": "Example Company Ltd.",
"linkedin_url": "https://www.linkedin.com/company/example-company",
"employee_count": 5000,
"employee_count_range": "1,001-5,000",
"industry": "Software Development",
"headquarters": "Munich, Bavaria",
"description": "Example Company Ltd. builds sample software for demo purposes.",
"specialties": ["Sample Product", "Demo Service", "Widget Manufacturing"],
"website": "https://www.example.com",
"founded": "2015",
"company_type": "Privately Held",
"follower_count": 182760,
"address": null,
"tagline": "Help increase the GDP of the internet.",
"logo_url": "https://media.licdn.com/dms/image/...",
"employees_on_linkedin": 16694,
"locations": ["354 Oyster Point Blvd, South San Francisco, California 94080, US"],
"employees": [
{ "name": "Jane Doe", "title": "Head of People", "linkedin_url": "https://www.linkedin.com/in/jane-doe-example" }
],
"posts": [
{ "text": "We are hiring across our engineering teams.", "posted_at": "2d", "likes": null, "comments": null }
],
"error": null
}

Extracted Fields

FieldDescription
employee_countUpper bound of employee range (e.g., 5000 for "1,001-5,000")
employee_count_rangeRaw range string from LinkedIn
industryCompany industry
headquartersCity, Region
descriptionFull company description
specialtiesList of specialties or focus areas
websiteCompany website URL
foundedYear founded
company_type"Privately Held", "Public Company", etc.
follower_countLinkedIn follower count
taglineShort tagline under the company name
logo_urlCompany logo image URL
employees_on_linkedinPeople listing the company as employer on LinkedIn
locationsOffice locations from the Locations section
employeesTop visible employees with LinkedIn profile URLs
postsUp to 5 recent company updates

Errors and partial results

A company that cannot be enriched (not found, blocked by LinkedIn, invalid URL, unresolvable numeric ID) is not added to the dataset and is not charged. It is listed in the key-value store record FAILED_URLS as {url, company_id, reason}, and the run status message reads "N companies scraped, M failed (see FAILED_URLS)". If every company you provided is blocked by LinkedIn (403/429/451/authwall), the run ends as failed with a clear message. LinkedIn /company/, /school/ and /showcase/ URLs are accepted in any form (locale subdomains, query strings, trailing paths, upper case). If you start the actor with an empty input it enriches one built-in demo company (Microsoft).

If the run is about to hit its time limit, it stops cleanly. Companies that were not processed are not written to the dataset (so they are not charged). They are saved to the UNPROCESSED_COMPANIES record of the key-value store and the run status message says how many there are, so you can run them again. Entries in companies that cannot be used at all are listed in INVALID_ENTRIES.

Pricing

Pay-per-result via Apify Pay-Per-Event billing:

EventPriceDescription
Actor start$0.001Charged once per run
Result$0.005Charged per output row (each dataset item). Failed lookups are not pushed and not charged

Enriching 1,000 companies costs about $5, proxy included. No monthly fees.

Numeric LinkedIn IDs

Older websites sometimes embed LinkedIn URLs in the numeric-ID form (for example https://www.linkedin.com/company/19051). LinkedIn walls those URLs behind a login page, so the actor probes a small set of candidate slugs built from company_id (typically the website domain) and company_name, and switches to the first slug URL that returns real company data. When this happens the output row sets resolved_from_numeric_id: true. If no candidate resolves, the company is listed in FAILED_URLS with reason numeric_id_unresolvable and is not charged.

Tips

  • Always provide linkedin_url when available. It is faster and more reliable than search.
  • LinkedIn URLs can be found on company websites (footer or header links), Google Maps data, or business directories.
  • The LinkedIn slug often differs from the legal company name (e.g., "Example Company AG" may map to example-company, not example-company-ag).
  • Use requestDelay: 3000 or higher to avoid rate limiting (HTTP 999).
  • Proxy handling is built in, nothing to configure.

Use Cases

  • B2B Lead Enrichment: add employee counts, industry, and HQ to your company database.
  • Sales Intelligence: find decision-maker profiles via the employees list.
  • Market Research: analyze industry distribution, company sizes, and specialties across a list of companies.
  • Competitive Analysis: track competitor follower counts and recent posts.

Discovery:

Enrichment:

Issues & Feature Requests

If a field is missing or looks off for a given company, open an issue on the actor's Issues tab and we will take a look.