Company Contact & Enrichment: Emails, Phones, Socials, LEI
Pricing
from $3.00 / 1,000 domain enricheds
Company Contact & Enrichment: Emails, Phones, Socials, LEI
AI-agent & MCP ready: turn company domains into one JSON record each with business emails (MX-checked), E.164 phones, social profiles, LEI and SEC CIK, each with confidence and source URL. Domains with no contacts are free.
Pricing
from $3.00 / 1,000 domain enricheds
Rating
0.0
(0)
Developer
Clearfeed Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Company Contact & Enrichment: emails, phones, socials and LEI from company websites
Paste a list of company domains and get one clean row per company:
- business emails, with role addresses like info@ and sales@ by default
- phone numbers in E.164 format with a country
- company social profiles
- schema.org company data, address and description
- tech hints
- GLEIF LEI and SEC CIK and ticker matches
Every value comes with a confidence score and the page it was found on. Domains with no contacts are free, and incremental mode bills only companies whose contacts changed.
For AI agents & MCP
Tool summary: given company domains, read each company's own website (up to 6 pages, robots.txt respected) and return one JSON record of its published business contacts.
When to call it: "Get contact info for these companies", "Enrich this lead list", "What's the LEI for this company?"
Input (key fields):
domains(array, required)maxPagesPerDomain,checkMx,matchGleif,matchSec,defaultCountry,maxDomainssuppressionList;includePersonalEmailsandincludePersonalLinkedInare off by default
Output (one item per domain):
status(ok,no_contacts,needs_js,blocked, ...),companyName,legalName,countryprimaryEmail,primaryPhone(E.164)emails[], each withtype,mxandconfidencephones[], each withe164,countryandconfidencelinkedin,x,facebook,instagram,youtube,tiktok,githublei,secCik,secTickersthirdPartyEmails(other organizations' addresses, kept separate)
Every value carries its source URL.
Call it through Apify's hosted MCP server: connect your MCP client to https://mcp.apify.com?tools=clearfeedlabs/company-contact-enrichment (Apify's server; you'll need your own Apify account). Then:
call-actor { "actor": "clearfeedlabs/company-contact-enrichment","input": { "domains": ["n26.com", "stripe.com"], "checkMx": true, "matchGleif": true } }
call-actor returns the run and its datasetId. Fetch the records with get-dataset-items { "datasetId": "<id>" }. You're billed only for domains where contacts are found.
Why switch
| This Actor | Typical contact scrapers | |
|---|---|---|
| Output shape | One row per company, deduplicated | Often one row per page, so merging is a separate step |
| Billing unit | Per company with contacts found; empty domains free | Often per page crawled |
| Re-checks | Incremental: unchanged companies not billed | Re-bill every run |
| Phones | E.164 plus country; fictional, repeated and sequential numbers dropped | Raw strings, "uncertain" lists |
| Emails | Image, placeholder and tracking addresses dropped; role vs personal labelled; MX checked via DNS | Raw matches |
| Trust signals | Confidence and source URL for every value | Usually a list of pages visited |
| Company data | Name, legal name, address, description, logo, founding date, VAT ID from the site's own structured data | Usually only via paid lead databases |
| Identifiers | GLEIF LEI and SEC CIK/ticker, attached only on unambiguous matches | Rare |
| Privacy defaults | Personal-name emails and personal LinkedIn profiles withheld unless you opt in; suppression list | Everything found is returned |
What you get
| Field | Example |
|---|---|
domain, status, changeStatus | acme.com, ok, new |
companyName, legalName, country | Acme, Acme Inc., US |
primaryEmail, emailsJoined | sales@acme.com, sales@acme.com; support@acme.com |
primaryPhone, phonesJoined | +14155552671 |
linkedin, x, facebook, instagram, youtube, tiktok, github | company profile URLs |
addressText | 1 Main St, Austin, TX, 78701, US |
lei, secCik, secTickers | LEI code, 10-digit CIK, tickers |
emails[] | { email, type: role/personal, onCompanyDomain, freemail, mx, confidence, sources[] } |
phones[] | { e164, country, raw, confidence, sources[] } |
socials{} | per network: { url, confidence, sources[] } |
tech | e.g. WordPress, HubSpot, Google Tag Manager |
personalEmailsWithheld | count of personal-name addresses not returned |
There are three dataset views:
- Companies, which is flat and CSV-ready
- Details, with confidence and sources
- Per-domain status
The run also saves RUN_SUMMARY and DOMAIN_STATUS records.
Status values
| Status | Meaning |
|---|---|
ok | Contacts found |
no_contacts | The site was read but publishes no contacts. Not billed. |
robots_disallowed | The site's robots.txt asks crawlers not to visit, so we didn't |
blocked / captcha | The site refused access or showed a challenge. We stop and don't retry around it. |
needs_js | The site only shows content with JavaScript. This version reads HTML only. |
unreachable | DNS, TLS, timeout or a server error |
suppressed | The domain is on your suppression list |
not_processed | Your run spending limit was reached. Not billed; re-run to continue. |
Popular uses
Ready-made examples you can run as-is or copy with your own domains:
- SaaS company emails & phones: Atlassian, HubSpot, Stripe, Xero, Plausible, Buffer
- Restaurant contact info: emails, phones and socials from restaurant and cafe sites
- B2B lead enrichment from a domain list: one row per company for your CRM
- Company LEI & registry lookup: GLEIF LEI and SEC CIK, checked against each site's legal name
- EU & UK company contacts: N26, Zalando, Sennheiser, Monzo, Octopus Energy
How to use
Enrich a CRM export
{ "domains": ["acme.com", "globex.com, Globex Corporation", "https://initech.com/about"] }
Weekly watchlist, billed only for changes
{ "domains": ["acme.com", "globex.com"], "incremental": true, "stateKey": "q4-accounts" }
US public-company matching is on by default (SEC CIK and tickers). Turn it off with "matchSec": false.
Honor opt-outs
{ "domains": ["acme.com"], "suppressionList": ["ceo@acme.com", "do-not-contact.com"] }
Use cases:
- enriching CRM accounts
- filling out lead lists from the ATS Jobs Feed or Form D filings
- vendor due diligence (LEI)
- agency prospecting
- research datasets
Pricing
Pay per event:
- One event per company returned with at least one contact. Companies with no contacts, and blocked or unreachable sites, are free.
- Duplicate inputs are merged, so each company is billed once per run.
- In incremental mode, unchanged companies are free.
- Set a maximum cost per run in Apify Console, and the Actor stops cleanly when it's reached.
See the Pricing tab for the current price.
API and AI agents
Call the Actor from the Apify API, the JavaScript or Python clients, or the Apify MCP server. With MCP, an agent can say "Get contact details for these 20 domains and list the ones with a sales@ address." Read results from the overview view.
Responsible use and compliance
- We only collect what companies publish on their own public websites. That means public pages only, no logins, and a small number of pages per site.
- We respect each site's crawling preferences. We follow robots.txt, identify ourselves honestly, keep the request rate low, and stop when a site refuses access.
- We use no proxies and no CAPTCHA solving. We don't circumvent sites' anti-harvesting measures.
- Privacy-first defaults. Only role addresses are returned unless you opt in. We support a suppression list. Mail domains are checked by DNS only, and we never probe mail servers.
- You're responsible for how you use the data. Business contact data can still be personal data under the GDPR, the CCPA and similar laws. You need a lawful basis, and you must give notice where required and honor opt-out and deletion requests. Follow CAN-SPAM, CASL, PECR and other anti-spam rules, and respect the terms of the websites you process.
- This README is not legal advice.
- We're not affiliated with GLEIF, the U.S. SEC, or any website processed.
- Registry matches are only attached when the name match is unambiguous. They are provided as-is.
FAQ
Is it legal to scrape contact details? Collecting publicly published business contact data is generally lower risk than collecting personal data, but the rules depend on your country and use. That's why personal-name data is off by default. Ask your own counsel.
Why are some fields empty? Many sites publish only a contact form. The row still shows the socials, address and company data the site publishes.
Why was a domain skipped? Check status and statusReason. For example, the site's robots.txt asked crawlers to stay out.
Built and maintained by Clearfeed Labs: clean, compliant data feeds. Questions or bugs? Use the Issues tab.