LinkedIn Public Profile Search Scraper avatar

LinkedIn Public Profile Search Scraper

Pricing

from $0.03 / 1,000 profile results

Go to Apify Store
LinkedIn Public Profile Search Scraper

LinkedIn Public Profile Search Scraper

Find public LinkedIn people profile URLs from keyword, title, company, and location searches. Export names, headlines, snippets, query, and rank.

Pricing

from $0.03 / 1,000 profile results

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

9

Monthly active users

11 days ago

Last modified

Categories

Share

Find public LinkedIn people profile URLs from keyword, title, company, and location searches. This actor is built for top-of-funnel discovery: give it recruiter or sales queries and it returns public search-result metadata for LinkedIn /in/ profiles.

It does not log in to LinkedIn, does not scrape private LinkedIn people search pages, and does not require cookies. The actor uses public search-result surfaces to discover profile URLs and useful snippets.

What does LinkedIn Public Profile Search Scraper do?

LinkedIn Public Profile Search Scraper searches the public web for LinkedIn profile results that match your query.

Typical input queries include:

  • software engineer Berlin
  • head of sales SaaS London
  • founder fintech New York
  • site:linkedin.com/in product manager climate tech

For each public result, the actor saves:

  • profile URL
  • parsed name
  • parsed headline or title
  • best-effort company
  • best-effort location
  • public search snippet
  • source query
  • result rank
  • timestamp

Who is it for?

This actor is useful for teams that need repeatable profile discovery without maintaining their own SERP parser.

  • 🧑‍💼 Recruiters building candidate sourcing lists
  • 📣 SDRs searching for decision makers by role and market
  • 🏢 Agencies preparing lead lists for niche campaigns
  • 📊 Data teams enriching an existing company or keyword workflow
  • 🧪 Growth teams testing ICP and persona keywords

Use this actor when you do not yet know the exact LinkedIn profile URLs. If you already have URLs and need profile enrichment, use a profile enrichment actor instead.

Why use this actor?

LinkedIn's native people search is login-gated. Many workflows only need public profile discovery, not private LinkedIn data.

This actor focuses on the public discovery step:

  • no LinkedIn account required
  • no browser automation required
  • transparent source query for each result
  • deduped profile URLs
  • simple dataset rows for CRM and spreadsheet workflows

Public-search approach

The actor automatically adds site:linkedin.com/in to your queries by default.

That means a query like:

software engineer Berlin

is executed as:

site:linkedin.com/in software engineer Berlin

You can disable this if you want to write your own advanced query operators.

Input

The input is intentionally small and search-focused.

{
"queries": [
"software engineer Berlin",
"head of sales SaaS London"
],
"maxItems": 25,
"maxPagesPerQuery": 2,
"forceLinkedInSiteSearch": true,
"market": "en-US",
"requestDelayMillis": 1000
}

Input fields

FieldTypeDescription
queriesarraySearch queries such as title, company, seniority, industry, and location.
maxItemsintegerMaximum profile results to save across all queries.
maxPagesPerQueryintegerMaximum search result pages to inspect per query.
forceLinkedInSiteSearchbooleanAdds site:linkedin.com/in unless already present.
marketstringSearch localization code such as en-US, en-GB, or de-DE.
requestDelayMillisintegerPolite delay between search result requests.

Output

Each dataset item represents one public LinkedIn profile search result.

{
"profileUrl": "https://www.linkedin.com/in/example-person/",
"name": "Example Person",
"headline": "Head of Sales - Example SaaS",
"company": "Example SaaS",
"location": "London",
"snippet": "Experience: Example SaaS · Location: London...",
"title": "Example Person - Head of Sales - Example SaaS | LinkedIn",
"sourceQuery": "head of sales SaaS London",
"normalizedQuery": "site:linkedin.com/in head of sales SaaS London",
"searchEngine": "brave",
"searchResultRank": 1,
"pageNumber": 1,
"resultUrl": "https://www.linkedin.com/in/example-person/",
"scrapedAt": "2026-06-24T05:32:22.425Z"
}

Output fields

FieldDescription
profileUrlNormalized LinkedIn /in/ profile URL.
nameBest-effort name parsed from the result title.
headlineBest-effort headline or job title.
companyBest-effort company when the title exposes one.
locationBest-effort location from the public snippet.
snippetPublic search result snippet.
titleRaw search result title.
sourceQueryOriginal user query.
normalizedQueryQuery actually sent to search.
searchEngineSearch surface used by the actor.
searchResultRankDeduped output rank.
pageNumberSearch results page inspected.
resultUrlCleaned result URL.
scrapedAtISO timestamp.

How much does it cost to search public LinkedIn profiles?

The actor uses live pay-per-event pricing on Apify. You pay one small run-start event plus one event for each profile result saved to the dataset.

EventWhen it is chargedLive price
Actor startOnce when a run starts$0.005 per run
Profile resultPer saved LinkedIn public profile resultTiered by your Apify plan
Apify plan tierProfile result price
Free$0.000054817 per result
Bronze$0.000047667 per result
Silver$0.000037180 per result
Gold$0.000028600 per result
Platinum$0.000019067 per result
Diamond$0.000013347 per result

Example costs using the Free tier price:

Run sizeCost formulaEstimated cost
25 profiles$0.005 + 25 × $0.000054817~$0.0064
100 profiles$0.005 + 100 × $0.000054817~$0.0105
1,000 profiles$0.005 + 1,000 × $0.000054817~$0.0598

Higher Apify plan tiers pay less per saved profile result. The actor stops charging per-item events when it stops saving new dataset rows.

How to search LinkedIn profiles by role and location

  1. Add one or more role/location queries.
  2. Keep forceLinkedInSiteSearch enabled.
  3. Start with maxItems 25-100.
  4. Export the dataset to CSV, JSON, Google Sheets, or your CRM pipeline.

Example:

{
"queries": ["vp engineering healthcare Boston"],
"maxItems": 50,
"maxPagesPerQuery": 3
}

How to search LinkedIn profiles by company

Use company names with a target role.

{
"queries": [
"data engineer Snowflake Berlin",
"product marketing manager Stripe London"
],
"maxItems": 100
}

Query tips

Better queries produce better leads.

  • Add geography when location matters.
  • Use seniority words such as founder, director, vp, or head of.
  • Add niche terms such as climate tech, B2B SaaS, or cybersecurity.
  • Split unrelated personas into separate queries.
  • Keep broad discovery runs moderate, then refine.

Integrations

The output works well with common Apify integrations.

  • Export profile URLs to Google Sheets.
  • Send datasets to Make or Zapier.
  • Feed URLs into a separate LinkedIn profile enrichment actor.
  • Join results with company-domain or email-pattern workflows.
  • Store query/rank data in your warehouse for sourcing analytics.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/linkedin-public-profile-search-scraper').call({
queries: ['head of sales SaaS London'],
maxItems: 25,
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/linkedin-public-profile-search-scraper").call(run_input={
"queries": ["software engineer Berlin"],
"maxItems": 25,
})
print(run["defaultDatasetId"])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-public-profile-search-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"queries":["founder fintech New York"],"maxItems":25}'

MCP usage

Use this actor from Apify MCP tools when you want to ask an AI assistant to build a lead list.

MCP endpoint:

https://mcp.apify.com/?tools=automation-lab/linkedin-public-profile-search-scraper

Claude Code setup:

$claude mcp add apify-linkedin-search "https://mcp.apify.com/?tools=automation-lab/linkedin-public-profile-search-scraper"

Claude Desktop JSON config:

{
"mcpServers": {
"apify-linkedin-search": {
"url": "https://mcp.apify.com/?tools=automation-lab/linkedin-public-profile-search-scraper"
}
}
}

Example prompts:

  • "Find 50 public LinkedIn profile URLs for heads of sales at SaaS companies in London."
  • "Search for Berlin software engineers and return profile URLs with snippets."
  • "Create a sourcing list for fintech founders in New York."

Legality and privacy

This actor is intended for public web search results. It does not bypass LinkedIn login, does not collect private LinkedIn account data, and does not require user cookies.

You are responsible for using the output lawfully, respecting applicable privacy rules, and honoring platform terms and outreach regulations.

Limitations

Public search results are not the same as LinkedIn's internal people search.

  • Search engines may omit, reorder, or localize results.
  • Some snippets may be stale.
  • Name, company, and location parsing is best effort.
  • Direct profile enrichment is intentionally excluded from the MVP.
  • Search engines can throttle unusually aggressive runs.

Troubleshooting

If you get too few results:

  • broaden the query
  • increase maxPagesPerQuery
  • try another market
  • remove overly specific quoted phrases

If results look too broad:

  • add location
  • add seniority
  • add industry keywords
  • split multiple personas into separate queries

Related Automation Lab actors for the same buyer journey:

Use this actor first for discovery, then use enrichment actors when you already have profile URLs.

FAQ

Does this actor log in to LinkedIn?

No. It only uses public search-result surfaces.

Can it guarantee every matching LinkedIn profile?

No. Search engines rank and filter public results. Treat the output as a discovery list, not an exhaustive LinkedIn database.

Why are some fields null?

Search snippets vary. The actor always returns the profile URL and query metadata when a valid result is found; name, company, and location are best-effort parsed fields.

Can I use advanced search operators?

Yes. Leave forceLinkedInSiteSearch enabled for normal use, or disable it when you want full control over the query.

Data quality checklist

Before using a large list, review a sample of results.

  • Confirm profile URLs are relevant.
  • Check whether the query is too broad.
  • Deduplicate across campaigns if needed.
  • Feed only relevant URLs into downstream enrichment.

Operational notes

The actor is HTTP-based and lightweight. Default memory is 256 MB. The built-in request delay is conservative to avoid unnecessary throttling.

Changelog

Initial version: public LinkedIn profile discovery via search-result surfaces with deduped /in/ profile URLs, snippets, source query, rank, and parsed person metadata.