LinkedIn Profile Email Finder — Pay Per Find
Pricing
from $4.00 / 1,000 usable linkedin profiles
LinkedIn Profile Email Finder — Pay Per Find
LinkedIn email finder from profile URLs → name, company, optional verified work email. Pay only for usable profiles and emails found. Privacy: https://api.apify.com/v2/key-value-stores/jZUn8TR3AeaEwtT2h/records/linkedin-profile-verified-email-privacy.en.html?signature=PcrXf7uRJ0kRmb0GyaoF
Pricing
from $4.00 / 1,000 usable linkedin profiles
Rating
5.0
(3)
Developer
Pequod
Maintained by CommunityActor stats
1
Bookmarked
87
Total users
41
Monthly active users
a day ago
Last modified
Categories
Share
LinkedIn Profile + Verified Email — Pay Only When Found
Pay-per-event actor that delivers one dataset row per input URL, in input order, and bills only after the row is written to the dataset.
Provide public LinkedIn /in/<slug> profile URLs. The actor fetches profile
fields from an upstream people scraper (name, headline, company, location,
company website) and optionally runs an offline-first email cascade that
charges only when a deliverable email is found.
Features
- One row per URL — input order preserved; duplicates can be skipped
- Full public profiles — name, headline, company, location, and company website from an upstream people scraper (not guest HTML)
- Verified work email when MillionVerifier says sendable — domain resolve → person-shaped patterns (
{first}.{last},{f}.{last}, …) → industry-grade verification - Catch-all guesses returned, never billed —
emailConfidence=riskyon catch-all domains;email-foundfires only forverified - Transparent billing —
qualifiedEvents/excludedEventson every row; amounts in KVbilling-reconciliation - Resume-safe — reconciliation flushed on
ABORTING/MIGRATING
Input
| Field | Type | Default | Description |
|---|---|---|---|
profileUrls | string[] | required | LinkedIn public profile URLs (/in/...) |
findEmail | boolean | true | Run email cascade after a usable profile |
acceptPatternEmails | boolean | true | Catch-all guesses are always written as risky and never billed. Kept for stored tasks; the flag no longer hides the address |
skipDuplicates | boolean | true | Deduplicate URLs within the run |
maxRetriesPerProfile | integer | 1 | Datacenter attempts; residential HTTP fallback is capped at 2 |
enableBrowserFallback | boolean | false | Anonymous Firefox fallback on residential proxy; never accepts authenticated LinkedIn cookies |
maxConcurrency | integer | 8 | In-flight profile fetches |
proxyConfiguration | object | DATACENTER | Apify Proxy settings |
Apify free trial (platform)
On the Apify platform, free-plan users get the full product (profile + email cascade) with tight caps so upstream verification costs stay sustainable:
| Limit | Free plan | Paid Apify plan |
|---|---|---|
profileUrls per run | 5 max (extra URLs dropped) | No cap |
| Email cascades per UTC day | 5 across runs | No cap |
When the daily email quota is used up, profiles are still fetched but email lookup
is skipped (emailSkipReason: free_trial_exhausted). Upgrade at
Apify pricing for unlimited usage.
Output
Each dataset row includes inputUrl, inputIndex, status
(ok | partial | not_found | blocked | error), profile fields
(fullName, headline, location, companyName, companyLinkedinUrl,
companyLinkedinId, companyDomain, companyDomainConfidence), email
fields (email, emailConfidence, emailSkipReason, emailEvidence), and
billing eligibility (qualifiedEvents, excludedEvents).
Events (Store monetization)
| Event | Price (USD) | When |
|---|---|---|
apify-actor-start | 0.00005 | Automatic once per run at 1 GB |
profile | 0.004 | Row qualifies: fullName + companyName, status not blocked/error/not_found |
email-found | 0.028 | Strictly verified email only. Catch-all / risky addresses are written on the row and never billed |
Domain search uses hostname, result title/snippet, search rank, repeated-result, and LinkedIn company identity signals. Low-score and near-tied matches are rejected instead of guessing. Dutch surname particles are retained when building the top five verification candidates.
How to verify your invoice
Open the run's Key-value store → record billing-reconciliation:
{"byInputIndex": {"0": { "profile": 0.004, "email-found": 0.028 },"1": {}},"totalUsd": 0.032,"rowsDelivered": 2,"rowsCharged": 1}
Rows do not embed charged amounts (datasets are append-only). Use the KV record to match the Apify invoice.
Legal / GDPR
Public Art. 13–14 privacy notices (hosted on Apify KV, permanent signed URLs):
Source stubs and URL manifest: ./docs/privacy/README.md.
Development (monorepo)
This actor lives at actors/linkedin-profile-verified-email/ in the Pequod
monorepo. It is self-contained (not a packages/pequod thin wrapper).
cd actors/linkedin-profile-verified-emailpython3.13 -m venv .venv && source .venv/bin/activatepip install -r requirements.txt -c constraints.txt -r requirements-dev.txtpython -m pytest -qpython -m src.main --local
Live platform smoke:
$APIFY_TOKEN=... python3 scripts/live_smoke.py --profile-only
Deploy:
cd actors/linkedin-profile-verified-emailAPIFY_TOKEN=... python3 scripts/deploy_prod.py --dry-run# live deploy only from origin/main:APIFY_TOKEN=... python3 scripts/deploy_prod.py
Never use npx apify push — it wipes Console secrets. See DEVELOPMENT.md.
Memory is pinned to 1024 MB. Docker installs requirements.txt with
constraints.txt and the Firefox runtime so transitive pins stay aligned with
local dev. Browser acquisition is still opt-in and safely reports
browser_unavailable if Playwright or Firefox cannot start.
See DEVELOPMENT.md for secrets, publication checklist, and architecture notes.
Pequod ecommerce pipeline
| Step | Actor | When |
|---|---|---|
| 1. Discover restaurants | Restaurant Leads | Restaurant email list from Google Maps |
| 1. Discover local businesses | Google Maps Local Leads | Horizontal local leads |
| 2. Enrich contact | Decision Maker Finder | Named decision makers on a company domain |