B2B Lead Enrichment avatar

B2B Lead Enrichment

Pricing

Pay per usage

Go to Apify Store
B2B Lead Enrichment

B2B Lead Enrichment

Turn a simple list of company domains into rich, actionable company profiles. Upload a CSV with company domains, and get back firmographic data, technology stacks, contact emails, social links, and industry classification. No paid API keys required. Everything runs on publicly available data.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Banea Teodor

Banea Teodor

Maintained by Community

Actor stats

1

Bookmarked

66

Total users

8

Monthly active users

2 days ago

Last modified

Share

Turn a plain list of company domains into sales-ready B2B profiles — company details, technology stack, email infrastructure, social links and contact emails.

Upload a CSV with a domain column and get back one enriched row per company. No API keys required, no external data vendors, no per-record data fees.

What does this Actor do?

For every company in your CSV, the Actor reads the company's own website, its DNS records, its TLS certificate and its public GitHub presence, then merges everything into a single consistent row.

It follows each site's own navigation to the pages that carry real information — contact, about, team, imprint — rather than guessing at fixed URLs, which is why it finds contacts that simpler scrapers miss.

What you get

DataExampleSource
Company name & legal nameBaremetrics / Baremetrics, Inc.schema.org, SSL certificate
DescriptionSubscription analytics for SaaS businessesschema.org, meta tags
IndustryData & AnalyticsClassified from the site's own copy
Employee count113schema.org, stated figures on the site
Founded year2014schema.org, "founded in…", copyright range
LocationAustin, TX, USschema.org, <address>, SSL certificate
Named contactsLuke Marshall — CEO — luke@baremetrics.comTeam & contact pages
Shared inboxeshello@, sales@Contact pages, ranked by sales value
Phone+1 512 555 0142tel: links, schema.org
Tech stackCloudflare, Next.js, HubSpot, MailchimpHeaders, scripts, meta tags, SPF
Email providerGoogle WorkspaceMX records
Email securitySPF, DMARC, DKIMTXT records
Programming languagesTypeScript, RubyPublic GitHub repositories
Social linksLinkedIn, X, Facebook, Crunchbase, GitHubschema.org sameAs, page links
SSL issuer & validityLet's EncryptTLS certificate

Every field records where it came from in a provenance object, and every row carries an enrichmentScore (0–100) so you can filter out thin records before importing into a CRM.

Quick start

  1. Prepare a CSV with a domain column:
    domain
    baremetrics.com
    basecamp.com
    buffer.com
  2. Paste it into CSV content, or point the Actor at a public URL or a key-value store record.
  3. Click Start.

Column names are auto-detected, so website, company_domain or url work just as well as domain.

Pricing

You are charged once per company enriched — one input row produces exactly one billable result, no matter how many contacts are found for it.

That means your cost is predictable before you start: 500 companies in your CSV is 500 results. Use Maximum companies to process to cap a run, and note that Max contacts per company does not affect what you pay — extra contacts ride along in the same row.

Output

One row per company. The best contact is flattened onto the row so CSV and spreadsheet exports stay usable, and the complete list is in contacts.

{
"companyId": "8f14e45fceea167a",
"companyDomain": "baremetrics.com",
"companyName": "Baremetrics",
"companyLegalName": "Baremetrics, Inc.",
"companyDescription": "Subscription analytics and insights for SaaS businesses",
"companyIndustry": "Data & Analytics",
"companySizeEmployees": 42,
"companyFoundedYear": 2014,
"companyCity": "Austin",
"companyRegion": "TX",
"companyCountry": "US",
"companyWebsiteUrl": "https://baremetrics.com",
"companyLogoUrl": "https://baremetrics.com/og-image.png",
"companyLinkedinUrl": "https://www.linkedin.com/company/baremetrics",
"companyGithubUrl": "https://github.com/baremetrics",
"companyEmails": ["hello@baremetrics.com", "marketing@baremetrics.com"],
"companyPhone": "+1 512 555 0142",
"techStack": ["Cloudflare", "jQuery", "HubSpot", "Mailchimp"],
"techCategories": ["Web Server", "Email Marketing"],
"programmingLanguages": ["TypeScript", "Ruby"],
"emailProvider": "Google Workspace",
"emailSecurity": ["SPF", "DMARC"],
"emailMarketingTools": ["Mailchimp"],
"dnsProvider": "Cloudflare DNS",
"sslIssuer": "Let's Encrypt",
"primaryContactName": "Luke Marshall",
"primaryContactEmail": "luke@baremetrics.com",
"primaryContactTitle": "CEO",
"primaryContactSeniority": "C-Level",
"primaryContactDepartment": "Executive",
"contacts": [
{
"personFullName": "Luke Marshall",
"personEmail": "luke@baremetrics.com",
"personTitle": "CEO",
"personSeniority": "C-Level",
"personDepartment": "Executive"
}
],
"contactCount": 5,
"enrichmentScore": 77,
"fieldsFilled": 11,
"enrichedAt": "2026-09-13T14:30:00.000Z"
}

Four dataset views are provided in the Console: Overview, Contacts, Tech Stack and Social & Web.

About data quality

This Actor reports only what the company publishes about itself, and it is deliberately conservative about what it is willing to call a fact:

  • Documentation placeholders are filtered out. Addresses that appear in API examples and code samples on a company's own domain are excluded — a fake contact is worse than no contact.
  • Shared inboxes are labelled, not disguised. sales@ is returned as a shared inbox, never dressed up as a person.
  • Names are only claimed when the page says so. A name is taken from a team card, or derived from an unambiguous first.last@ address — never guessed from initials.
  • techStack contains technologies only. Certificate authorities, GitHub topics and source languages have their own fields, so the column stays useful for filtering.
  • Fields are null rather than wrong. "Remote", "Worldwide" and lists of every office are not stored as a city. companyIndustry is left empty when no classification was confident enough.

Missing data is normal and expected: a company that publishes no address genuinely has no address to find. enrichmentScore tells you how much was recovered for each record.

Tips

  • Add a free GitHub token to raise the GitHub rate limit from 60 to 5,000 requests/hour. Without it, GitHub data stops after roughly 60 companies in a run. Create one at github.com/settings/tokens — no scopes needed.
  • Add a free Google Knowledge Graph key for richer descriptions on well-known companies. Get one in the Google Cloud Console under APIs & Services → Knowledge Graph Search API.
  • Raise "Pages per company" to find more contacts. The Actor follows the site's navigation, so more pages usually means reaching the team page as well as the contact page.
  • Raise "Max concurrency" for large runs. Most sites are read over plain HTTP, so 10–30 parallel companies is comfortable.
  • Turn on proxies for runs of several hundred companies or more; some sites block datacenter IPs.
  • Filter on enrichmentScore before importing to a CRM — scores below about 30 are usually companies with a thin or parked website.

How it works

Sites are fetched over plain HTTP first. A real browser is launched only when a page turns out to render entirely in JavaScript, which is a small minority of company websites. You can disable that fallback under Website Scraper Settings for the lowest possible cost, at the price of missing data on JavaScript-only sites.

DNS lookups fall back to DNS-over-HTTPS when the system resolver is unavailable, so email provider and email security data stay populated on restricted networks.

Integrations

The dataset exports to CSV, JSON, Excel and Google Sheets, and can be pushed to Zapier, Make, Airbyte or any HTTP endpoint through Apify's integrations. Use companyId as a stable join key across runs.

Limitations

  • Data comes from public sources only. Companies that publish little will return sparse rows.
  • Employee counts and founding years are reported when stated; they are not estimated.
  • Contact discovery depends on the company publishing addresses on its website. Sites that use only a contact form will return no email.
  • This Actor does not verify that a mailbox accepts mail.