LinkedIn Company Search: Industry, Location, Size, No Login avatar

LinkedIn Company Search: Industry, Location, Size, No Login

Pricing

from $2.70 / 1,000 companies

Go to Apify Store
LinkedIn Company Search: Industry, Location, Size, No Login

LinkedIn Company Search: Industry, Location, Size, No Login

Find companies on LinkedIn by industry, location, company size and keywords with no login or cookies. One row per company: LinkedIn URL, tagline, industry, head office, followers, employee range, website, plus founded, specialties, About and offices from the public page.

Pricing

from $2.70 / 1,000 companies

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

20 San Francisco software companies with industry, size, head office, followers and website in 47 seconds

From The Mine Works, makers of B2B Leads Finder and LinkedIn Company Scraper, with over 245,000 runs across 280+ public actors.

Updated 27 Oct 2026: first release. Search LinkedIn companies by any mix of industry, head office location, company size, keywords and name, run up to 100 searches in one go, and get one flat row per company with the public company page read too. Bookmark this Actor on its Store page so it is one click away next time.

Why choose this actor?

  • Full company details in every row, at one price. Each company's public LinkedIn page is read by default: exact industry, size range, head office, followers, employees on LinkedIn, website and domain, founded year, type, specialties, About text, address, office list and logo. Reading the page costs nothing extra.
  • The companies you asked for, not lookalikes. Search engines fill a page with companies that only mention your city in a post or an office list. With strictMatch on (the default) a company is kept only when its own LinkedIn page does not contradict your search: the industry, the head office, the size range and the name are checked on exact values. In our tests this dropped Vienna, Paris and Munich companies from a Berlin search, and they were never charged.
  • Built for one call per record. A company name returns that company's LinkedIn page and details in about 15 seconds, 256 MB, no start up work: the shape Clay tables, n8n flows and AI agents call thousands of times a day. Batches of up to 100 searches work too. No LinkedIn account, no cookies, no ban risk.

Run it on Apify

Part of The Mine Works LinkedIn family: LinkedIn Company Scraper, LinkedIn Post Scraper, LinkedIn Employees Scraper, LinkedIn Profile Scraper, LinkedIn Email Finder, LinkedIn Newsletter Scraper.

Guide and FAQs: LinkedIn Company Search on themineworks.com.

Try it in one minute

Paste this into the input (JSON view) and press Start. It returns 20 software companies with 51 to 200 employees and their head office in San Francisco, with their public company pages read. It took 47 seconds in our latest test run:

{
"industry": "Software Development",
"location": "San Francisco",
"companySize": ["51-200"],
"maxResultsPerSearch": 20
}

To look up one company, give its name: {"name": "Revolut", "maxResultsPerSearch": 1} took 16 seconds in our test.

Apify's free plan includes $5 of credit every month, which covers about 1,300 companies at this actor's price.

Copy to your AI assistant

themineworks/linkedin-company-search on Apify. Finds companies on LinkedIn by industry, head office location, company size, keywords and name, with no login, and returns one flat row per company. Call ApifyClient("TOKEN").actor("themineworks/linkedin-company-search").call(run_input={"industry": "Software Development", "location": "San Francisco", "companySize": ["51-200"], "maxResultsPerSearch": 20}), then client.dataset(run["defaultDatasetId"]).list_items().items. Input: any of industry (LinkedIn industry name), location (city, US state or country of the head office), companySize (list of 0-1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+, or a range such as 50-500), keywords, name (one search); searches (list of objects with those keys, up to 100). Optional: maxResultsPerSearch (default 20, 1 to 500), enrichCompanies (default true; reads the public company page), strictMatch (default true; drops companies whose own industry, head office, size or name contradicts the search). The dataset holds company rows only, each with company_url, universal_name, name, tagline, industry, company_size, employees_min, employees_max, employees_on_linkedin, followers, followers_approx, headquarters, country_code, address (street, city, region, postal_code, country_code), locations (address, country_code, primary), website, domain, founded, company_type, specialties, about, logo_url, snippet, company_page (read, not_public, failed, skipped), source, match (name, industry, location, company_size as true or false), search, search_index, search_query, position, page, scraped_at. Empty dataset = no company matched. The run summary and every input that could not be read are in the key-value store record OUTPUT. Full spec: GET https://api.apify.com/v2/acts/themineworks~linkedin-company-search/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • Search by any mix of fields. industry, location, companySize, keywords and name are combined into one search. Use one or all five: an industry in a city, a keyword in a country, a size range across the world, one company by name.
  • LinkedIn's own size ranges. companySize takes one or more of 0-1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000 and 10001+, or a wider range such as 50-500, which becomes the ranges inside it. Every row also carries employees_min and employees_max as numbers for filtering.
  • Head office by city, US state or country. Berlin, Texas, London, UK and Germany all work. A country is checked against the country of the company's address, so Germany keeps a company whose head office reads "Berlin, Berlin". Common local spellings count too: Munich finds München, Bangalore finds Bengaluru.
  • Search fields on every row, page fields on top. Name, LinkedIn link, followers and, when the search engine shows them, industry, size, head office and website come from the search result itself, so a row has them even when the page is not read. The public page then adds the exact values and the rest.
  • Stops cleanly and never bills a miss. A search ends when two results pages in a row bring no new match or the results run out; the run stops searching if the search engine stops answering, and keeps every row it found. The same company found twice in a run is delivered once.

How to use it

Look up one company (enrichment step in Clay, n8n or Make)

{
"name": "Siemens Healthineers",
"maxResultsPerSearch": 1
}

One row, or an empty dataset when no company of that name exists. Map company_url, industry, company_size, headquarters and website back into your table. In Clay, use an HTTP API column that starts this actor with the row's company name and reads the dataset items; in n8n, the Apify node's "Run actor and get dataset" does the same.

Build an account list: an industry, a place and a size

{
"industry": "Hospitals and Health Care",
"location": "Texas",
"companySize": ["201-500", "501-1000"],
"maxResultsPerSearch": 100
}

Up to 100 companies, 10 search results per page. Companies whose head office is outside Texas, or whose size or industry is another, are dropped.

Many searches in one run

{
"searches": [
{ "industry": "Financial Services", "location": "London", "keywords": "fintech" },
{ "keywords": "cybersecurity", "location": "Israel" },
{ "industry": "IT Services and IT Consulting", "location": "Bangalore", "companySize": ["51-200"] },
{ "name": "Notion" },
"electric vehicles Norway"
],
"maxResultsPerSearch": 20
}

Each item is its own search, numbered in search_index and echoed in search. A plain string is used as keywords.

Fast export from the search results only

{
"keywords": "fintech",
"companySize": ["11-50"],
"maxResultsPerSearch": 50,
"enrichCompanies": false
}

Faster, because no company page is read. Rows keep what the search engine shows: name, link and followers always; industry and head office for 12 of 20 companies and size for 6 of 20 in our test. The strict check runs on those values only, so a company whose head office is not shown is kept.

See everything the search engine found

{
"industry": "Software Development",
"location": "Berlin",
"maxResultsPerSearch": 40,
"strictMatch": false
}

No company is dropped. Each row's match object still says which of your fields matched, for example {"industry": true, "location": false} for a company with a Berlin office and its head office in Vienna.

Input parameters

ParameterTypeDefaultWhat it does
industrystringemptyLinkedIn industry name, for example Software Development. A part works too.
locationstringemptyCity, US state or country of the head office.
companySizearray of stringsemptyLinkedIn size ranges, or a wider range such as 50-500.
keywordsstringemptyAny other words, for example fintech or "electric vehicles".
namestringemptyCompany name, for a lookup.
searchesarrayemptyMany searches, each an object with the five fields above, or a string of keywords. Up to 100.
maxResultsPerSearchinteger20Most companies per search, 1 to 500.
enrichCompaniesbooleantrueReads each company's public LinkedIn page for exact values, founded, specialties, About, address, offices and logo.
strictMatchbooleantrueDrops companies whose own industry, head office, size or name contradicts your search.

Give at least one search field, or searches.

Industry names. LinkedIn files every company under one industry from its own list, such as Software Development, IT Services and IT Consulting, Financial Services, Hospitals and Health Care, Computer and Network Security or Business Consulting and Services. Use those words in industry. A niche word that is not a LinkedIn industry (fintech, SaaS, cybersecurity) belongs in keywords.

What data do you get?

One row per company in the default dataset, nothing else, so a pipeline can map the dataset as is.

FieldWhat it is
company_url, universal_namehttps://www.linkedin.com/company/<id> and the id itself, the key to store and join on
name, taglineCompany name and the one line under it
industryLinkedIn industry, e.g. Software Development
company_size, employees_min, employees_maxe.g. 51-200 employees, 51, 200
employees_on_linkedinMembers who list the company as their employer (page)
followers, followers_approxFollowers; followers_approx is true when only the search engine's rounded figure (5.2K+) was available
headquarters, country_codee.g. Berlin, Berlin, DE
address, locationsHead office address, and every office listed with its country and which is primary (page)
website, domainWebsite as listed, and its domain, e.g. notion.com
founded, company_typee.g. 2016, Privately Held (page, or the search result when shown)
specialties, about, logo_urlSpecialties, About text, logo (page)
snippetThe search engine's text for the company
company_pageread, not_public, failed or skipped
sourcesearch
matchWhich of your fields matched: name, industry, location, company_size
search, search_index, search_query, position, pageThe search that found the company, its number in your input, the query sent, the rank and the results page
scraped_atWhen the row was written

OUTPUT record (key-value store, never charged): searches_requested, searches_read, searches_without_match, companies_delivered, charged_for, rejected_industry_mismatch, rejected_location_mismatch, rejected_size_mismatch, rejected_name_mismatch, duplicates_skipped, company_pages_read, google_pages_billed, stopped_by_max_cost, shortfall_reason when fewer companies came back than asked, per_search with query, results, candidates, delivered, up to 5 rejected_examples and why each search stopped, and errors, one entry per input that could not be read (invalid_search, invalid_company_size, google_error).

What LinkedIn shows without login

The public company page shows everything this actor returns to anyone who is not signed in: the About grid (website, industry, size, head office, type, founded, specialties), the follower count, the offices list and the logo. In our tests LinkedIn showed it for 609 of 616 company pages. Revenue, funding rounds, employee lists and contact people are not on the public page and are not in the output.

Stable fields for automations

These were present in every row of our test runs (417 companies from 9 runs with company pages on), and their names will not change:

FieldWhat it is
company_urlLinkedIn company link
universal_nameThe key to store and join on
nameCompany name
company_pageWhether the public page was read
sourcesearch
scraped_atWhen the row was written

Present when there is a value: industry, followers, employees_on_linkedin and logo_url (416 of 417 rows), company_size (415), headquarters, country_code and website (393), tagline (356), founded (334), specialties (284) and locations (218; small companies often list no office).

Output examples

One company from the San Francisco software search, page read (test run, 27 Oct 2026, trimmed):

{
"company_url": "https://www.linkedin.com/company/truefoundry",
"universal_name": "truefoundry",
"name": "TrueFoundry",
"tagline": "Central Control Plane for Generative AI",
"industry": "Software Development",
"company_size": "51-200 employees",
"employees_min": 51,
"employees_max": 200,
"employees_on_linkedin": 139,
"followers": 41911,
"headquarters": "San Francisco, California",
"country_code": "US",
"address": {
"city": "San Francisco",
"region": "California",
"postal_code": "94103",
"country_code": "US"
},
"website": "https://truefoundry.com",
"domain": "truefoundry.com",
"founded": 2021,
"company_type": "Privately Held",
"specialties": [
"DevTool",
"Experimentation Tracking",
"Deployment",
"Monitoring",
"MLOPs"
],
"about": "TrueFoundry provides an enterprise-grade AI Gateway that encompasses an LLM Gateway, MCP Gateway, and Agent Gateway, enabling enterprises to securely ...",
"company_page": "read",
"source": "search",
"match": {
"industry": true,
"location": true,
"company_size": true
},
"search": {
"industry": "Software Development",
"location": "San Francisco",
"companySize": [
"51-200"
]
},
"search_query": "site:linkedin.com/company \"Software Development\" \"San Francisco\" \"51-200 employees\"",
"position": 12,
"page": 2
}

The OUTPUT record of the same run, trimmed:

{
"searches_requested": 1,
"companies_delivered": 20,
"charged_for": 20,
"rejected_industry_mismatch": 3,
"rejected_location_mismatch": 2,
"duplicates_skipped": 5,
"company_pages_read": 22,
"google_pages_billed": 3,
"per_search": [
{
"query": "site:linkedin.com/company \"Software Development\" \"San Francisco\" \"51-200 employees\"",
"pages": 3,
"results": 30,
"candidates": 22,
"delivered": 20,
"rejected": 5,
"duplicates": 5,
"stopped": "max_results_reached",
"rejected_examples": [
{
"name": "PieCyfer",
"reason": "location",
"value": "San Mateo, California"
},
{
"name": "CodeFulcrum",
"reason": "industry",
"value": "Information Technology & Services"
}
]
}
],
"run_seconds": 47
}

Pricing

Pay per event: you pay for the companies you receive, plus a flat $0.002 per run that delivered at least one company, whatever memory you choose. Reading the public company page costs nothing extra.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
company-scrapedOnce per company row stored in your dataset$3.60 per 1,000$3.30 per 1,000$3.00 per 1,000$2.70 per 1,000
run-startOnce per run, right after the first company is delivered$0.002$0.002$0.002$0.002

The price of one company is the price per 1,000 divided by 1,000.

Never charged:

  • search results whose industry, head office, size or name contradicts your search (with strictMatch on);
  • a company that a second search of the same run finds again, or that appears twice under different country addresses;
  • companies past your maxResultsPerSearch;
  • inputs that are not searches, and searches with no results;
  • the OUTPUT record;
  • a run that delivers nothing: the start fee is charged only after the first company is in your dataset;
  • anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

Run it on a schedule

  1. Open the actor in Apify Console, set your input and click Save as a new task.
  2. In the task, open Schedules, click Add schedule and pick how often (every Monday at 08:00, the first of the month and so on).
  3. Compare runs on universal_name to see new companies in your segment, and on company_size, followers and employees_on_linkedin to see who is growing.
  4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

FAQ

What does this actor read?

Two public sources, without logging in: the search engine's results for LinkedIn company pages (site:linkedin.com/company searches, read through Apify Proxy), and each company's public LinkedIn page as anyone who is not signed in sees it. It does not use a LinkedIn account, cookies or LinkedIn's internal API, and does not read anything behind the sign in.

How does strict match decide?

It compares your search with the company's own values: the industry and size range from its About tab, and its head office (with the address country for a country search). A company that only mentions your city in a post, has an office there, or appears in another company's "Similar pages" box is dropped. A value the company does not show never drops it; match then leaves that field out. Turn strictMatch off to receive every result with a match object instead.

Why did a search return fewer companies than I asked for?

The search engine runs out, or most of its results did not match. The OUTPUT record says why each search stopped and shows up to 5 rejected_examples with the value that did not match. A common cause is an industry name that is not LinkedIn's (use Financial Services, not fintech) or a city written differently on LinkedIn.

Up to 500 per search and 100 searches per run. The search engine shows 10 results per page, and repeats of the same company under country addresses are skipped. For a very large list, split it into several searches, for example by city or by size range.

How long does a run take?

In our tests: about 15 seconds for one company by name, 47 seconds for 20 San Francisco software companies with pages read, 130 seconds for 20 Berlin ones (most Berlin results were companies with only an office there), 3 minutes for 86 companies over 5 searches, 7 minutes for 200 companies over 2 searches. Most of the time is the search engine page, 3 to 15 seconds each, and resolving each result's link.

Do I need an account, cookies or a proxy?

No. The actor uses Apify Proxy, which is included. Nothing to set up.

Can it find people at these companies?

Not this actor. Pass company_url or name to LinkedIn Employees Scraper or LinkedIn People Search to find people by role. Already have company links? LinkedIn Company Scraper reads them directly.

Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: Companies, Search and match, and Company page details. In CSV and Excel, address, locations and match are flattened into columns such as address/city.

Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/linkedin-company-search

  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http linkedin-company-search "https://mcp.apify.com/?tools=themineworks/linkedin-company-search"

The actor reads only what LinkedIn and the search engine show to anyone without logging in: company pages that companies publish to be found. LinkedIn's and Google's terms and robots.txt files restrict automated access. You are responsible for how you use the data. This is general information, not legal advice.

Integrations

  • Clay: an HTTP API column that runs the actor with the row's company name and reads the dataset items, one call per row.
  • Make, Zapier and n8n: start a run and read its dataset with the Apify apps and nodes, for example "new 51 to 200 person software companies in Berlin every Monday to the CRM".
  • Google Sheets: send each run's companies to a sheet with Apify's Google Sheets integration; one row per company fits a sheet as is.
  • Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
  • API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
  • MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

More from The Mine Works

LinkedIn

Social media and video

Leads and business directories

Marketing, SEO and reviews

Real estate

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

Found a company the actor missed, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

Search LinkedIn companies by industry, head office location, company size and keywords with no login, and get each company back as one row with LinkedIn link, industry, size, head office, followers, website and, from the public page, founded year, specialties, About, address and offices.