Business Website Contact Enrichment Scraper avatar

Business Website Contact Enrichment Scraper

Pricing

Pay per usage

Go to Apify Store
Business Website Contact Enrichment Scraper

Business Website Contact Enrichment Scraper

Turn company websites and public business pages into structured contact records: company name, phone, email, address, website, and domain. Output is a clean dataset formatted for CRM import, outreach lists, and sequence-appended prospecting workflows.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Rupesh

Rupesh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Share

Lead Enrichment Actor

Business contact enrichment: discovery → extraction → verification → CRM-ready output

Turn a list of business URLs or a natural search query into structured contact records. The Lead Enrichment Actor discovers candidate business pages, extracts contact details from each page, optionally verifies emails via DNS, filters low-confidence rows, and emits clean records with email, emailStatus, phone, social profiles, and company metadata.

What it does

  • Discovery — use explicit startUrls, or run DuckDuckGo-backed search discovery from a searchQuery
  • Direct enrichment — fetch candidate pages via HTTP and extract company name, email, phone, address, and social links
  • Subpage expansion — follow high-value internal subpaths such as /contact, /about, /team, /locations, plus data-attribute/meta/JSON-LD contact signals
  • Homepage-first ranking — prefer business homepages and high-value subpages over directory/listing pages before extraction
  • Directory handling — detect directory/listing pages and extract individual business candidates from them, bounded by a per-directory-domain cap
  • Validation — drop non-business rows, blacklisted domains, and low-confidence records before emitting
  • Telemetry — emit discovery, filtering, and contact-quality stats for every run
  • Outputraw dataset rows, plus optional CSV / HubSpot / Salesforce export files

How it works

Input
├─ startUrls provided? ── Yes ──► Normalize URLs
│ │
└─ No ▼
searchQuery ─► DuckDuckGo discovery
Filter DDG redirectors / blacklisted domains
Homepage-first candidate ranking
├─ Boost root /contact /about /team /locations
├─ Deprioritize /search /find /listings /directory
└─ Collapse to best-scoring URL per domain
Direct enrichment path
├─ Fetch page via HTTP
├─ Extract company name, website, domain, address
├─ Follow high-value subpages up to depth limit
├─ Merge main + subpage HTML
├─ Extract email, phone, social links
└─ Populate emailStatus and completenessScore
Confidence gate
├─ Low confidence / aggregator / social / no contact?
│ └─► Drop row
└─ Pass
Emit row
outputFormat csv/hubspot/salesforce?
├─ Yes ──► Write mapped CSV
└─ No ──► Finish
Directory/listing pages:
├─ Detect directory/listing page
├─ Extract business cards inline from listing rows
├─ Enrich cards with deeper contact/social extraction
├─ Keep only qualified business names
└─ Emit candidate records directly
Aggregator/Directory domain handling:
├─ Hard-blacklist known social and directory hosts
├─ Per-directory-domain cap prevents one host from dominating
├─ Same-domain locality subpages allowed up to the cap
└─ Low-confidence aggregator rows are dropped

Usage examples

Example 1 — enrich a single business website

{
"startUrls": ["https://www.retaildogma.com"],
"maxRequestsPerCrawl": 20
}

Example 2 — batch append to CRM

{
"startUrls": [
"https://www.retaildogma.com",
"https://www.prisync.com",
"https://www.shopify.com"
],
"maxRequestsPerCrawl": 50,
"outputFormat": "hubspot"
}

Example 3 — search-to-lead with email verification

{
"searchQuery": "dentists in Sydney",
"maxRequestsPerCrawl": 30,
"verifyEmails": true,
"outputFormat": "salesforce",
"proxyConfiguration": {
"useApifyProxy": true,
"groups": ["RESIDENTIAL"]
}
}

Example 4 — raw output with deduplication across runs

{
"searchQuery": "plumbers in Austin TX",
"maxRequestsPerCrawl": 25,
"dedupeAcrossRuns": true,
"outputFormat": "raw"
}

Example 5 — search-to-lead with proxy

{
"searchQuery": "dentists in Sydney",
"maxRequestsPerCrawl": 20,
"verifyEmails": true,
"outputFormat": "salesforce",
"proxyConfiguration": {
"useApifyProxy": true,
"groups": ["RESIDENTIAL"]
}
}

Commands

Run via Apify CLI

# Run with a search query
apify call ev2BXp2HWlPCmQFWg \
-i '{"searchQuery":"dentists in Sydney","maxRequestsPerCrawl":20}'
# Run with explicit start URLs
apify call ev2BXp2HWlPCmQFWg \
-i '{"startUrls":["https://www.retaildogma.com"],"maxRequestsPerCrawl":20}'
# Run with email verification and Salesforce export
apify call ev2BXp2HWlPCmQFWg \
-i '{"searchQuery":"dentists in Sydney","verifyEmails":true,"outputFormat":"salesforce"}'

Run via Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("kind_cordial/lead-enrichment-lite").call(
run_input={
"searchQuery": "dentists in Sydney",
"maxRequestsPerCrawl": 20,
"verifyEmails": False,
"outputFormat": "raw",
}
)
dataset_id = run["defaultDatasetId"]
for item in client.dataset(dataset_id).iterate_items():
print(item)

Build and run locally

# Install dependencies
pip install -r requirements.txt
# Run actor locally
python -m src
# Or with explicit input JSON
echo '{"searchQuery":"dentists in Sydney","maxRequestsPerCrawl":20}' | python -m src

Output fields

FieldDescription
sourceUrlDiscovered or submitted URL
companyNameDetected business or brand name
websiteCanonical website URL
domainBare domain
emailExtracted email address(es)
emailStatusfound / not_found / DNS verification result
phoneExtracted phone number(s)
addressPostal address snippet when available
linkedinLinkedIn profile/company URL(s)
facebookFacebook page URL(s)
instagramInstagram profile URL(s)
twitterX / Twitter URL(s)
completenessScoreRecord completeness score

When outputFormat is csv, hubspot, or salesforce, an additional field-mapped CSV is saved to the key-value store as contacts.csv, contacts_hubspot.csv, or contacts_salesforce.csv.

Behavior summary

  • Default mode is fast HTTP extraction.
  • Search discovery ranks business homepages and high-value subpages ahead of directory/listing pages, then collapses to the best-scoring URL per domain.
  • Directory/listing pages are used as sources to extract candidate individual business records; they are not emitted as final rows.
  • Known aggregator and social domains are blacklisted from direct enrichment.
  • A per-directory-domain cap prevents any single listing host from dominating the run.
  • Failed fetches, low-confidence rows, and blacklisted domains are filtered before emission; output count reflects processed qualified businesses, not raw input count.