Company People Finder - Owners, Staff & Verified Emails avatar

Company People Finder - Owners, Staff & Verified Emails

Pricing

from $20.00 / 1,000 person founds

Go to Apify Store
Company People Finder - Owners, Staff & Verified Emails

Company People Finder - Owners, Staff & Verified Emails

Find the owners, executives and staff of any company from its domain, each with the line on the company's own site that names their role. Add verified work emails and LinkedIn employees. Businesses where nobody is found are free.

Pricing

from $20.00 / 1,000 person founds

Rating

0.0

(0)

Developer

Lead Proof

Lead Proof

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

20

Monthly active users

10 days ago

Last modified

Share

Paste company websites, pick the roles you want, get the people. Every person comes with the line on the company's own site that names their role, so you can check it in one click. Add verified work emails and LinkedIn employees when you need them.

Companies where nobody is found are free.

What you get

For each company:

  • The people you asked for: owners, founders, executives, purchasing, operations, sales and more, or everyone the company lists.
  • Proof for every person: their title as published and the page and line that say so.
  • Verified work emails (optional): built from the company's own address pattern and confirmed with the mailbox. Only confirmed addresses come back, clearly marked as found this way. A generic info@ is never passed off as a person's address. With LinkedIn sources enabled, selected people still missing a verified address get a targeted profile email search, followed by our mailbox verification. These addresses have origin: provider; deliverability does not prove ownership. Profile and email-check limits apply. Personal, unrelated-domain and catch-all addresses are excluded.
  • LinkedIn employees (optional): people from LinkedIn employee listings, merged with the site's people, each with a profile link.
  • A clear reason when the list is empty: the company publishes nobody, its site could not be read, or a limit was reached. Never a silent blank.

Example person:

{
"fullName": "Jeff Cohn",
"matchedRoles": ["founder", "executive"],
"associations": [{
"rawTitle": "Founder and CEO",
"evidence": [{ "sourceUrl": "https://cohnmarketing.com/agency/", "quote": "Jeff Cohn — Founder and CEO" }]
}],
"contacts": [{ "kind": "email", "value": "jeff.cohn@cohnmarketing.com", "origin": "inferred", "deliverability": "ok" }]
}

How to use it

  1. Company websites: one domain per line, like acme.com.
  2. Who do you want? Pick roles, or Everyone for the whole team.
  3. Where to look: Company website, LinkedIn, or both.
  4. Tick Find verified work emails if you want emails.
  5. Run it on a few companies first.

Everything else has a safe default and sits in the folded sections of the input.

Failures and recovery

A failed company does not discard other companies in the batch. Its row has status: failed, outcome: processing_failed and a diagnostic error; an empty failed row is not charged. Optional source or email-stage failures preserve people already supported by evidence and mark the row partial, with the failed stage in errors and sourceFailures. A stage timeout also preserves earlier results.

SUMMARY.status describes result quality: succeeded, partial or failed, with failed/partial/unavailable business counts. Once all processed rows and the summary are durably saved, SUMMARY.executionStatus is completed. Handled source and company errors finish the Actor normally, even if every company is unavailable; the run screen says Completed with errors, and the failed rows and SUMMARY.status: failed remain visible. A green platform run alone does not mean people were found. Integrations should check the summary and each row's outcome.

Reads and same-key writes have bounded retries. A lost write acknowledgement is reconciled against the exact saved value. A missing redundant RESULT checkpoint after a confirmed dataset write is reported in storageWarnings; restart recovers that row from the dataset and the previously saved write marker. Dataset appends and charges are never blindly repeated. Unconfirmed storage or billing operations still stop safely, as do invalid input and unsafe pricing configurations.

Failed page reads are not reused across companies. Work observes both the input time budget and Apify's actual timeout, reserving time for results and cleanup. Cancellation attempts to abort outstanding children concurrently; any abort that cannot be confirmed is reported in the summary. Platform outages, forced aborts and container termination cannot be guaranteed recoverable.

Diagnostics contain exception types and code locations, not provider response bodies or local values. Resume uses this run's original input and storage; it does not charge or push completed rows again. A completed failed row stays failed on resume; retry that company in a fresh run after correcting its cause.

Pricing

One price list. Page reads, searches and email checks are included. The verified-email event also covers a verified work email found by the profile fallback; an identity is charged once for its email.

WhatPrice
Person found$20 / 1,000 ($0.02 each)
Verified work email (optional)$30 / 1,000 ($0.03 each)
LinkedIn employee (optional)$10 / 1,000 ($0.01 each)
Company where nobody is foundFree

Typical costs per company:

RequestTypical
Owners and executives (3 people)$0.06
The same with verified emails$0.15
Everyone from the website (20 people)$0.40
Everyone from the website and LinkedIn (25 people)$0.65

The optional AI name filter (on by default) costs about $0.0006 per company, billed by Apify's AI proxy. Set a maximum charge in the run options and the run never goes past it.

Output

One row per company, in your order. The fields you will use most:

FieldWhat it is
people[]The people: fullName, matchedRoles, associations (title, evidence URL and quote), contacts, profileUrls
outcomepeople_found, or why not: no_supported_role_holder_published, sources_were_inaccessible, stopped_at_a_limit, business_not_identified
candidates[]People found but not returned, with the reason (another role, the per-company limit)
businessContacts[]Company phones and mailboxes like info@
coverageRoles found, roles not found, and what limited the search

A person named on several pages comes back as one row, with the evidence from every page, and is charged once.

Good to know

  • Not every company publishes its people. Small companies often list nobody; the row says so.
  • A title is a title. "Purchasing Manager" says what someone does, not that they sign orders.
  • LinkedIn people are self-reported. They come from LinkedIn listings, are marked as such, and rank below people the company publishes itself.
  • Catch-all domains accept every address, so no email can be confirmed there and none is returned.

Fair use

Only public pages are read, with no login. You are responsible for how you contact the people in the results and for the privacy and marketing rules that apply to you, such as GDPR and CAN-SPAM.

Recovery from transient storage errors

Reads and same-key checkpoint writes retry transient network errors, HTTP 408/429, and HTTP 5xx responses up to three times, with 1s/2s backoff and a 20s total window. Child-run polling retains its existing, longer deadline. Recovery covers input/checkpoint reads, checkpoint and summary writes, and completed child dataset pages. Cancellation and permanent errors propagate immediately.

Charges, child starts, and dataset appends are not blindly retried: a lost response may mean the operation already succeeded. After a transient append error, the actor reads its dataset: an exact match at the same input position confirms that the result is durable, so processing continues without another append or charge. SUMMARY.recoveredPushAcknowledgements counts these recoveries. An absent, different, or unreadable row leaves the original error in place. Existing checkpoints and restart reconciliation handle unresolved outcomes. Persistent outages can still fail a run; recovery does not relabel failures as success.