LinkedIn Profile Data & LinkedIn Profile Finder, No Cookies avatar

LinkedIn Profile Data & LinkedIn Profile Finder, No Cookies

Pricing

$30.00 / 1,000 profiles

Go to Apify Store
LinkedIn Profile Data & LinkedIn Profile Finder, No Cookies

LinkedIn Profile Data & LinkedIn Profile Finder, No Cookies

Scrape LinkedIn profile data in bulk — no login, no cookies. Profiles, companies and verified emails where available: search decision-makers by company and job title, or paste profile and company URLs. Returns name, headline, contact data, experience, education and 70+ fields. CSV, JSON or Excel.

Pricing

$30.00 / 1,000 profiles

Rating

0.0

(0)

Developer

Andrey Afanasenko

Andrey Afanasenko

Maintained by Community

Actor stats

0

Bookmarked

142

Total users

36

Monthly active users

4 days ago

Last modified

Share

Apify Actor

Build and enrich LinkedIn lead lists without login or cookies — search for decision-makers by company & job title, or paste profile/company URLs in bulk. Get name, headline, experience, education, followers, company size, industry and 70+ fields per record.

🎯 What it does

You feed the actor LinkedIn URLs (profiles or companies) OR a search criteria (keyword + optional industry, or "decision-makers at this company") — it returns clean, structured rows ready for a CRM, sheet, or downstream agent.

ModeInputWhat it returns
1: Lookup Profile by URL (lookupByUrl)LinkedIn profile URLs1 row per URL, 46 fields, plus a work email when findEmails is on. Cost cap: maxItemsMode1.
2: Lookup Company by URL/Domain (companyLookup)Company URLs or raw domains1 row per input, 26 fields. Cost cap: maxItemsMode2.
3: Search Leads (searchLead)Company URLs + optional job titleSlim profile rows for decision-makers matching the title. Cost caps: maxItemsMode3 (total) + searchLeadCount (per-company).
4: Search Companies (searchCompany)Keyword + optional industriesFull company rows (the same 26 fields as Mode 2). Cost cap: maxItemsMode4.
  • 46 fields per profile — full_name, headline, about, current job_title + company, full experiences[] / educations[], follower_count, verification flags, parsed location, current-employer enrichment (industry, employee count, year founded), languages, and a work email (verified) or emailGuess (unverified) with its email_status when you turn on findEmails.
  • 26 fields per company — company_name, description, tagline, industries[], specialties[], employee_count, employee_range, year_founded, website, logo_url, follower_count, full HQ address, locations[], affiliated_companies[].
  • 6 advanced filters — follower range, must-have email, open-to-work, country, industry — applied across all modes.

Work emails: turn on findEmails (Mode 1) and the actor looks for each person's work email address. An address is found for about half of profiles, and email_status says how sure it is. A verified address (valid — the mailbox accepts mail) goes in email. An unverified one (risky — the company's mail server accepts any address, so delivery is not guaranteed) goes in emailGuess instead, and email stays N/A. It is slower — up to a minute per profile. From 6 November 2026 each profile delivered with a verified email in email costs an extra $0.03 ("Email found"); an emailGuess is free, and a profile without an address costs the profile price only. mustHaveEmail turns the search on and keeps only profiles with an address in either column; fetched profiles are billed even if your filters exclude them. Phone numbers are not available.

📦 What you get — output sample

{
"entity_type": "profile",
"input": "https://www.linkedin.com/in/satyanadella/",
"linkedin_url": "https://www.linkedin.com/in/satyanadella",
"full_name": "Satya Nadella",
"first_name": "Satya",
"last_name": "Nadella",
"headline": "Chairman and CEO at Microsoft",
"job_title": "Chairman and CEO",
"company": "Microsoft",
"company_industry": "Software Development",
"company_employee_count": 228000,
"follower_count": 11489320,
"city": "Redmond",
"country": "United States",
"is_premium": true,
"is_verified": true,
"experiences": [ { "title": "CEO", "company": "Microsoft", "starts_at": "2014-02-01" } ],
"educations": [ { "school": "University of Chicago", "degree": "MBA" } ],
"profile_image_url": "https://media.licdn.com/dms/image/.../satya-nadella.jpg"
}
{
"entity_type": "company",
"input": "microsoft.com",
"linkedin_url": "https://www.linkedin.com/company/microsoft",
"company_name": "Microsoft",
"tagline": "Empowering every person and organization on the planet to achieve more.",
"industries": ["Software Development"],
"specialties": ["Software", "Cloud", "AI", "Productivity"],
"employee_count": 228000,
"employee_range": "10,001+",
"year_founded": 1975,
"follower_count": 25190000,
"domain": "microsoft.com",
"website": "https://news.microsoft.com",
"logo_url": "https://media.licdn.com/dms/image/.../microsoft-logo.png",
"hq_city": "Redmond",
"hq_country": "US"
}

Missing optional fields come back as the string "N/A" — every always-emitted column appears in every row, so downstream tools (Sheets / Airtable / CSV) don't have to special-case missing values. See .actor/dataset_schema.json for the full per-column declaration.

⚡ Quick start

Minimal input that works on the free plan:

{
"operationMode": "lookupByUrl",
"profileUrls": ["https://www.linkedin.com/in/satyanadella/"]
}

Run, open Storage → Dataset, see one enriched row. Add more URLs to scale up.

🎯 Example tasks

Ready-to-run examples — each opens a pre-configured task you can run in one click (no setup):

🛠 Input

SectionFields
Mode pickeroperationMode (required)
Mode 1profileUrls, findEmails, maxItemsMode1
Mode 2companyInputs, maxItemsMode2
Mode 3searchLeadCompanyUrls, searchLeadJobTitle, searchLeadCount, maxItemsMode3
Mode 4searchCompanyKeywords, searchCompanyIndustries, searchCompanyCount, maxItemsMode4
Advanced filteringminFollowers, maxFollowers, mustHaveEmail, openToWorkOnly, countryFilter, industryFilter

See .actor/input_schema.json for the authoritative declaration.

💰 Pricing

Pay-per-event. You're charged once per fetched record, regardless of mode.

EventPriceTrigger
Profile Analyzed$0.030Each profile or company successfully retrieved and processed by the actor
Email found (from 6 November 2026)$0.030Each profile delivered with a verified work email in email (email_status = valid), only when findEmails or mustHaveEmail is on. An unverified address in emailGuess is never charged

Examples:

  • 100 profiles in Mode 1 → 100 × $0.030 = $3.00
  • 100 profiles in Mode 1 with findEmails on, 20 of them with a verified email (from 6 November 2026) → $3.00 + 20 × $0.030 = $3.60; unverified guesses add nothing
  • 5 companies in Mode 2 → 5 × $0.030 = $0.15
  • Mode 3 with 4 target companies × 25 leads each = 100 leads → $3.00
  • Mode 4 returning 25 company matches → 25 × $0.030 = $0.75

Filters and billing: Filters narrow your output, not your bill. The paid event fires when the row is fetched — even if your filter then drops it. Use cost-control caps (maxItemsModeN) to bound spend; use filters to narrow signal.

🆓 Free vs paid plan

FreePaid
Items per run50 maxunlimited (capped only by your cost-control field)
Profiles per month100 (resets on the 1st)unlimited
Trial run cap10 (auto, when input matches the example)n/a
All 4 modes✅✅
Advanced filters✅✅
Live status page✅✅

🧪 Filter recipes

Drop these straight into the input editor.

Find SaaS founders in the US (Mode 4 → Mode 3 → Mode 1):

Step 1 — find SaaS companies:

{
"operationMode": "searchCompany",
"searchCompanyKeywords": "saas",
"searchCompanyIndustries": ["software"],
"countryFilter": "United States",
"searchCompanyCount": 50
}

Step 2 — find founders at those companies (paste company URLs from Step 1):

{
"operationMode": "searchLead",
"searchLeadCompanyUrls": ["...", "...", "..."],
"searchLeadJobTitle": "founder",
"searchLeadCount": 25
}

Engineering managers at top tech companies (Mode 3 with a follower filter):

{
"operationMode": "searchLead",
"searchLeadCompanyUrls": [
"https://www.linkedin.com/company/microsoft/",
"https://www.linkedin.com/company/google/",
"https://www.linkedin.com/company/anthropic/"
],
"searchLeadJobTitle": "engineering manager",
"minFollowers": 500,
"searchLeadCount": 50
}

Bulk enrich your CRM list (Mode 1 with relevance filter):

{
"operationMode": "lookupByUrl",
"profileUrls": ["...100 URLs..."],
"minFollowers": 1000,
"industryFilter": "software"
}

📡 Live status & storage records

Every run writes structured JSON records to its key-value store, AND serves a live status page over HTTP while running.

KeyFormatContent
RUN_SUMMARYJSONEnd-of-run aggregate: stop reason, mode, processedCount, paidEventsFired, itemsScraped/Filtered, demoCapped, wallClockSec
USER_MESSAGEJSONFirst-paid-run welcome / 3rd-run check-in (paid plan)
FREE_LIMITS_APPLIEDJSONWhich free-plan caps fired (e.g. freeLimitPropertyCount)
SKIPPED_ITEMSJSONInputs we couldn't process + reason
status.htmlHTMLLive progress page (auto-refreshes every 3s)

While the run is active, the live page is reachable at the actor's container URL (Apify shows it under "Live view"). For programmatic monitoring:

# Poll JSON status
curl https://<run-container-url>/api/status

Returns { isRunning, progress: {total, analyzed, saved, skippedByFilters, percentage}, cost: {spent, currency}, timing: {elapsedSeconds, startedAt}, settings: {mode, plan} }.

🤖 Programmatic / API use

# Trigger a run via Apify API
curl -X POST "https://api.apify.com/v2/acts/afanasenko~linkedin-profile-api-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"operationMode": "lookupByUrl",
"profileUrls": ["https://www.linkedin.com/in/satyanadella/"]
}'

Fetch dataset items:

$curl "https://api.apify.com/v2/datasets/<datasetId>/items?token=$APIFY_TOKEN&clean=1&format=json"

Read RUN_SUMMARY:

$curl "https://api.apify.com/v2/key-value-stores/<storeId>/records/RUN_SUMMARY?token=$APIFY_TOKEN"

❓ FAQ

Are filters charged? Filters narrow output, not bill. The paid event fires when a row is fetched; filtering it out doesn't refund. Use maxItemsModeN to cap spend.

Can I scrape private profiles? No. Only public LinkedIn data is available. Profiles set to private return "Profile not found" with no charge.

What's the difference between Mode 3 (slim) and Mode 1 (full)? Mode 3 returns slim rows (10 fields per match) from the search index — cheap way to discover relevant profiles. Feed those URLs back into Mode 1 for full 46-field enrichment.

Is data live? Yes. Each lookup hits LinkedIn's public profile in real time (no stale cache).

Why do I sometimes see a row where most fields are "N/A"? For Mode 3/4 search results, the slim row holds only the search-index fields. Re-run those URLs through Mode 1 / Mode 2 to fill the full schema.

How do I pause / resume a long run? Apify's Resurrect feature works — the actor doesn't keep internal state across resurrections, so each resurrection starts fresh from the input. Better pattern for big lists: split inputs into batches of 500-1000 per run.

Do I need my own LinkedIn account, cookies, or login? No. You don't connect your LinkedIn account and there's nothing to log into — paste URLs or search criteria and run. Only public LinkedIn data is returned.

Can I bulk-enrich a big list of profile URLs? Yes. Mode 1 takes many profile URLs at once. For very large lists, split into batches of 500–1000 per run and set maxItemsMode1 to cap spend.

🔗 Other LinkedIn / lead-gen scrapers (same author)

You start with…You want to find…Use this actor
LinkedIn profile URLsBulk-enrich profiles + companiesThis actor — Mode 1 / Mode 2
Search criteria (keyword / company / job title)Decision-makers + companies via search indexThis actor — Mode 3 / Mode 4
Job titles, companies or countriesA list of people — employees and decision makers, up to 2,500 per searchLinkedIn People Search
LinkedIn job criteria / job-posting URLs / company URLsJob listings + full description, skills, salary, hiring teamLinkedIn Jobs Scraper
Instagram handlesProfile data + 5 discovery modes (followers, similar, keyword, location)Instagram Profile Scraper
TikTok profile / hashtagProfile data + postsTikTok Profile Scraper
YouTube channel URL / handleChannel + video metadataYouTube Channel Scraper
US ZIP / addressProperty listings + market dataZillow Scraper

🛟 Support & feedback

Found a bug? Have a feature request? Open an issue on the actor's Apify Store page Issues tab — that's the canonical channel and I get a notification on every new issue.

💡 Tips & Best Practices

Getting max results

  • For Mode 3 (Search Leads): job-title filter is fuzzy — engineer matches software engineer, staff engineer, principal engineer. Use specific titles (VP of engineering) when you want narrow.
  • For Mode 4 (Search Companies): keywords are AND-style — saas analytics matches companies that mention both. Try single keywords first to gauge volume.
  • For Mode 1: company-URL inputs auto-route through company lookup, so you can mix profile and company URLs in one run.

Cost optimization

  • Use maxItemsModeN aggressively when testing — 5-10 first to validate output, then scale up.
  • Mode 3 / Mode 4 find leads and companies you don't have links for yet: a single search returns up to 100 slim rows (25 by default), at the same $0.030/row that Mode 1 / Mode 2 charge per full record.
  • Filters don't reduce billing but reduce noise — apply industryFilter + countryFilter for tighter targeting BEFORE pasting URLs into a Mode 1 follow-up pass.

Performance

  • Mode 1 and Mode 2 look up several profiles or companies at once — usually a few seconds each, up to a minute each with findEmails on. The live status page shows progress. Runs you start at the same time share capacity, so each one finishes more slowly while they overlap.
  • Mode 3 / Mode 4 searches answer directly — usually a few seconds for 25 people or companies. A search with no matches ends in seconds with a clear no-results message.

Data quality

  • LinkedIn profiles update daily; running the same URL twice in a week may return slightly different follower_count / headline.
  • "N/A" is intentional — always-emitted columns let you write IF(field == "N/A", ...) instead of null-checking.
  • Mode 3 lead rows are slim by design (name, title, company, location, about, profile URL) — feed their URLs into Mode 1 for full profiles and work emails.

⚖️ Disclaimer

This actor scrapes only publicly available LinkedIn data. You are responsible for using the data in accordance with LinkedIn's Terms of Service, applicable privacy laws (GDPR, CCPA), and ethical-use guidelines. The actor does not scrape private profiles, paid LinkedIn features (Sales Navigator), or content behind login walls.