Email to Phone Number Finder | Direct Dials & Mobile Numbers
Pricing
from $4.40 / 1,000 person matcheds
Email to Phone Number Finder | Direct Dials & Mobile Numbers
Reverse email lookup: work email in, person and phone out. Returns name, title, company, LinkedIn URL and phones where the source has them. Bulk, 5,000 emails per run, misses free, phone charged only when found. JSON/CSV, HubSpot, Clay. Free plan: 100 emails per run.
Pricing
from $4.40 / 1,000 person matcheds
Rating
0.0
(0)
Developer
Open Enrich
Maintained by CommunityActor stats
0
Bookmarked
82
Total users
54
Monthly active users
3 days ago
Last modified
Categories
Share
π Reverse Email Lookup + Phone Finder: Work Email In, Person + Direct Dial Out | Bulk
Work email in, person and phone out. Give the actor a list of work emails. It finds the person behind each one and returns their phone numbers where available, plus name, job title, company, location and LinkedIn URL so you can see exactly who you reached. Up to 5,000 emails per run.
Bulk | Up to 5,000 emails per run | Phone numbers in E.164 format | Misses are free | JSON/CSV export
Not a scraper. We do not log in to anything and do not touch LinkedIn. Lookups go to a licensed-data API. Not affiliated with LinkedIn.
π³ Pricing and plans
Pay per result, see the Pricing tab. Free Apify plan: up to 100 emails per run, as many runs as your Apify credit covers. Paid plans have no per-run limit. Normal Apify platform usage applies.
Emails that match nobody, invalid addresses and errors are not charged. Each row has billedMatch and billedPhone so you can see what that row was billed for.
Success-only billing
You pay for delivered rows only. A failed lookup, an empty search or a notice row is free: failed lookups are free. Each delivered person matched is one person-matched event, charged right after the row is saved. Higher Apify plans pay less per result: Bronze 5% off, Silver 10% off, Gold and above 15% off. Exact numbers are on the Pricing tab.
Add-ons (charged extra)
Phone lookup is the add-on. Set includePhone to get direct dials. It is charged as its own phone-found event, and only when a phone number is really returned for that email. Leave it off and you pay the match price only. Each row has billedMatch and billedPhone so you can see what it was billed for.
Compatible output
Set outputFormat to compatible to get common LinkedIn scraper field names instead of ours, so existing pipelines keep working. The default is default, unchanged. The mapping table is in AGENTS.md.
βοΈ This vs. the alternatives
| This actor | Per-seat contact databases | Enrichment platforms | |
|---|---|---|---|
| Input | A list of emails, up to 5,000 per run | One lookup at a time or an export | Varies |
| Seat or subscription | None | Per seat | Subscription or credits |
| Pay for misses | No, misses are free | Often credits used | Varies |
| Phone numbers | Yes, E.164 where available | Yes | Varies |
| Who you reached | Name, title, company, LinkedIn URL on every match | Yes | Varies |
| Direct dials only option | Yes (phoneMode), see Good to know | Varies | Varies |
| Output | Clean JSON/CSV via API | Export or seat | Varies |
| Reverse lookup: email in, who they are out | Yes, name, title, company, LinkedIn URL | Yes | Varies |
| Cost per email | Pay per result, see Pricing tab | Per seat | Per credit |
We do not promise a phone for every email. Many people have none on file. We tell you per row what was found, what was billed and why.
β‘ Why this actor?
- Bulk by default. Paste up to 5,000 emails and run.
- Every input gets a row. Matched, not found, skipped, invalid or error: nothing silently disappears.
- Pay for results, not attempts. Emails that match nobody, invalid addresses and errors are free.
- See who you matched. Name, title, company, location and LinkedIn URL come with the phone so you can check before you dial.
- Only work emails come back. Personal addresses and social profiles stay out of the output.
- Spend cap friendly. If you set a maximum spend per run, the actor stops when it is reached and marks untouched emails
skipped.
π― Use cases
- Sales prospecting. You have a CRM full of work emails and no phones. Fill the gap before the call block.
- Pipeline from lead lists. Take the emails from linkedin-leads-verified-work-emails and add phones.
- Executive outreach. Take emails from executive-email-finder-by-domain and get a direct line for the decision-maker.
- Founder outreach. Take emails from ceo-founder-email-finder-by-domain and reach founders by phone.
- Recruiting. Find a number for a candidate whose work email you already have.
- CRM hygiene. Check who sits behind each email and whether the title and company on file are current.
π Pipeline guide: from keyword to a phone number
This actor is the last step. Chain b2bdata actors and you go from a keyword or an ICP to a call list:
keyword or ICP|v[1] linkedin-company-search / linkedin-leads-verified-work-emails -> companies or leads|v[2] executive-email-finder-by-domain / ceo-founder-email-finder-by-domain -> work emails|v[3] email-phone-finder -> phone numbers, name, title, LinkedIn URL
Each step's dataset feeds the next. A Make or n8n scenario chains them without code. All actors are on the publisher page: See all 10 actors by b2bdata.
π Quick start
Open the actor, fill the form, press Start. Or send JSON. Three examples:
1. One email, defaults
{"emails": ["jane.doe at example.com"]}
Replace the placeholder with a real work email. The form field Email Addresses takes a normal address.
2. Paste a list, phone numbers only
{"emailsText": "first.person at company-a.com\nsecond.person at company-b.com","includeIdentity": false}
Use real addresses, one per line, or separated by commas or spaces.
3. Big batch, direct dials only
{"emailsText": "<up to 5,000 emails, one per line>","phoneMode": "direct","concurrency": 4}
βοΈ Inputs
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
emails | string list | One of emails or emailsText | none | Email addresses to look up. Combined with emailsText. |
emailsText | string (textarea) | One of the two | none | Paste emails one per line, or separated by commas or spaces. Combined with emails. |
includeIdentity | boolean | No | true | Add name, job title, company, LinkedIn URL and location to each row. Turn off for phone numbers only. |
phoneMode | string | No | "all" | "all" returns every number on file, including shared front-desk or switchboard lines. "direct" skips numbers shared by 10 or more people. |
concurrency | integer | No | 2 | Parallel lookup batches, 1 to 4. |
Both email inputs are combined, de-duplicated and validated before any lookup runs. The limit is 5,000 emails per run.
Direct-dial filtering depends on phone-ownership data that is still rolling out at the data provider. Until it is live, "direct" falls back to all numbers for the run, says so in the run's status message, and costs nothing extra either way.
Advanced inputs (API users)
These fields are hidden in the Console form and meant for API and automation use.
| Field | Type | Default | What it does |
|---|---|---|---|
maxChargeUsd | number | 0 (off) | Stops the run when this run's charges reach the amount. The run ends SUCCEEDED with the rows already delivered and one free explanation row (max_charge_reached). The check runs after each charge, so a run can exceed the amount by one result. |
sourceTag | string, up to 100 characters | empty | Copied onto every result row as sourceTag and into the OUTPUT record, so a CRM or Clay table can match results to the request that produced them. Explanation rows never carry it. |
Match fields
Every result row carries matchMethod (how the row was matched) and confidence (high, medium or low). The exact rule for this actor is written out in AGENTS.md. Confidence is derived only from evidence the actor really has; where it has none, the row says medium or low instead of guessing.
π€ Output
One dataset row per input email. Illustrative values, not a real person:
{"email": "<the address you submitted>","status": "found","hasPhone": true,"phones": ["+14155550123"],"phoneCount": 1,"fullName": "Jane Example","jobTitle": "VP Sales","company": "Example Group LLC","linkedinUrl": "https://www.linkedin.com/in/example","country": "US","industry": "Technology, Information and Internet","billedMatch": true,"billedPhone": true,"retrievedAt": "2026-01-01T00:00:00.000Z"}
Phone numbers shown in this documentation are placeholders. The actor returns the real numbers it finds, in E.164 format when the source provides it. Export as JSON, CSV, Excel, XML or HTML from the Output tab, or read the dataset over the API. A run summary (resolved, not found, with phone, skipped) is written to the key-value store under SUMMARY.
Status values
found: a person matched. A phone may or may not be present, checkhasPhone.not_found: nobody matched. Free.no_direct_phone: a person matched but only has a shared company line, in direct-only mode. Free.skipped: the run hit its maximum charge before this email. Free, not looked up.free_plan_limit: free Apify plan with more than 100 emails in one run. The first 100 are looked up; one explanation row, free, says how many were not.invalidanderror: bad address or a failed lookup. Free.
All fields
email, status, hasPhone, phones, phoneCount, directPhoneCount, fullName, firstName, lastName, headline, jobTitle, industry, company, companySlug, companyStartDate, linkedinUrl, slug, city, state, country, locationRaw, workEmails, connectionsCount, billedMatch, billedPhone, source, retrievedAt.
directPhoneCount reads 0 for every row until the phone-ownership data goes live, whatever phoneMode you chose.
Timestamps
There is no scrapedAt field on this actor. The lookup time is in retrievedAt.
What is NOT returned
- β Personal email addresses, even when the record carries one
- β Social profile links such as GitHub, Facebook or Twitter
- β Generic inboxes such as info, sales or support: they usually return
not_found - β Verified or live-checked phone numbers: numbers are as listed by the data provider
- β Anything for emails that match nobody except a
not_foundrow
Unknown values are skipped entirely: no empty strings or fake placeholders in the row.
π‘ Good to know
- Not every person has a phone. In one sample of 50 profiles, 84% resolved to a person and 38% of those returned at least one number. A match with no number is normal. Check
hasPhonebefore you dial. - A person with no number still costs the match event. You pay the phone event only when a number comes back. Rows show
billedMatchandbilledPhone. - Verify the identity, not just the address. Matching is by email and generic prefixes can land on the wrong person with the same name. Check
fullNameandcompanybefore you call. - Run time. Emails are resolved in batches of 25 at roughly 1 to 2 per second at the default concurrency, so 5,000 emails take about an hour. Raise
concurrencyto shorten that. 4 is the maximum, set by the upstream rate limit.
π‘οΈ Reliable results
Our data promise. We work to keep every contact current, and we stand behind it. If a record is outdated, an email bounces or a person has moved on, open the Issues tab with your run link. We review every report and sort it out with you, case by case.
- One row per input. Matched, not found, skipped, invalid and error are all written, so you can see precisely what to re-run.
- Spend cap stops cleanly. With a maximum spend per run, the actor stops at the cap and marks the rest
skipped. - Free misses. Unmatched, invalid and errored emails are never charged.
- Batching. Lookups run in batches with a bounded concurrency so the data provider's rate limit is respected.
π€ For AI agents
This section is written for an LLM agent that calls this actor as a tool, through the Apify MCP server or the API. Humans: it doubles as a one-screen contract.
When to use this actor, and when to use a sister actor
- Use
b2bdata/email-phone-finderwhen you have work email addresses and need phone numbers and the identity behind them. - executive-email-finder-by-domain: you have a domain and need executives with work emails.
- ceo-founder-email-finder-by-domain: you have a domain and need CEO or founder emails.
- linkedin-leads-verified-work-emails: you have an ICP and need new leads with emails.
- linkedin-person-search: you know a name and company and want the profile.
- linkedin-employee-search: you want the people at one company.
- linkedin-people-search: you want company pages and employees by X-ray search.
- linkedin-company-search: you need company page URLs.
- company-firmographics-by-domain: you have a domain and need firmographics.
Input contract
| Field | Type | Default | Notes |
|---|---|---|---|
emails | string[] | none | Work emails. Combined with emailsText. |
emailsText | string | none | Emails separated by newlines, commas or spaces. |
includeIdentity | boolean | true | false returns phones without name, title or company. |
phoneMode | "all" or "direct" | "all" | "direct" may fall back to "all" for now, see Inputs. |
concurrency | integer 1-4 | 2 | Leave at default unless the batch is large. |
Required: at least one of emails or emailsText. Maximum 5,000 emails per run. Send only the fields you need.
Output contract
Each item has email, status and, when matched, hasPhone, phones, phoneCount, fullName, firstName, lastName, headline, jobTitle, industry, company, linkedinUrl, city, state, country, workEmails, billedMatch, billedPhone, retrievedAt. Nothing else is returned. Always check status and hasPhone before treating a row as a phone number.
Cost per call
You pay per matched person and an extra amount only when a phone number comes back, plus Apify platform usage. Misses, invalid addresses and errors are free. Test with a handful of emails before a large batch. Free Apify plans get up to 100 emails per run; paid plans have no per-run limit.
Idempotency and rate advice
Same input, same run: it writes a fresh dataset every time and the data provider's records can change, so two runs may differ. Deduplicate on email. Do not loop the same list. Use one run for a whole list rather than many small runs, and do not start more than a few runs at once.
Chaining
Take the email column from linkedin-leads-verified-work-emails, executive-email-finder-by-domain or ceo-founder-email-finder-by-domain and pass it as emails. Filter your output on status equal to found and hasPhone equal to true. Before dialing, compare fullName and company with the person you meant to reach.
Error cases and what to do
| Situation | What you see | What to do |
|---|---|---|
| Nobody matched | Row with status: "not_found" | Free. Do not retry the same address. Try a different email for the same person. |
| Generic inbox | not_found for info, sales, support | Use a personal work address instead. |
| Bad address | Row with status: "invalid" | Fix the address and re-run only that one. |
| Lookup failed | Row with status: "error" | Retry once after a minute. If it still fails, report it via the Issues tab on Apify. |
| Spend cap reached | Rows with status: "skipped" | Raise the cap and re-run only the skipped emails. |
| Match without phone | found and hasPhone: false | Normal. Roughly six in ten matched people have no number on file. |
| Free Apify plan, 100 emails per run reached | Run SUCCEEDED with the first 100 emails plus one free explanation row (free_plan_limit) | Tell the user the free plan returns 100 emails per run. Run again for the rest; a paid Apify plan removes the limit. |
Minimal call
{"emails": ["jane.doe at example.com"],"includeIdentity": true}
(Use a real address in place of the placeholder.)
π Integrations: send results anywhere
Every run writes to an Apify dataset. Dataset items from Email to Phone Number Finder carry email, status, phones, hasPhone, fullName, jobTitle, company, linkedinUrl. Actor id for all recipes: b2bdata/email-phone-finder (in API URLs, write it as b2bdata~email-phone-finder). Everything below uses the public Apify API and your own Apify token. Native means an Apify integration exists; CSV and automation routes are marked as such.
1. Fetch results over the API (native)
Send the token in a header, never in the URL. Latest successful run, as JSON, CSV or Excel:
curl -H "Authorization: Bearer $APIFY_TOKEN" "https://api.apify.com/v2/acts/b2bdata~email-phone-finder/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED"
Swap format=json for format=csv or format=xlsx (jsonl also works). clean=true drops empty items and hidden fields. Pick fields with jq:
curl -s -H "Authorization: Bearer $APIFY_TOKEN" "https://api.apify.com/v2/acts/b2bdata~email-phone-finder/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED" | jq '.[] | {name, url}'
Replace name and url with any field names from the output list above. For a specific run, use https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
One-shot call (start a run and wait for its items, limited to 300 seconds): POST https://api.apify.com/v2/acts/b2bdata~email-phone-finder/run-sync-get-dataset-items?format=json&clean=true with the Actor input as the JSON body and the same Authorization header. For longer runs, start the run normally and fetch the dataset afterwards.
2. Webhook on run success (native)
In the Actor's Integrations tab (or via the API) add a webhook with event type ACTOR.RUN.SUCCEEDED and your own endpoint as the request URL. Apify sends a POST with the default payload, which contains the run under resource. Your endpoint reads resource.defaultDatasetId and calls the dataset items URL from recipe 1 with it. To send a smaller body, set a custom payload template: a JSON object whose values are Apify variables in double curly braces (resource, eventType, userId, createdAt, eventData), with nested values by dot, for example the run id as resource.id and the dataset id as resource.defaultDatasetId. Switch on "Interpolate variables in string fields" in Apify Console when you quote them.
3. n8n (native node)
Apify node, operation "Run an Actor and get dataset" (or "Run an Actor", then "Get dataset items" from the Datasets resource). Select b2bdata/email-phone-finder, paste the Actor input as JSON, and connect your Apify token as a credential. Each dataset item becomes one n8n item, so map email, status, phones, hasPhone, fullName, jobTitle, company, linkedinUrl straight into the next node. The Apify node also has an "On new Apify event" trigger for run-finished events.
4. Make (native app)
Apify app: module "Run an Actor" with b2bdata/email-phone-finder (or the trigger "Watch Actor Runs" for scheduled or manual runs), then the search module "Get Dataset Items" using the run's default dataset id. Each returned bundle is one row, so map email, status, phones, hasPhone, fullName, jobTitle, company, linkedinUrl into your destination module.
5. Zapier (native app)
Apify app: trigger "Finished Actor run" (or action "Run Actor" with b2bdata/email-phone-finder), then the search "Fetch dataset items" with the run's default dataset id. Map email, status, phones, hasPhone, fullName, jobTitle, company, linkedinUrl into your destination step. Add a Looping or similar step if your Zap needs one action per item.
6. Google Sheets
Apify's Store has a "Google Sheets Import & Export" Actor that you add on this Actor's Integrations tab, then choose append or replace mode and paste your spreadsheet URL. This needs a one-time Google login. Alternative with no extra Actor: Make or Zapier recipes above with their own Google Sheets module.
7. Clay (HTTP API)
In Clay, create an HTTP API request with method GET, URL https://api.apify.com/v2/acts/b2bdata~email-phone-finder/runs/last/dataset/items?format=json&clean=true&status=SUCCEEDED, and a header Authorization: Bearer <your Apify token>. Treat each returned item as a row and chain your enrichment columns after it.
8. Airtable, HubSpot, Salesforce
No native Apify connector is used here. Two routes:
- CSV: download with
format=csv(recipe 1) or from the dataset's Export button, then use the tool's own import (Airtable CSV import, HubSpot Import, Salesforce Data Import Wizard or Data Loader). Use a unique field such as the URL as the dedupe key. - Automation: use the n8n, Make or Zapier recipe above and the CRM's module there. Their setup and field limits are theirs to define.
9. Map the fields
Email to Phone Number Finder returns email, status, phones, hasPhone, fullName, jobTitle, company, linkedinUrl. Typical placement in a CRM (create custom properties where your CRM has no match):
| Output field type | Typical CRM placement |
|---|---|
| Person name | Contact name (first and last) |
| Job title or role | Contact job title |
| Company name | Company or account name |
| Website or domain | Company website or domain |
| Profile or page URL | Custom text field, also your dedupe key |
| Location (city, country) | Contact or company location fields |
| Email, phone (if returned) | Contact email, phone |
| Industry, size (if returned) | Company industry, employee count |
| Run date | Custom date field ("Sourced on") |
All recipes use the public Apify API; nothing is stored by the publisher.
π Schedule examples
Use Apify Schedules (cron) on a saved task.
- Nightly phone fill:
0 2 * * *,emailsTextpointing at the emails you added today. Send results to your CRM through a webhook. - Weekly list top-up:
0 6 * * 1, one batch of new emails from your lead tool. - Monthly refresh:
0 6 1 * *, re-run your top accounts withincludeIdentityon to catch job changes.
Keep scheduled runs small. A schedule you forget is still billed for every match.
π Related actors
More from the publisher: See all 10 actors by b2bdata
- linkedin-leads-verified-work-emails: lead lists from an ICP.
- executive-email-finder-by-domain: C-suite, VP and Director contacts at one domain.
- ceo-founder-email-finder-by-domain: CEO and founder emails at one domain.
- company-firmographics-by-domain: firmographics for a domain.
- linkedin-company-search: find company pages by name.
- linkedin-employee-search: employees of one company.
- linkedin-person-search: find a named person.
- linkedin-people-search: company pages and employees by X-ray search.
β FAQ
Data & coverage
Q: What do I put in?
A: Work email addresses, in emails, in emailsText, or both. They are combined, de-duplicated and validated.
Q: How many emails per run? A: Up to 5,000.
Q: Why no phone for some people?
A: Many people have no number on file. In one sample, 38% of matched people had one. Check hasPhone.
Q: What is the difference between all numbers and direct dials? A: "All" returns every number on file, including shared front-desk lines. "Direct" skips numbers shared by 10 or more people. Direct filtering is still rolling out at the data provider, so it may fall back to all numbers for now. The run message says when it does.
Q: Do you return personal emails or social profiles? A: No. Only work emails, plus name, title, company, LinkedIn URL and location.
Q: Why did a generic inbox return nothing?
A: Only addresses that belong to a real person profile resolve. Info, sales and support inboxes usually come back not_found, and that is free.
Q: Can I get the wrong person?
A: Yes, on generic prefixes or common names. Compare fullName and company with who you meant to reach.
Q: Am I charged for failed lookups?
A: No. Failed lookups are free. You pay one person-matched event per delivered person matched; empty results and notice rows cost nothing.
Q: What are add-ons and are they on by default? A: Add-ons are opt-in inputs, off by default. Each is its own billed event, charged only when it returns data for that row.
Q: Can I keep my existing field names?
A: Yes. Set outputFormat to compatible for common LinkedIn scraper field names. Default output is unchanged.
Legality & compliance
Q: Is this legal? A: This is general information, not legal advice. Lookups rely on publicly available data only, with no login to any social network. Phone numbers are sensitive in many regions, so check consent and calling rules before you use them. Legal claims and removal requests are handled through Apify support (https://apify.com/contact) only.
Q: Does it break LinkedIn's terms of service? A: Nothing here connects to a LinkedIn account, and no LinkedIn agreement is entered by running the actor. Responsibility for how the results are used stays with you.
Q: Does it collect personal data? A: Yes. It returns phone numbers, names and work details of people. You act as the data controller of what you download.
Q: Is it GDPR and CCPA compliant? A: The compliance duties sit with you as controller: lawful basis, notices, opt-outs, deletion, and local rules on calling and texting. The Master Terms below explain who does what.
Q: Do you store my results? A: No. We keep no copy of your result data. It lives in your Apify account.
Q: Can I use the numbers for cold calls or texts? A: Only if the rules where the person lives allow it, including do-not-call lists and consent rules. Check before you dial.
Q: Can I be blocked or banned? A: Your Apify account can be limited if you break the Terms below.
π Support
Use the Issues tab on this actor's Apify page for bugs, questions and feature requests. We answer within 24 hours on working days. Please include the run ID and the input you used.
π Legal
Use for B2B prospecting only. Comply with all applicable laws including GDPR, CCPA, and CAN-SPAM.
Not affiliated with LinkedIn. The LinkedIn name belongs to its respective owner. This actor looks up people by work email through a data provider API. It does not log in, use cookies, access private pages or bypass authentication. Published on Apify by b2bdata as proprietary software.
π Master Terms of Service
Publisher: b2bdata (the "Publisher"), an independent developer publishing on the Apify platform. Applies to: Email to Phone Number Finder (the "Actor"). Version: 1.0.
Acceptance by use
By running the Actor, calling it through the Apify API, the Apify MCP server or any integration, or letting a schedule or an AI agent run it for you, you accept these Terms. This is acceptance by use. No signature is needed.
If you run the Actor on behalf of a company, you confirm you may bind that company. If you do not accept these Terms, do not run the Actor. Continued use after we update the Terms is acceptance of the update. Anonymous or automated use does not remove your responsibility: the Apify account that starts the run is the accountable party.
Preamble: how the Actor is built
The Actor is a thin wrapper over an independent search index. It does not log in to anything, does not use cookies or accounts, and does not fetch pages from the source platform. We are a software vendor. We ship code that turns a query into a structured result. We do not own, host or curate the underlying data.
You / your agent| input (query, filters)vThe Actor (the Publisher's code, runs on Apify)| search requestvAn independent search index of publicly indexed data| public result rowsvThe Actor (normalises, deduplicates, saves to your dataset)|vYour Apify dataset (you control it)
Each party has one job. The index holds publicly indexed data. The Actor reshapes it. You decide what to search for, what to keep and what to do with it. We keep no copy of your queries or your results once the run ends, beyond what Apify itself stores in your account and what we need for billing and abuse prevention.
1. Nature of the service
1.1 What the Actor is
A software tool that searches publicly indexed data and returns structured rows to your Apify dataset. It is a data-discovery utility, nothing more.
1.2 What the Actor is not
It is not a scraper of the source platform, not an official integration, not a credit bureau, not a background-check service, not an employment or tenant screening tool, and not a source of legal, financial or compliance advice. Results are leads and pointers. They are not verified facts.
1.3 The publisher's limited role
We write and maintain the code. We do not review individual runs, individual results or individual users. We do not guarantee that a result is accurate, current, complete or lawful to use for your purpose.
1.4 Third-party infrastructure
The Actor depends on the Apify platform and on an independent search index. We do not control either. Their availability, rules and changes can affect the Actor at any time.
2. Who may use the Actor
2.1 Eligibility
You must be at least 18, have the legal capacity to contract, and not be barred from using the Apify platform or from receiving services under applicable sanctions or export laws.
2.2 Your representations
By running the Actor you represent that you have a lawful purpose, that you will follow the laws that apply to you and to the people whose data you handle, and that the information on your Apify account is accurate.
3. Permitted uses
Lawful business uses, including market research, account and lead discovery, competitive analysis, recruiting research done in line with local law, investment research, data enrichment of records you are entitled to hold, and building your own internal tools. Any use must comply with Section 4 and Section 6.
4. Prohibited uses
4.1 Illegal activity
Any use that violates a law or regulation that applies to you, to us or to the people in the data.
4.2 Harassment, stalking and personal targeting
Locating, monitoring, intimidating or pressuring a private individual.
4.3 Discrimination
Using results to exclude or disadvantage people on a protected characteristic, including in hiring, lending, housing or insurance decisions.
4.4 Spam and unsolicited commercial communication
Sending bulk messages in breach of anti-spam, e-privacy or telemarketing rules (for example CAN-SPAM, PECR, CASL, GDPR consent rules).
4.5 Fraud and deception
Phishing, impersonation, social engineering, fake profiles or any scheme to mislead.
4.6 Source platform abuse
Using the Actor to evade a block, rate limit or enforcement action by the source platform, or to build a service that competes with the source platform by copying its data wholesale.
4.7 Reselling the Actor's service
Reselling or sub-licensing access to the Actor, or republishing raw output as a competing data product, without our written permission.
4.8 AI training without authorization
Using raw output to train a model that identifies or profiles individuals, without a lawful basis and without checking the source platform's terms.
4.9 Sensitive targeting
Building lists based on health, religion, ethnicity, political opinion, sexual orientation, union membership, immigration status, criminal history or any other special category of data.
4.10 Privacy law violations
Any processing of personal data without a lawful basis, without required notices, or in breach of a data subject's rights.
5. Source platform terms: your responsibility
5.1 Acknowledgment
The source platform named in the Addendum has its own terms. We have no contract with you about them and we do not interpret them for you.
5.2 Your sole responsibility
You alone are responsible for checking whether your use of results is allowed under the source platform's terms and under the law of your jurisdiction. Running the Actor is not a statement by us that your use is allowed.
5.3 Cease-and-desist compliance
If the source platform, a rights holder or a regulator sends us a valid cease-and-desist or takedown notice about specific use of the Actor, we will act on it. If we forward such a notice to you, you must stop the named use within 48 hours of receipt and confirm in writing. We may suspend your access immediately while we assess the notice.
6. Data protection
6.1 Roles under privacy law
For the data you collect with the Actor, you are the data controller (or business, under CCPA). Apify and its infrastructure act for you as processor or service provider under their own terms. We, as the publisher of the code, do not decide the purposes or means of your processing and do not receive your result data.
6.2 No data retention by the publisher
We do not retain your result data. We do not build a database from your runs. We keep only what is needed for billing, security and abuse prevention, such as run metadata and support correspondence.
6.3 Your obligations as data controller
You must have a lawful basis (GDPR, UK GDPR), give required notices, honour access, deletion and objection requests, respect opt-outs and "do not sell or share" rights (CCPA/CPRA), keep records, protect the data, and delete it when you no longer need it.
6.4 Sensitive data targeting
You must not use the Actor to target special-category data (see 4.9). If sensitive data appears in results, you must delete it or handle it under the stricter rules that apply.
6.5 Data subject requests
If a person contacts us about data you collected, we will refer them to you and may ask you to confirm you have handled the request.
7. Intellectual property
7.1 Actor code
The Actor, its code, schemas, documentation and branding belong to the Publisher. This is proprietary software. No licence is granted except the right to run the Actor under these Terms.
7.2 Output data
We claim no ownership of the output. Rights in underlying data belong to their owners. You are responsible for how you use it.
7.3 Restrictions
No reverse engineering, copying of the Actor, or removal of notices, except where the law gives you that right regardless.
7.4 Feedback
If you send feedback or bug reports, we may use them freely to improve the Actor, without payment, and without crediting you.
8. Pricing and payment
8.1 Apify platform billing
Charges are set on the Actor's Pricing tab and billed by Apify. Platform usage costs may also apply, as shown by Apify. We do not handle your payment details.
8.2 Pricing changes
We may change prices. For any increase we give at least 14 days' notice through the Apify platform's change-notification process before it takes effect.
8.3 No refunds for misuse
Results delivered as described are billable. Charges for runs you configured wrongly, repeated by a schedule you forgot, or started by an agent you control are your responsibility. Refund requests for platform or Actor faults go through Apify support or to us.
9. Service availability and changes
9.1 No uptime guarantee
We give no uptime, latency, volume or coverage guarantee. Runs can return fewer results than you asked for, or none, because the underlying index changes.
9.2 Service discontinuation
We may change, limit or stop the Actor at any time. We will try to give notice on the Actor page when practical.
10. Disclaimers
10.1 "As is" service
The Actor is provided "as is" and "as available", without warranties of any kind, including merchantability, fitness for a particular purpose, accuracy and non-infringement.
10.2 No representation of lawfulness
We do not represent that your intended use is lawful.
10.3 No endorsement of source content
Results are not endorsed, verified or vouched for by us. Names can be wrong, profiles can be outdated and similarly named entities can be mixed up.
11. Limitation of liability
11.1 Aggregate cap
To the maximum extent the law allows, our total liability for all claims relating to the Actor is limited to the greater of USD 100 or the fees you paid for the Actor in the 3 months before the event that gave rise to the claim.
11.2 Excluded damages
We are not liable for indirect, incidental, special, consequential or punitive damages, or for lost profit, lost revenue, lost data or lost goodwill, even if advised of the possibility.
11.3 Time limit
Any claim must be brought within 1 year after it arose.
12. Indemnification
12.1 Your indemnification of the publisher
You will indemnify and hold harmless the Publisher, its owners and contractors from claims, losses and reasonable legal costs arising from your use of the Actor or its output, your breach of these Terms, or your violation of any law or third-party right.
12.2 Defense
We will tell you promptly about a claim. You may control the defense, but you may not settle in a way that admits fault for us without our written consent.
12.3 Scope
This applies whatever the legal theory, and survives termination.
13. Suspension and termination
13.1 Termination by the publisher
We may suspend or end your access at any time, with or without notice, especially for a breach of Section 4 or a valid notice under 5.3.
13.2 Effects of termination
Rights to run the Actor stop. Sections that by nature survive (IP, disclaimers, liability, indemnification, disputes) continue.
13.3 Termination by you
Stop running the Actor and delete your schedules and integrations.
14. Dispute resolution
14.1 Informal resolution first
Before any formal action, raise the dispute through Apify support or the Actor's issue tab on Apify, and allow 60 days for a good-faith resolution. The Issues tab is for product questions only and is not a channel for legal notices.
14.2 Apify's process next
If the informal step fails, raise the matter through Apify's dispute and support channels. Your contractual relationship for payment, refunds and platform access is with Apify, under Apify's Terms of Service.
14.3 No chosen court
These Terms do not select a governing law or a court. Any claim that survives 14.1 and 14.2 is subject to the law and forum that apply by default to a dispute between you and an individual software developer reached through Apify.
14.4 No class actions
Claims may be brought only on an individual basis, not as a plaintiff or class member in a class, collective or representative action.
14.5 Attorneys' fees
The prevailing party may recover reasonable attorneys' fees where the law allows.
15. Miscellaneous
15.1 Entire agreement
These Terms, with the Addendum, are the whole agreement about the Actor. Apify's own terms continue to apply to the platform.
15.2 Severability
If a provision is unenforceable, the rest stays in force.
15.3 Assignment
You may not assign these Terms. We may assign them in a merger, sale or reorganisation.
15.4 Force majeure
Neither party is liable for delay caused by events beyond reasonable control, including outages of the platform or of upstream infrastructure.
15.5 Third-party beneficiaries
There are none, except that the Publisher's owners, contractors and affiliates may enforce the protections in Sections 10 to 12.
15.6 Survival
Sections 5, 6, 7, 10, 11, 12 and 14 survive termination.
15.7 Language
The English text controls.
15.8 Publisher identification for legal process
All legal notices, takedown requests, cease-and-desist letters, regulator enquiries and data-subject requests must be directed to Apify (https://apify.com/contact), which forwards them to the Publisher. The Publisher operates on Apify under the username b2bdata. The Publisher's identity is held by Apify for billing and is provided to courts and authorities through valid legal process directed via Apify's official channels. We do not publish personal details on the Actor page.
16. Acknowledgment
By running the Actor you confirm you have read these Terms, that you understand you act as the data controller of what you collect, and that you are responsible for lawful use.
π‘οΈ Actor-Specific ToS Addendum: Email to Phone Number Finder
A. Architectural disclosure
The actor sends the email addresses you submit to a data provider API, receives the matched person record, and saves the result to your dataset. It does not call LinkedIn, does not log in and does not use cookies. Emails are processed in batches and not kept by us after the run.
B. Source platform
The returned LinkedIn URL points to a profile on LinkedIn. LinkedIn is not affiliated with, and has not endorsed, this actor. Your use of LinkedIn-derived data is governed by LinkedIn's terms and by the law that applies to you (Section 5 of the Master Terms).
C. Output and accuracy
Matches can be wrong, out of date or missing. Phone numbers are as listed by the data provider and are not verified. Shared company lines can appear in "all" mode. Treat output as leads to check, not as verified facts.
D. Personal contact data
This actor returns phone numbers and work details of named people. You are the data controller. You must have a lawful basis, honour opt-outs and follow calling, texting and anti-spam rules for every place you contact. If you combine its output with other actors, you take on the duties for the combined data.
E. Limits
Up to 5,000 emails per run, 4 parallel batches at most. Free Apify plans: 100 emails per run. Paid plans: up to 5,000 per run.
F. Feedback
Bug reports and suggestions: b2bdata/supporter-feedback (free, no rewards) or this actor's Issues tab.
G. Takedown
If a person asks that their data stop being returned, or LinkedIn asks that specific use of this actor stop, send the request through Apify (https://apify.com/contact) or the actor's issue tab. Section 5.3 of the Master Terms (48 hours) applies.