Company Enrichment — Emails, Phones, Socials & Tech Stack
Pricing
from $9.00 / 1,000 results
Company Enrichment — Emails, Phones, Socials & Tech Stack
Turns a list of company websites into structured company profiles: contact emails, phone numbers, social profiles, address and the technologies each site runs on.
Pricing
from $9.00 / 1,000 results
Rating
0.0
(0)
Developer
Maged
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Turn a plain list of company websites into a full contact database. Paste the domains you already have and get back emails, phone numbers, social profiles, company details and the technology each business runs on — one clean row per fact, ready for your CRM.
What does Company Enrichment do?
Sales and research teams always have the same starting point: a list of company domains, and nothing else. This Actor fills in the rest. For every website it returns:
- Email addresses, classified by type (role inbox, personal, and more)
- Phone numbers, validated and normalized to international format with their country
- Social profiles — LinkedIn, Facebook, Instagram, X, YouTube, TikTok, GitHub, Crunchbase and more
- Company details — name, description, postal address and logo
- Technology stack — the ecommerce platform, analytics, chat, payment and marketing tools the site uses
It is built for speed and reliability, handling modern JavaScript-heavy and bot-protected sites automatically. No API keys, no per-record subscription. A dozen companies are enriched in well under a minute, and thousands run comfortably in one job.
Running on the Apify platform gives you the REST API, scheduling, webhooks and integrations with Google Sheets, Slack, Zapier and Make, so enrichment can sit directly inside your sales workflow.
Why use Company Enrichment?
- Fill in a cold list — you exported 2,000 domains and need somebody to contact at each one.
- Enrich your CRM — refresh contact details on accounts that have gone stale.
- Qualify leads before outreach — the tech stack tells you whether a prospect is even a fit. Selling a Shopify app? Filter for the ones running Shopify.
- Build partner and supplier lists — collect contact routes for hundreds of firms at once.
- Competitive research — see which analytics, chat and marketing tools a market segment has standardized on.
- Recruiting and outreach — find the careers inbox and the company's social presence in one pass.
Commercial enrichment services charge a monthly subscription and meter every record. Here you pay per result, with no floor.
How to use Company Enrichment
- Open the Actor in Apify Console and click Try for free.
- Paste your domains into Company Websites —
acme.com,www.acme.comor a full URL all work. - Optionally list result types in Exclude Result Types to drop what you don't need — those are skipped entirely, saving time and cost.
- Click Start.
- Read the results in the Output tab.
- Export to JSON, CSV, Excel, or pull the results straight from the API.
Input
| Field | Type | Default | Description |
|---|---|---|---|
domains | array | — | Company websites to enrich. Bare domains, www addresses and full URLs are all normalized. |
maxPagesPerSite | integer | 4 | How many pages to read per company. Higher finds more contacts and takes longer. |
excludeTypes | array | [] | Result types to leave out: company, description, address, logo, email, phone, social, technology. Excluded types are never looked for, so the run is faster and you are not billed for them. Excluding all of them keeps the company row so the output is never empty. |
companyEmailsOnly | boolean | true | Return only addresses on the company's own domain. Off = also collect other addresses found on the site (may include unrelated ones). |
maxResultsPerType | integer | 25 | Cap on emails, phones, socials and technologies per company. 0 = unlimited. |
allowBrowser | boolean | true | Automatically re-read difficult (JavaScript-only or protected) sites for best coverage. Leave on unless you want the cheapest possible run. |
proxyConfiguration | object | disabled | Optional; only needed for unusually large lists. |
{"domains": ["acme.com", "example.com", "www.example.org"],"maxPagesPerSite": 4,"excludeTypes": ["technology"],"companyEmailsOnly": true}
Output
Every result — a company, an email, a phone, a social profile, a technology, or an error — is the same seven-column row, so the dataset drops straight into a spreadsheet, a database table, or a CRM import with no reshaping. Group by domain to reassemble a company. You can download the dataset in JSON, CSV, Excel or HTML.
| Column | What it holds |
|---|---|
domain | The company the row belongs to. Group by this. |
entityType | company, description, address, logo, email, phone, social, technology, or error. |
value | The datum itself — the email address, the phone number, the company name, the technology, the social handle. |
label | A qualifier for the row's type: email category, phone line type, or the address country. |
channel | How to reach a phone (call, whatsapp, telegram, viber, fax, hotline, …) or which network a social profile is on (linkedin, instagram, …). |
url | The canonical link for the row — the profile URL, the source page, or the website. |
error | Set only on error rows; null everywhere else. |
[{ "domain": "acme.com", "entityType": "company", "value": "Acme Widgets Ltd","label": "4 pages", "channel": null, "url": "https://acme.com/", "error": null },{ "domain": "acme.com", "entityType": "address","value": "12 Example Street, Springfield, United States","label": "United States", "channel": null, "url": "https://acme.com/", "error": null },{ "domain": "acme.com", "entityType": "email", "value": "hello@acme.com","label": "role", "channel": null, "url": "https://acme.com/contact", "error": null },{ "domain": "acme.com", "entityType": "phone", "value": "+15551234567","label": "mobile", "channel": "whatsapp", "url": "https://acme.com/contact", "error": null },{ "domain": "acme.com", "entityType": "social", "value": "acme","label": null, "channel": "linkedin", "url": "https://linkedin.com/company/acme","error": null },{ "domain": "acme.com", "entityType": "technology", "value": "Shopify","label": null, "channel": null, "url": "https://acme.com/", "error": null }]
What label and channel carry per row type
entityType | value | label | channel |
|---|---|---|---|
company | company name | pages read | — |
description | the description | — | — |
address | full postal address | country | — |
logo | logo image URL | — | — |
email | the address | role, person, personal_freemail, third_party, other | — |
phone | international number | line type: mobile, landline, toll_free, voip, fax, … | call, whatsapp, telegram, viber, fax, hotline (comma-separated if several) |
social | handle | — | network: linkedin, facebook, x, … |
technology | the technology | — | — |
error | the input, if any | — | — (reason is in error) |
WhatsApp numbers surface as a phone row with whatsapp in channel. The same number found more than once is returned as a single row with all its channels merged.
Dataset view
- Results — the single seven-column table. Filter or pivot on
entityTypein your own tool after export.
How much does it cost to enrich a company list?
You are charged per result. The company row plus every email, phone, social profile and technology is one result.
Typical yield is 8–12 results per company, so:
| Job | Approximate results |
|---|---|
| 100 companies, everything on | ~1,000 |
| 1,000 companies, everything on | ~10,000 |
| 1,000 companies, contacts only (socials and tech excluded) | ~3,000 |
Levers to control the bill:
excludeTypes— drop whole result types you don't need (e.g.["technology","social"], usually the highest-volume rows). Excluded types aren't fetched, so they cost neither time nor money.maxResultsPerType— cap the long tail of emails, phones, socials and technologies per company.maxPagesPerSite: 1— the quickest, cheapest pass, though it finds fewer contacts.
Tips
- The default page depth is the sweet spot. A single page misses most contact details; a few pages per site is where the emails and phones actually turn up.
- Filter the tech rows to qualify leads — "runs Shopify", "runs HubSpot" is often a better buying signal than company size.
- Small and mid-sized businesses publish the most. Large enterprises route everything through contact forms; smaller firms print their details openly, and they are usually the ones worth emailing.
- Leave
allowBrowseron for best coverage; switch it off only if you want the absolute cheapest run and don't mind that some difficult sites return less. - Turn the proxy on only if a batch of sites returns errors; it isn't needed for typical lists.
FAQ
How many pages per company are read? As many as you set in Pages to Crawl per Company, always on the company's own domain. More pages means more contacts and a longer run.
Why does one company return fewer results than another? Every website publishes a different amount. Some list a full address, phones and every social network; others expose only a contact form. The Actor returns whatever a company actually makes public.
Are the phone numbers real? Every number is validated before it is returned, so order references, IDs and postcodes never leak in as phone results.
Is the technology detection accurate? Technologies are detected from a site's technical fingerprints, not from its marketing copy — a site that merely mentions a tool in text is not reported as running it.
Is scraping company websites legal? It collects only publicly published business information — the same details a visitor sees on a contact page. Business contact data is still personal data in some jurisdictions: follow GDPR, CAN-SPAM and local marketing rules, honour opt-outs, and do not use the output for spam.
Support
Need another field, another network, or a technology added? Open an issue on the Actor's Issues tab. Custom enrichment pipelines are available on request.