Lead Enrichment — Enrich Leads with Emails, Phones & Tech
NexGenData · @nexgendata
Lead Enrichment is a NexGenData tool that returns emails, phone numbers, social profiles and tech stack per company from each company's own website.
About
Lead Enrichment — Enrich Leads with Emails, Phones & Tech
Lead Enrichment is a NexGenData tool that returns emails, phone numbers, social profiles and tech stack per company from each company's own website.
Lead enrichment from company websites: give it domains and it will enrich leads with emails, phones, socials and the tech stack for each.
Point it at a list of domains and get back emails, phones, socials and the tech stack for each — a full enrichment pass for your sales team.
Output is a prospect list for your sales team, assembled from public web and business sources. Use it in line with applicable outreach and privacy law.
📊 Sample Output
domain | url | status | company | phones | enriched_at |
|---|---|---|---|---|---|
| apple.com | https://apple.com | ok | Apple | ['[phone on record]', '[phone on record]', '[phone on record]', '[pho… | 2026-09-25T00:05:48+00:00 |
| stripe.com | https://stripe.com | ok | Stripe | ['[phone on record]'] | 2026-09-25T00:05:49+00:00 |
Real rows from a real run (2026-09-25), unedited apart from masked emails/phones and shortened long text; fields the source does not publish are empty.
⚙️ Sample inputs
This is the pre-filled input; it returns rows on the current build. Paste it into the input form, or send it through the API, CLI or a schedule:
{
"domains": [
"apple.com",
"stripe.com"
],
"maxContactsPerDomain": 5,
"crawlContactPages": true
}
🔧 Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
domains (required) | array | ["apple.com", "stripe.com"] | List of domains (e.g. ['apple.com','stripe.com']) — actor returns one enriched record per domain |
maxContactsPerDomain | integer | 5 | Cap on contacts returned per domain (default 5) |
crawlContactPages | boolean | true | Visit additional pages for richer enrichment (slower but more accurate) |
notionConnector | string | Optional. Connect your Notion workspace and the enriched leads are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authorize a Notion… | |
notionParentId | string | Optional Notion page ID to create the page under. Blank = a private page in your workspace. |
🧾 JSON sample record
One real record from a real run (emails/phones masked, long text shortened):
{
"domain": "apple.com",
"url": "https://apple.com",
"status": "ok",
"company": "Apple",
"emails": [],
"phones": [
"[phone on record]",
"[phone on record]",
"[phone on record]",
"[phone on record]"
],
"socials": {
"linkedin": [
"linkedin.com/company/apple"
],
"twitter": [
"twitter.com/Apple"
],
"facebook": [
"facebook.com/Apple"
],
"youtube": [
"youtube.com/user/Apple"
]
},
"technologies": [],
"server": "Apple",
"contacts_count": 4,
"enriched_at": "2026-09-25T00:05:48+00:00"
}
📊 What you get
Clean JSON, one record per domain enriched (11 fields):
domain— Domainurl— Urlstatus— Statuscompany— Companyemails— Emailsphones— Phonessocials— Socialstechnologies— Technologiesserver— Servercontacts_count— Contacts countenriched_at— Enrichment timestamp (UTC)
Data comes from the domain's own public pages: the homepage plus /contact, /contact-us, /about and /about-us when "Crawl contact pages" is on.
🤖 Use with AI agents
Point Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and run prospecting on demand.
Run it on a schedule
Monthly is a realistic cadence, because company websites change their contact pages and listed tools slowly. Schedule the same domain list each month to catch new emails, phone numbers, social profiles and technologies, or run it whenever a new batch of domains lands in your list. Each run returns a fresh record per domain, with updated values rather than a running history. The actor has no new-only mode, so compare enriched_at and the contact fields with your last run to see what changed. Send each run's results onward with a webhook, Google Sheets, Zapier, Make or the Bytewells API.
FAQ
Why use this instead of visiting each company's own website?
The data comes from each domain's own public pages, so you could collect it by hand. This actor does it in bulk: give it a list of domains and get one clean JSON record per domain with emails, phones, social profiles, tech stack and a contact count. It needs no API key, you pay per domain enriched, and it can also write the results to a Notion page in the same run.
What does a typical run cost?
One flat monthly price, with a free trial; there is no per-row charge. Bytewells bills compute separately from your prepaid credit, by memory and run time.
How do I find emails and phone numbers for a list of company domains?
Put the domains in domains, for example apple.com and stripe.com. Keep crawlContactPages on so the actor also visits /contact, /contact-us, /about and /about-us, and set maxContactsPerDomain to cap contacts per domain. Some domains publish no email address at all, in which case emails comes back empty.
Are the emails and phone numbers verified?
No. Emails are taken from public pages and are not SMTP-verified. Phone numbers are taken from page text and format-checked only. They are not checked as active, and no carrier or line type is returned. The actor does not do carrier lookups.
What happens when a domain does not respond?
A domain that fails (DNS failure, timeout, or a 4xx or 5xx error) gives no record, and it is named in the run status message. If the run hits its time limit, the domains it never reached are listed as not reached. If nothing at all can be fetched, the run fails with a message naming the cause.
How it is billed on Bytewells
One flat monthly price for this actor, with a free trial to start. There is no charge per row, per result or per run from us.
Compute is billed separately by Bytewells from your prepaid credit, by memory and run time (per second). If a run uses the platform's proxy, Bytewells adds that traffic to the same run's compute bill.
Run it from the API
Bytewells speaks the same API as Apify, so curl or apify-client work with the Bytewells address and your Bytewells API key.
curl -X POST "https://bytewells.com/api/v2/acts/nexgendata~lead-list-enricher/runs" \
-H "Authorization: Bearer YOUR_BYTEWELLS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domains": ["apple.com", "stripe.com"], "maxContactsPerDomain": 5, "crawlContactPages": true}'
# when the run has finished, read its rows:
curl -H "Authorization: Bearer YOUR_BYTEWELLS_API_KEY" \
"https://bytewells.com/api/v2/actor-runs/RUN_ID/dataset/items"
from apify_client import ApifyClient
client = ApifyClient("YOUR_BYTEWELLS_API_KEY", api_url="https://bytewells.com/api")
run = client.actor("nexgendata/lead-list-enricher").call(run_input={'domains': ['apple.com', 'stripe.com'], 'maxContactsPerDomain': 5, 'crawlContactPages': True})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
Contact
Questions, a source that changed, or a field you need: [email protected]
Input
Preview of the input form. Rent the Actor to fill it in and start runs from the console.
Fields
domainsCompany domains to run lead enrichment on (enrich leads with emails, phones, tech). List of domains (e.g. ['apple.com','stripe.com']) — actor returns one enriched record per domain
maxContactsPerDomainCap on contacts returned per domain (default 5)
crawlContactPagesVisit additional pages for richer enrichment (slower but more accurate)
notionParentIdOptional Notion page ID to create the page under. Blank = a private page in your workspace.
API
Bytewells speaks the Apify API. Existing integrations keep working: point apify-client at https://bytewells.com/api and use your Bytewells API token (Console → Settings → API access). The Actor ID is nexgendata/lead-list-enricher (or nexgendata~lead-list-enricher in URLs).
JavaScript · apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.BYTEWELLS_TOKEN,
baseUrl: 'https://bytewells.com/api',
});
const input = {
"domains": [
"apple.com",
"stripe.com"
],
"maxContactsPerDomain": 5,
"crawlContactPages": true
};
const run = await client.actor('nexgendata/lead-list-enricher').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Python · apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["BYTEWELLS_TOKEN"], api_url="https://bytewells.com/api")
run_input = {
"domains": [
"apple.com",
"stripe.com"
],
"maxContactsPerDomain": 5,
"crawlContactPages": True
}
run = client.actor("nexgendata/lead-list-enricher").call(run_input=run_input)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)HTTP · curl
curl -X POST "https://bytewells.com/api/v2/acts/nexgendata~lead-list-enricher/runs" \
-H "Authorization: Bearer $BYTEWELLS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":["apple.com","stripe.com"],"maxContactsPerDomain":5,"crawlContactPages":true}'Runs are billed as compute from your credit balance. Paid Actors need an active rental or trial; otherwise the API answers 402 rental-required.
Related
More Actors from the same publisher.
PR Newswire Scraper — Press Releases by Company, Topic & Date
NexGenData · @nexgendata
PR Newswire Scraper is a NexGenData tool that returns press releases with headline, date, category and stock tickers from PR Newswire.
BusinessMarketingLead generation$49/mo3-day free trialDelaware Corporations Search — DE Entity Data API
NexGenData · @nexgendata
Delaware Corporations Search is a NexGenData tool that returns one row per Delaware entity from the Delaware Division of Corporations registry with entity name, file number, formation date, entity kind and type, residency, and registered agent name, address and phone.
BusinessLead generation$79/mo1-day free trialWappalyzer Alternative — Tech Stack Detector & BuiltWith API
NexGenData · @nexgendata
Tech stack lookup by URL: Wappalyzer & BuiltWith Alternative, a NexGenData tool, returns the technologies a website uses, grouped by category from the website's own pages.
Developer toolsBusinessMarketing$19/mo1-day free trialASX Announcements Scraper — Australian Company Disclosures
NexGenData · @nexgendata
ASX Announcements Scraper is a NexGenData tool that returns company announcements with ticker, headline, type and source PDF link from the Australian Securities Exchange.
$29/mo3-day free trialBilibili Video Search by Keyword · B站视频搜索 (No Login)
NexGenData · @nexgendata
Bilibili Video Search is a NexGenData tool that returns videos with BV-id, title, uploader, plays, likes and danmaku from Bilibili keyword search.
$19/mo1-day free trialLinkedIn Jobs Scraper — No Login, by Keyword & Location
NexGenData · @nexgendata
LinkedIn Jobs Scraper is a NexGenData tool that returns job listings with title, company, salary and posting date from public LinkedIn job pages.
$29/mo3-day free trial