LinkedIn Company Scraper $1.50/1K | Websites & Firmographics avatar

LinkedIn Company Scraper $1.50/1K | Websites & Firmographics

Pricing

from $0.80 / 1,000 useful company delivereds

Go to Apify Store
LinkedIn Company Scraper $1.50/1K | Websites & Firmographics

LinkedIn Company Scraper $1.50/1K | Websites & Firmographics

Enrich exact LinkedIn company URLs with source-reported websites, industry, size, headquarters and specialties. Public guest data with field provenance and explicit missing values.

Pricing

from $0.80 / 1,000 useful company delivereds

Rating

0.0

(0)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

LinkedIn company research — generated illustrative artwork

LinkedIn company data for account research and CRM enrichment

Turn a large, explicit list of LinkedIn company URLs into structured company records. Collect the website LinkedIn reports, industry, company-size range, headquarters, company type, founding year and specialties when those fields are publicly available. Every row includes its canonical company URL, observation time and field-level provenance.

Use it to fill firmographic columns in a CRM, compare a known list of suppliers, prepare an account-research sheet or refresh an existing company directory. It is designed for company lookup, not global company discovery. Start with an exact slug such as apify, or a company URL you already know. No LinkedIn login, user cookies, employee-profile collection or external provider key is required. This independent tool is not affiliated with LinkedIn or Microsoft.

First useful run

{"companies":["apify"],"maxCompanies":1}

Open Output → Companies after the run. Download JSON, CSV or Excel using Apify Dataset exports. Check SUMMARY and ERRORS before importing the data. A successful run with partial results can still contain unpaid source failures; an inaccessible source is never represented as a successful empty company profile.

For two known companies:

{"companies":["https://www.linkedin.com/company/apify/","https://www.linkedin.com/company/microsoft/"],"maxCompanies":2}

The website is exactly the source-reported website, not a guessed home page. For example, a company may publish a newsroom subdomain; the Actor preserves that URL and does not silently substitute a brand's main domain.

What this company scraper delivers

NeedOutputBoundary
CRM account enrichmentCompany name, URL, website and industryExplicit URLs/slugs; no domain-to-LinkedIn resolver
Firmographic segmentationCompany-size range, type and headquartersPublic self-reported LinkedIn observations
Company researchDescription, specialties and founding yearMissing source fields stay null
Audience observationsFollowers and LinkedIn-associated employee countNot verified payroll headcount; no employee identities
Data quality reviewCanonical URL, collectedAt and fieldSourcesProvenance identifies where a field came from, not independent truth
Bulk company-list processingOne deduplicated record per accessible companyUp to 10,000 inputs and delivered records; bounded concurrency and deadline

Output reference

FieldMeaning
id, companyUrlNormalized source company slug and canonical LinkedIn company URL
name, descriptionOrganization name and description from the matching public Organization node
website, websiteDomainSource-reported external URL and its hostname, without guessing domain ownership
industry, companyTypePublic Industry and Type labels
companySizeSource display range such as 51–200 employees; not an exact measured staff count
companySizeMin, companySizeMaxParsed bounds; an open-ended upper bound is null
headquarters, addressReported HQ label and available structured address; not all office locations
foundedYearPublished founding year, otherwise null
specialtiesPublic specialties text, preserved as text
employeesOnLinkedInNumber reported by LinkedIn's public Organization data; not verified employed headcount
followersCount explicitly present in the English public page description, otherwise null
logoUrlSource image URL when present; availability may expire
collectedAt, coverageUTC observation time and public_company_profile scope
fieldSourcesMap from populated fields to their JSON-LD, About or metadata source

Unknown metrics are null, not zero. A reported zero remains zero. A name alone is insufficient: the page's canonical company identity and matching Organization node must agree, and at least one substantive company field must be present. Related-company cards and social-post authors are not used to fill another company's data.

Complete input reference

SettingDefaultMeaning
companies["apify"] when omitted1–10,000 exact ASCII slugs or HTTPS LinkedIn company URLs. Country subdomains and tracking parameters normalize to the canonical www route. Person URLs, arbitrary hosts and credentials are rejected
maxCompanies1,000Global delivered-company cap, 1–10,000. Stops further requests once reached
sourceTimeoutSeconds3,600Overall source collection budget, 10–7,200 seconds. Each request uses at most 25 seconds and the remaining budget
requireWebsitefalseSkip records without a usable source-reported website; see filteredOut
maxConcurrency5Concurrent requests, 1–10. More parallelism can increase rate limits
proxyMode"direct"direct or explicit residential; no automatic paid-proxy fallback

Inputs are deduplicated before collection and processed in ordered waves, with up to 10 concurrent requests. Results are delivered and checkpointed after every wave. Repeated slugs, URL aliases differing only by country host or tracking query and case variations are deduplicated. An invalid item in a mixed list becomes a separate unpaid diagnostic; valid companies can still be delivered. Unknown input settings are rejected to avoid silently pretending to support search or other unimplemented options.

Large company lists and continuation

Supply up to 10,000 known company URLs/slugs, set maxCompanies and maxConcurrency (1–10, default 5), and allow enough run time. The configured input ceiling is not a promise of 10,000 accessible companies. Requests can fail or be rate-limited; only useful delivered records are billed as results. Lower concurrency if the source restricts access.

{"companies":["apify","microsoft","openai"],"maxCompanies":1000,"maxConcurrency":5,"sourceTimeoutSeconds":3600}

Results are saved after each wave rather than kept until the whole list finishes. CHECKPOINT.remainingCompanies contains unattempted inputs, while inFlightCompanies marks a reserved wave whose delivery may be uncertain after interruption. There is no automatic restart or retry: reconcile Dataset before retrying in-flight companies. For an explicit next run, copy only remainingCompanies into a new input; historical failures are in ERRORS and are not silently repeated. A charge cap stops delivery and returns undelivered rows to remainingCompanies.

Useful input examples

Deduplicate several references to the same company:

{"companies":["Apify","https://www.linkedin.com/company/apify/?trk=public_profile","microsoft"],"maxCompanies":2}

Build a company-to-website sheet:

{"companies":["apify","microsoft","openai"],"maxCompanies":3,"requireWebsite":true}

Use a small delivered-record cap:

{"companies":["apify","microsoft","openai"],"maxCompanies":1}

Opt into Apify Residential Proxy if Direct is blocked:

{"companies":["apify"],"maxCompanies":1,"proxyMode":"residential","sourceTimeoutSeconds":45}

Residential traffic is charged separately by Apify, in addition to platform usage and result events. It does not guarantee source access. The Actor does not collect or require your LinkedIn credentials or session cookies and does not switch routes without your input.

Price and cost controls

The result tariff is $1.50 per 1,000 delivered company records on Free, $1.20 on Starter, $1.00 on Scale and $0.80 on Business and current higher tiers. There is no startup event. Platform resources are paid separately by the user; Residential adds proxy usage when explicitly selected. A filtered-out profile, invalid URL, source error or diagnostic is not a result event.

This is a per-delivered-company event rate, not an all-inclusive promise. A one-company run has startup compute overhead even without a startup event. Use maxCompanies for an output cap, sourceTimeoutSeconds for a collection deadline and Apify's maximum charge setting to constrain a run. A charge cap does not guarantee the total of every separately billed resource. Compare total costs and coverage, not only the advertised per-record event.

Failures, partial results and completeness

SUMMARY reports requested inputs, unique valid companies, duplicate inputs skipped, attempted and not-attempted counts, filtered-out profiles and delivered records. ERRORS contains source or input codes without billing them as useful companies. Completed records survive a later source error or deadline. When no useful result is produced because all pages failed, the Actor fails explicitly. A legitimate website-filtered empty result is distinguished by filteredOut and no source errors.

HTTP403/429/999, redirects to authentication, missing structured company data or an identity mismatch can prevent delivery. Availability varies by region, route and time. No retry storm, third-party data provider, inferred replacement record or paid proxy fallback is hidden behind a successful status. This version does not search the entire LinkedIn company network, resolve arbitrary company names/domains, paginate employees, collect personal profiles, gather all office locations or return a complete archive of company posts.

API, Python and agent workflows

Use the Apify Actor API with your own token. Save that token in an environment variable, not in a copied input. The permanent Actor ID is 9OI0iq6qu1BQXQSoy; use it in generic Apify clients.

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("9OI0iq6qu1BQXQSoy").call(
run_input={"companies": ["apify"], "maxCompanies": 1},
max_total_charge_usd=0.03,
)
if run["status"] != "SUCCEEDED":
raise RuntimeError("Inspect SUMMARY and ERRORS before importing results")
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company)

The standard Apify API/client and an appropriately configured Apify MCP connection are the integration paths. No dedicated npm/n8n, PyPI or public GitHub wrapper is claimed for this new product; do not confuse it with LinkedIn Jobs or the individual-profile scraper. Use the small editable JSON examples above or create your own saved Apify Task for repeated account-list enrichment.

FAQ

Can I enter a company name or a website domain? No. Provide the exact LinkedIn company slug or URL. Guessing a similarly named company could silently corrupt a CRM.

Are employee counts exact company headcounts? No. employeesOnLinkedIn is the public source's associated-profile count; companySize is its displayed size band. Neither is independently verified payroll data.

Why did Microsoft return a newsroom website? That is what the company page reports. The Actor preserves source evidence rather than replacing it with an assumed corporate domain.

Why is a field null? It was absent or could not be parsed with sufficient evidence. Null must not be interpreted as zero followers, no employees or no company history.

Does Residential guarantee every company? No. It is an optional paid route and can still encounter source restrictions. Inspect errors before treating missing records as missing businesses.

Can I monitor changes? You can schedule runs and compare exports in your own store using companyUrl/id and collectedAt. Built-in cross-run history and change notifications are not implemented.