sfoln/company-contacts-finder · Lead generation, Developer tools, Automation On request
Scrape emails, phone numbers, social profiles and addresses from company websites by domain. Every email gets a free DNS pre-check; add mailbox verification, company name, mail provider and tech stack. $6 per 1,000 domains, or $3 per 1,000 in contacts-only mode.
Give it a list of company domains and get back the contact details published on each company's website: emails, phone numbers, social profiles (LinkedIn, X, Facebook, Instagram, YouTube, TikTok) and address hints, read from the homepage and up to two contact / about / imprint / team pages linked from it. In the default full mode each record also carries the company name, description and language, the domain's mail provider (Google Workspace, Microsoft 365, ...), a free DNS pre-check of every email and, if you want, mailbox verification of up to three addresses per domain and the tech stack. Built for sales teams, recruiters, agencies and AI agents enriching a list of accounts.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
Company contact card company-contacts
$0.006
$6 / 1,000
Charged once per website reached in mode "full": company name, description, emails with a DNS pre-check, phones, social profiles, address hints and mail provider (plus the tech stack when includeTech is on).
Contact details record contact-details
$0.003
$3 / 1,000
Charged once per website reached in mode "contacts": emails, phones, social profiles and address hints from up to 3 pages, without company profile, DNS checks or verification.
Verified email contact-email-verified paid plans only
$0.004
$4 / 1,000
Charged once per email address verified at mailbox level (mode full with verifyEmails on; at most 3 per domain). Addresses the free DNS pre-check already settles are never sent for verification.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~company-contacts-finder/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Find the contact emails, phone numbers and LinkedIn pages of apify.com and wordpress.org, and tell me which addresses are valid.
Input
Input fields
List company domains or website URLs. Each domain produces one dataset record with contacts found on the company's own website.
Field
Type
Default
Meaning
domains *
array
required
Domains or website URLs Company domains (apify.com) or website URLs (https://www.apify.com/about), one per line. Duplicates are removed. Accounts on the Apify free plan can process up to 10 domains per run.
mode
string
"full"
Mode full: the company contact card (company name, description, emails with a free DNS pre-check and optional mailbox verification, phones, social profiles, address hints, mail provider, optional tech stack), $6 per 1,000 domains. contacts: emails, phones, social profiles and address hints only (no DNS, verification or tech), $3 per 1,000 domains. One of "full", "contacts".
verifyEmails
boolean
true
Verify emails Mode full: check found email addresses at mailbox level (valid / invalid / catch-all / unknown), own-domain addresses first. Addresses the free DNS pre-check already settles (invalid syntax, unknown domain, no mail server, disposable) are never sent. Charged per verification ($4 per 1,000 verified emails); paid Apify plans only.
maxVerificationsPerDomain
integer
3
Max verifications per domain Upper limit of email verifications per domain (0–3). Emails on the company's own domain are verified first; addresses settled by the pre-check do not count. Range 0–3.
stopAtFirstValid
boolean
true
Stop at first valid email Stop verifying a domain's emails once one is confirmed valid (saves verification charges).
maxPages
integer
3
Pages per domain Homepage plus up to 2 contact / about / imprint / team pages linked from it (1–3). Range 1–3.
includeTech
boolean
false
Include tech stack Mode full: add the tech stack detected on the fetched pages and in the MX records (CMS, e-commerce platform, analytics, advertising, live chat, CRM, mail provider; 3,500+ technologies with versions and evidence). No extra charge.
maxDomains
integer
1000
Max domains Safety cap on how many domains are processed in this run. Range 1–10000.
concurrency
integer
5
Concurrency Domains processed in parallel (1–10). Range 1–10.
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The input item this record corresponds to.
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan
charged
boolean
Charged Whether the record's main event was charged.
chargedEvent
string | null
Charged event Event charged by the runner for this record, if any.
source
string
Source Upstream data source.
fetchedAt
string
Fetched at ISO timestamp.
warnings
array | null
Warnings Non-fatal problems (pages not reachable, truncation, budget limits).
error
object | null
Error { code, message, provider?, status? } when status is not ok.
Company name From og:site_name, JSON-LD Organization name or the page title. Mode full.
description
string | null
Description Meta description / og:description / JSON-LD description. Mode full.
language
string | null
Language Homepage language (html lang). Mode full.
emails
array | null
Emails [{ email, status, sourcePage, precheck, role }]. status: valid | invalid | catch_all | unknown | disposable | no_mx | not_verified | verification_failed (invalid, no_mx and disposable come from the free pre-check and are never sent for verification). precheck: the local verdict (invalid_syntax | domain_not_found | no_mail_server | disposable | role | ok | unknown; contacts mode checks syntax, unknown TLDs and disposable domains without DNS). role: a role address such as info@ or sales@. Own-domain emails first.
bestEmail
string | null
Best email First valid, else catch-all, else first unverified own-domain email (never an unverified address on another domain).
bestEmailStatus
string | null
Best email status Status of bestEmail.
phones
array | null
Phones Phone numbers from tel: links and JSON-LD (digits, + prefix when international).
socials
object | null
Social profiles { linkedin, x, facebook, instagram, youtube, tiktok } profile URLs or null.
addressHints
array | null
Address hints Postal address fragments from JSON-LD, <address> elements and microdata.
mxProvider
string | null
Mail provider google | microsoft | zoho | proton | ... | other; none for a null MX; null when the domain has no MX. Mode full.
mxRecords
array | null
MX records MX hosts by priority. Mode full.
pagesFetched
integer | null
Pages fetched Number of pages fetched (homepage + contact/about pages).
sources
array | null
Sources URLs of the fetched pages.
emailsSettledByPrecheck
integer | null
Emails settled by pre-check Addresses the free local pre-check settled (invalid syntax, unknown domain, no mail server, disposable): never sent for paid verification. Mode full.
emailVerificationsCharged
integer | null
Verifications charged Number of contact-email-verified events charged for this domain (0 in contacts mode).
The homepage and up to two contact, about, imprint or team pages linked from it on the same site (maxPages). Emails come from mailto links, the page text, JSON-LD and microdata, including obfuscated forms such as name [at] domain [dot] com; phones from tel: links and JSON-LD; social profiles from links to LinkedIn, X, Facebook, Instagram, YouTube and TikTok.
What is the difference between mode full and mode contacts?
Mode contacts ($3 per 1,000 domains) returns the emails, phones, social profiles and address hints only. Mode full ($6 per 1,000 domains) adds the company name, description and language, the domain's mail provider, a DNS pre-check of every email, optional mailbox verification ($4 per 1,000 verified emails, paid plans) and, with includeTech, the tech stack.
Which emails are sent for verification?
Only addresses the free pre-check cannot settle. Invalid syntax, domains that do not exist, domains without a mail server and disposable providers are marked locally (invalid, no_mx, disposable) and never verified or charged. Up to 3 remaining addresses per domain are verified, own-domain addresses first, stopping at the first valid one by default.