๐Ÿ”Ž LinkedIn Mass Company Profile Finder avatar

๐Ÿ”Ž LinkedIn Mass Company Profile Finder

Pricing

from $3.99 / 1,000 results

Go to Apify Store
๐Ÿ”Ž LinkedIn Mass Company Profile Finder

๐Ÿ”Ž LinkedIn Mass Company Profile Finder

โœจ Find LinkedIn company profile URLs in bulk from keywords, domains, or brand names. ๐Ÿš€ Multi-engine search (DuckDuckGo + Bing), country-subdomain handling, smart proxy fallback (no proxy โ†’ datacenter โ†’ residential). Perfect for lead gen, B2B prospecting & sales intelligence.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapio

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

8

Monthly active users

3 hours ago

Last modified

Share

LinkedIn Company Finder โ€” Extract Company URLs, Slugs and Snippets

LinkedIn Mass Company Profile Finder turns a list of keywords, brand names, or domains into verified LinkedIn company page URLs โ€” delivered as structured JSON, not a spreadsheet of guesses. For every keyword it returns the canonical linkedin.com/company/ URL, the slug, and the search-result title and snippet that produced the match, so you can sanity-check a hit before opening it. Unlike scraping frameworks that return raw HTML, LinkedIn Mass Company Profile Finder returns typed JSON โ€” ready for your CRM, your database, or your pipeline without any parsing. This guide covers every input and output field, and how lead-gen, sales, and research teams actually run it at scale.


๐Ÿงญ What Does LinkedIn Mass Company Profile Finder Do?

LinkedIn Mass Company Profile Finder takes a list of keywords โ€” domains, brand names, or plain-text descriptions โ€” and searches DuckDuckGo and Bing with a site:linkedin.com/company filter to surface every matching LinkedIn company page. It never logs into LinkedIn and never requests a LinkedIn account: all data comes from what DuckDuckGo and Bing have already indexed publicly. Matches are normalized across country subdomains (fr.linkedin.com, uk.linkedin.com, โ€ฆ) into one canonical URL per company, deduplicated, and pushed to the dataset live as they are found.

  • ๐Ÿ” Bulk keyword input โ€” one run can process a handful of keywords or thousands
  • ๐Ÿฆ†๐Ÿ”ท Multi-engine search โ€” DuckDuckGo (ddgs) and Bing, independently toggleable
  • ๐ŸŒ Country-subdomain normalization โ€” fr., uk., de., โ€ฆ all resolve to the canonical linkedin.com/company/<slug> URL
  • ๐Ÿงน Cross-engine deduplication โ€” the same company found twice is one row, with both engines credited in foundBy
  • ๐Ÿ›ก๏ธ Automatic proxy escalation โ€” no-proxy โ†’ datacenter โ†’ residential (3 retries), triggered only when an engine blocks the request
  • โšก Live dataset push โ€” every match is written to the dataset the moment it is found, not batched at the end
  • ๐Ÿ“ Search-result context โ€” the originating result title and snippet travel with every match

โšก Features & Capabilities

LinkedIn Mass Company Profile Finder's capabilities fall into three groups: what it extracts, how it stays undetected, and where it fits alongside the rest of the Scrapio LinkedIn toolset.

Core features

  • Every matched row carries the exact fields written by the Actor's row-builder: linkedin, input, slug, resultTitle, resultSnippet, foundBy, proxyMode, error, scrapedAt
  • foundBy reports which engine(s) returned a given URL (ddgs, bing, or bing+ddgs) โ€” a bing+ddgs match is a stronger signal because two independent engines agree
  • A regex-based fallback scans the raw Bing HTML for any linkedin.com/company/<slug> pattern missed by the CSS selectors, so a Bing layout change degrades gracefully instead of silently dropping matches
  • Per-engine retries with exponential backoff (0.5 ร— 2^attempt seconds, plus jitter) before the proxy tier escalates
  • Configurable concurrency (workers) processes multiple keywords in parallel within a single run

One honest strength worth calling out

Most keyword-to-URL matching either trusts a single search engine or scrapes the target platform directly. This Actor cross-checks DuckDuckGo and Bing for every keyword and merges the results into one row per URL, so a bing+ddgs value in foundBy is a built-in confidence signal you don't have to compute yourself โ€” and because it never touches linkedin.com directly, it isn't exposed to LinkedIn's own anti-bot layer at all, only to the search engines'.

When another tool might suit you better

If what you actually need is full company profile data โ€” industry, size, description, affiliated pages, and associated employees โ€” this Actor stops short of that on purpose: it only resolves the URL. For that deeper extraction, the Scrapio catalog's LinkedIn Company Profile Scraper & Associated Employees takes the URLs this Actor finds and scrapes the profile itself. Running both in sequence (URL discovery, then profile scraping) is a more efficient pipeline than asking either tool to do the other's job.

LinkedIn Mass Company Profile Finder within the Scrapio data stack

LinkedIn Mass Company Profile Finder covers company URL discovery from keywords, domains, or brand names. For full company profile fields and affiliated/employee data once you have the URL, use LinkedIn Company Profile Scraper & Associated Employees. For individual people and lead contact details surfaced through search, use LinkedIn Lead Scraper. All three are Scrapio Actors and can be chained: discover โ†’ enrich โ†’ contact.


๐Ÿ“ˆ Why do developers and data teams scrape LinkedIn company pages?

๐Ÿข B2B lead generation and sales prospecting

Sales and growth teams start from a list of target domains or brand names โ€” pulled from a CRM export, an ICP list, or a trade-show badge scan โ€” and need the canonical LinkedIn company page attached to each one before outreach. Feed the list into urls, and each row returns the linkedin URL and slug to attach back to the CRM record. Because results push live, a 500-domain batch can start populating your enrichment pipeline within seconds of the run starting, not after the whole run finishes.

๐Ÿ“Š AI training data and RAG indexing

resultTitle and resultSnippet are the free-text fields worth indexing: the title is typically the company's LinkedIn display name plus "| LinkedIn", and the snippet is the follower-count and description text LinkedIn itself exposes to search engines. For RAG, embed resultSnippet alongside the linkedin URL as the retrievable chunk. For training data, linkedin, slug, and foundBy are structurally consistent across every row โ€” they never change shape between runs โ€” which matters more for a training set than free text does.

๐Ÿ“ฑ Competitive and market intelligence

Run the same keyword (a competitor's brand name or product name) on a recurring schedule and track which LinkedIn company slugs show up in foundBy over time. A new slug appearing for a keyword that previously returned nothing is a signal worth investigating โ€” a competitor spinning up a new regional or product-line company page.

๐Ÿ”ฌ Research and academic use

Market and social researchers use keyword-to-company mapping to build directories of companies operating in a niche or geography, using only publicly indexed search-engine data โ€” no LinkedIn account, no authenticated access, no scope beyond what DuckDuckGo and Bing already surface to anyone.

๐ŸŽฅ Product and SaaS development

Enrichment APIs and B2B directory products that need "resolve this domain/brand to its LinkedIn page" as a building block can call this Actor as that resolution step, then layer their own UI or scoring logic on top of the linkedin/slug/foundBy output.


๐Ÿš Input Parameters

All seven parameters below come directly from the Actor's input schema (.actor/actor.json), in schema order.

ParameterRequiredTypeDescriptionExample Value
urlsYesarray (stringList)Any list of search keywords โ€” domains (alma.fr), exact company names ("Acme Corp"), brand + qualifier ("Stripe" payments), or plain text. Each line is searched independently. One keyword per line; quote for exact-match phrases; bulk input fully supported (1, 10, or 1000+ keywords); works with non-English brands and international domains.["alma.fr", "Stripe payments"]
maxResultsPerKeywordNointegerMaximum number of LinkedIn company matches to look for, per engine, per keyword. Higher values search deeper (more result pages) but take longer. Minimum 1, maximum 200, default 30.30
enginesNoarray (select, enum ddgs/bing)Which public search engines to query for each keyword. Using both gives the widest coverage and lets you see when both agree on a match (foundBy: "bing+ddgs"). Default: both.["ddgs", "bing"]
workersNointegerHow many keywords to process in parallel. Higher is faster but issues more simultaneous requests. Minimum 1, maximum 20, default 3.3
maxRetriesNointegerHow many extra attempts an engine gets on a single keyword before the proxy ladder escalates to the next tier. Minimum 0, maximum 5, default 2.2
baseDelayNonumberBase delay (with random jitter) applied before each keyword's search, to stay polite to the search engines. Minimum 0, maximum 10, default 0.5.0.5
proxyConfigurationNoobject (proxy editor)Default: no proxy (saves cost). If search engines block the request, the Actor automatically escalates: no-proxy โ†’ datacenter โ†’ residential (3 retries). After a successful fallback, the chosen proxy is reused for all remaining keywords. You can pre-configure Apify Proxy here if you want to start with one.{ "useApifyProxy": false }

โš ๏ธ One real constraint: the urls parameter's own escalation ladder ignores any custom apifyProxyGroups you set beyond the initial run โ€” once the Actor has to escalate past your chosen tier, it always escalates to the Apify RESIDENTIAL group specifically, not to whichever custom groups you configured. If you need a specific residential group throughout, that only applies to the very first request of the run.

๐Ÿ’ก Example input

{
"urls": ["alma.fr", "Stripe payments", "Anthropic AI", "\"OpenAI\""],
"maxResultsPerKeyword": 30,
"engines": ["ddgs", "bing"],
"workers": 3,
"maxRetries": 2,
"baseDelay": 0.5,
"proxyConfiguration": { "useApifyProxy": false }
}

Supported keyword and input formats

Despite the field name urls, this parameter is not restricted to literal URLs โ€” it is a list of search keywords, and each accepted format maps to a different real-world starting point:

  • Domain: alma.fr โ€” resolves a website you already have to its LinkedIn page
  • Quoted exact company name: "Stripe Inc" โ€” forces an exact-match phrase search when a plain name is too common
  • Brand + qualifier: "Stripe" payments โ€” disambiguates a brand name that could match multiple entities

๐Ÿ“ฆ Output Format

The Actor pushes one row per keyword-to-company match (or one row per keyword if nothing matched), live, as each result is found. Every row shares the same nine-field shape โ€” the two examples below show its two structural states. Data can be exported from the dataset as JSON, CSV, or XLSX.

Output for a matched keyword

{
"linkedin": "https://www.linkedin.com/company/alma-studio-paris",
"input": "alma.fr",
"slug": "alma-studio-paris",
"resultTitle": "Alma Studio Paris | LinkedIn",
"resultSnippet": "Alma Studio Paris | 1,234 followers on LinkedIn. Creative studio based in Paris...",
"foundBy": "bing+ddgs",
"proxyMode": "no-proxy",
"error": null,
"scrapedAt": "2026-07-30T09:14:22.104112+00:00"
}
FieldDescription
linkedinCanonical LinkedIn company URL, https://www.linkedin.com/company/<slug>. null when no match was found.
inputThe keyword exactly as supplied in urls.
slugThe LinkedIn slug โ€” everything after /company/. null when no match.
resultTitleTitle of the search-engine result that produced this match, when available.
resultSnippetSnippet/description text from the search-engine result, when available.
foundByWhich engine(s) returned this URL: ddgs, bing, or bing+ddgs. null when no match.
proxyModeProxy tier active when this row was fetched: no-proxy, datacenter, or residential.
errornull on a successful match; otherwise a short reason no match was found for this keyword.
scrapedAtISO-8601 UTC timestamp of when the row was collected.

Output for an unmatched keyword (uncharged)

{
"linkedin": null,
"input": "very-rare-keyword-2026",
"slug": null,
"resultTitle": null,
"resultSnippet": null,
"foundBy": null,
"proxyMode": "residential",
"error": "ddgs: temporary hiccup, retrying; bing: temporary hiccup, retrying",
"scrapedAt": "2026-07-30T09:15:03.881044+00:00"
}

The Actor charges the row_result event only on a matched row โ€” the code path that pushes an unmatched-keyword row does not pass a charged_event_name, so these rows appear in the dataset but are not billed. To pull only the billable rows from an exported dataset, filter on error === null (equivalently, linkedin !== null).

Schema stability and export options

Every field name above comes from a fixed Python dict built in src/main.py โ€” it does not depend on LinkedIn's front-end at all, because the Actor never renders or parses a LinkedIn page. The only front-end dependency is Bing's SERP markup, and that path already has a regex fallback (see Core features) so a Bing layout change degrades rather than breaks the schema. Results are available as JSON, CSV, or XLSX through the Apify dataset export options, and live during the run via the Apify Console's live view.


๐Ÿ’ก LinkedIn Mass Company Profile Finder Strategy Guide

๐ŸŽฏ Strategy 1: Real-time enrichment pipeline

Trigger a run whenever a new lead or account record lands in your CRM, keyed on the domain or company name field you already have. Pass that single value in urls, keep workers low since you're processing one record at a time, and write the returned linkedin and slug fields back onto the CRM record once the run completes. A foundBy: "bing+ddgs" result is a stronger enrichment signal than a single-engine match and can be used to auto-approve the write-back while single-engine matches go to manual review.

๐ŸŽฏ Strategy 2: Scheduled monitoring and alerting

Set up an Apify Console Schedule to re-run the same brand or competitor keyword on a recurring basis. Store each run's slug values and diff the new run's set against the previous one โ€” a slug that appears for the first time is a new LinkedIn company page tied to that keyword, worth a manual look. This pattern relies on the Apify platform's Schedules feature, not on anything the Actor tracks internally between runs.

๐ŸŽฏ Strategy 3: Bulk dataset build

For a research or prospecting dataset, load the full keyword list into urls in one run โ€” the field accepts 1, 10, or 1000+ entries โ€” and raise workers toward its documented maximum of 20 to shorten wall-clock time. Export the finished dataset directly to CSV for import into a spreadsheet or downstream database; maxResultsPerKeyword (documented maximum 200) controls how deep each individual keyword search goes.

Strategy comparison at a glance

StrategyBest forRun patternOutput format
Real-time enrichmentInbound leads/accounts, one at a timeSingle triggered run per recordJSON via the Apify API
Scheduled monitoringOngoing brand/competitor trackingApify Console Schedule, recurring run, diff on slugJSON/CSV per run
Bulk dataset buildLarge keyword or prospect listsOne run, urls array, workers raised toward 20CSV/XLSX export

Scraper NameWhat it extracts
LinkedIn Company Profile Scraper & Associated EmployeesFull company profile fields, affiliated/showcase pages, and associated-employee rows for a LinkedIn company URL
LinkedIn Lead ScraperIndividual LinkedIn profiles/posts and lead contact addresses surfaced via keyword search

Both are Scrapio Actors. A common pipeline is: run LinkedIn Mass Company Profile Finder to resolve keywords to company URLs, then pass those URLs into LinkedIn Company Profile Scraper & Associated Employees for the full profile and employee detail.


๐Ÿ”Œ How to integrate LinkedIn Mass Company Profile Finder with your stack

LinkedIn Mass Company Profile Finder works with any language or tool that can make an HTTP request or use the Apify SDK client libraries.

Python

from apify_client import ApifyClient
import csv
client = ApifyClient("<APIFY_API_TOKEN>")
run_input = {
"urls": ["alma.fr", "Stripe payments", "Anthropic AI"],
"maxResultsPerKeyword": 30,
"engines": ["ddgs", "bing"],
"workers": 5,
}
run = client.actor("<your-username>/linkedin-mass-company-profile-finder").call(run_input=run_input)
with open("companies.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["input", "linkedin", "slug", "foundBy", "proxyMode"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item["error"] is None:
writer.writerow([item["input"], item["linkedin"], item["slug"], item["foundBy"], item["proxyMode"]])
print("Matched rows written to companies.csv")

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_API_TOKEN>' });
const run = await client.actor('<your-username>/linkedin-mass-company-profile-finder').call({
urls: ['alma.fr', 'Stripe payments', 'Anthropic AI'],
maxResultsPerKeyword: 30,
engines: ['ddgs', 'bing'],
workers: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const matches = items.filter((item) => item.error === null);
console.log(`Found ${matches.length} LinkedIn company URLs`);
matches.forEach((m) => console.log(`${m.input} -> ${m.linkedin} (${m.foundBy})`));

Async and scheduled pipelines

For fire-and-forget large jobs, start the run with the Apify API's runs endpoint (returns a run ID immediately) instead of the synchronous run-sync-get-dataset-items endpoint, then poll the run status or attach an Apify webhook on run completion to pull the dataset once it finishes. For recurring keyword sets, use an Apify Console Schedule instead of an external cron job.


๐ŸŽฏ Who Needs LinkedIn Mass Company Profile Finder? (Use Cases & Industries)

๐Ÿข Sales development and B2B prospecting teams

Convert a target list of domains or brand names into verified linkedin company URLs before outreach, attaching slug and foundBy to each CRM record so reps know which matches are highest-confidence.

๐Ÿ“Š Revenue operations and data teams

Batch-enrich an entire account list in one run, exporting linkedin, slug, and scrapedAt straight into a data warehouse table keyed on the original input keyword.

๐Ÿ“ฑ Marketing and competitive intelligence teams

Track a competitor or industry keyword on a recurring schedule, watching for new slug values appearing in foundBy that indicate a newly indexed company page.

๐Ÿ”ฌ Researchers

Build a directory of companies operating in a niche or region from keyword lists, using only publicly indexed search-engine data โ€” no LinkedIn account or authenticated access involved.

๐ŸŽฅ Product and SaaS builders

Use the linkedin/slug/foundBy resolution as a building block inside a broader enrichment API or B2B directory product, without building and maintaining your own search-engine scraping layer.


Scraping publicly accessible data is generally lawful in the United States: in hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019), the court held that scraping publicly available LinkedIn data does not violate the Computer Fraud and Abuse Act. LinkedIn Mass Company Profile Finder does not scrape LinkedIn at all โ€” it queries DuckDuckGo's and Bing's public search results with a site:linkedin.com/company filter and returns only what those search engines already show to any anonymous visitor, so it never touches LinkedIn's authenticated content or its Terms of Service directly. Violating a platform's Terms of Service is a separate question from criminal liability โ€” it is a civil contract matter between the platform and the account holder, and this Actor never creates or uses a LinkedIn account. The primary data this Actor returns โ€” a company's public LinkedIn URL and slug โ€” is a business identifier, not personal data; the resultSnippet field is public search-engine caption text and may occasionally include names, so treat it accordingly if you store it. LinkedIn Mass Company Profile Finder returns only publicly accessible data. What you do with that data is your responsibility โ€” consult legal counsel for commercial applications involving personal data.


โ“ Frequently asked questions

Does LinkedIn Mass Company Profile Finder work without a LinkedIn account?

Yes. The Actor never logs into LinkedIn and never requires LinkedIn credentials โ€” it only queries DuckDuckGo and Bing's public search results.

How does LinkedIn Mass Company Profile Finder handle anti-scraping measures?

It never faces LinkedIn's anti-bot layer directly, since it doesn't request linkedin.com. Against DuckDuckGo and Bing, it rotates user agents, applies per-engine retries with exponential backoff, adds jittered delays between keyword searches, and escalates through a no-proxy โ†’ datacenter โ†’ residential proxy ladder only when a request is blocked.

Can I run it at scale without getting blocked?

The Actor is designed to keep running through blocks rather than fail: workers (up to 20) controls parallelism, maxRetries (up to 5) controls per-engine retry attempts, and the proxy ladder escalates automatically and then locks onto whichever tier last worked. No uptime or success-rate figure is published for this behavior โ€” treat the proxy ladder as best-effort mitigation, not a guarantee.

How fresh is the data LinkedIn Mass Company Profile Finder returns?

Every run performs a live search against DuckDuckGo and Bing at execution time โ€” nothing is cached or served from a previous run.

Yes, in the sense that this Actor only reads already-public search-engine results. See the "Is it legal" section above for the full explanation, including the hiQ Labs v. LinkedIn (9th Cir. 2019) precedent on scraping public data generally.

Which fields work best for AI training and RAG indexing?

For RAG, resultSnippet is the highest-information free-text field โ€” embed it alongside the linkedin URL as the retrievable chunk. For training data, linkedin, slug, and foundBy are the fields with the most consistent structure across every row. All fields return as typed JSON primitives (strings or null), so no HTML parsing or normalization is needed before use.

Does this Actor return personal data?

No โ€” it returns company-level LinkedIn URLs and public search-result caption text, not individual profiles. resultSnippet is free text sourced from a search engine and could incidentally mention a person's name; lawful basis for storing or using any such text sits with you.

Does LinkedIn Mass Company Profile Finder work with Claude, ChatGPT, and other AI agent tools?

It has no dedicated MCP server, but it is callable as an HTTP endpoint by any agent framework through the Apify API โ€” every response is typed JSON, ready to drop into an LLM context window without preprocessing.

How does LinkedIn Mass Company Profile Finder compare to other Scrapio LinkedIn Actors?

It is narrower by design: it only resolves a keyword to a LinkedIn company URL, it does not scrape company profile fields (industry, size, description) or employee data. For that, pair it with LinkedIn Company Profile Scraper & Associated Employees, which picks up where this Actor leaves off.


โ„น๏ธ Disclaimer

LinkedIn Mass Company Profile Finder extracts only publicly available data surfaced by DuckDuckGo and Bing's search results. This tool is intended for lawful use cases only. Users are responsible for complying with LinkedIn's terms of service and applicable data protection laws in their jurisdiction.