Company Contact Details Scraper: Emails, Phones & Socials
Pricing
from $4.00 / 1,000 domain enricheds
Company Contact Details Scraper: Emails, Phones & Socials
Turn a list of company domains into clean company profiles: name, description, language, country, logo, official LinkedIn/X/Facebook/Instagram/YouTube pages, phones, generic emails (info@, sales@), address and tech stack. Public company data only, robots.txt respected.
Pricing
from $4.00 / 1,000 domain enricheds
Rating
0.0
(0)
Developer
Julian Genuario
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Give it a list of company domains and get back one clean, CRM-ready row per company, built from the company's own public website:
- Company name (and legal name when the site publishes it), description, logo and favicon
- Language of the site and probable country (from the published address, phone prefixes, ccTLD or language)
- Official social profiles: LinkedIn company page, X (Twitter), Facebook, Instagram, YouTube and TikTok
- Company phone numbers, normalised to E.164 (
+4971563030) and international format - Generic company emails only:
info@,contact@,sales@,ventas@,support@,hello@,press@,privacy@... on the company's own domain - Postal address when the site publishes it (structured data or
<address>tags) - Technologies detected from the home page: CMS (WordPress, Drupal, Webflow, Wix...), e-commerce platform (Shopify, WooCommerce, Magento, VTEX...), analytics and tag managers, ad pixels, chat widgets, consent tools, frameworks and CDN, plus an
hasEcommerceflag
It visits the home page and at most a few relevant pages (contact, imprint / legal notice, about, privacy), never the whole site. Plain HTTP requests, no browser: fast and cheap.
What does Company Enrichment by Domain do?
Company Enrichment by Domain turns a list of company websites into clean company profiles built from each company's own public site: name, description, logo, language, probable country, official LinkedIn / X / Facebook / Instagram / YouTube / TikTok pages, company phone numbers, generic contact emails (info@, sales@, support@), postal address and tech stack. It does not collect personal emails.
How to use Company Enrichment by Domain
- Click Try for free on this page (a free Apify account is enough to start).
- Fill in the input (see the examples below) or keep the prefilled example.
- Click Start and wait for the run to finish.
- Download the results from the Output tab as JSON, CSV, Excel or HTML, or read them with the Apify API.
- Optional: create a Schedule to run it daily or weekly, and connect a webhook or an integration (Make, Zapier, n8n, Slack).
Use cases
- Enrich a lead list or CRM (HubSpot, Salesforce, Pipedrive): add website description, country, LinkedIn page and a generic contact channel to every account
- Clean and qualify company lists from trade-show exhibitor lists, directories or exports: which companies have e-commerce, which run WordPress or Shopify, which sell in which language
- Account research for SDRs and agencies: one row per account instead of opening 5 tabs per company
- Data hygiene: find the official social profiles and the general phone number of each company
- Market mapping: technology adoption (CMS, analytics, chat, payments) across a list of competitors or prospects
Input
{"domains": ["stripe.com", "https://www.hubspot.com/", "info@bosch.de"],"maxPagesPerDomain": 5,"detectTechnologies": true,"maxConcurrency": 5}
Domains, full URLs or work emails are accepted (the email's domain is used). Duplicates and invalid lines are removed and listed in the run summary.
Output (one row, shortened)
{"input": "zapier.com","domain": "zapier.com","finalDomain": "zapier.com","url": "https://zapier.com/","status": "ok","companyName": "Zapier","legalName": null,"description": "Build and scale AI workflows and agents across 9,000+ apps with Zapier...","language": "en","languageTag": "en","countryCode": "US","countrySource": "address","logoUrl": "https://res.cloudinary.com/zapier-media/image/upload/...","faviconUrl": "https://zapier.com/favicon.ico","socialProfiles": {"linkedin": "https://www.linkedin.com/company/zapier","x": "https://x.com/zapier","facebook": "https://www.facebook.com/ZapierApp","instagram": "https://www.instagram.com/zapier","youtube": "https://www.youtube.com/@ZapierApp","tiktok": null},"emails": ["privacy@zapier.com"],"phones": [],"address": { "streetAddress": "548 Market St. #62411", "postalCode": "94104", "locality": "San Francisco", "region": "CA", "country": "US", "full": "548 Market St. #62411, 94104 San Francisco, CA, US", "source": "structured-data" },"technologies": [ { "name": "Next.js", "category": "framework" }, { "name": "Google Tag Manager", "category": "analytics" }, { "name": "Vercel", "category": "hosting" } ],"hasEcommerce": false,"pagesVisited": ["https://zapier.com/", "https://zapier.com/l/contact-sales", "https://zapier.com/legal", "https://zapier.com/privacy"],"pagesBlockedByRobots": 0,"personalEmailsDiscarded": 0,"error": null,"scrapedAt": "2026-10-26T22:10:00.000Z"}
Phones look like { "number": "+49 7156 3030", "e164": "+4971563030", "country": "DE", "source": "structured-data" } (source is structured-data, tel-link or page-text).
Every row has the same keys; missing data is null or an empty list. Websites that cannot be read (down, DNS error, blocked by a firewall, HTTP 4xx/5xx) come back with status: "failed" and the reason in error. Websites whose robots.txt disallows the home page come back with status: "blocked_by_robots". Failed and blocked rows are not charged.
The dataset has three views: Company profiles, Contacts (CRM-ready) and Technologies. A RUN_SUMMARY record in the key-value store has the totals (enriched, failed, blocked by robots.txt, with email / phone / LinkedIn / address).
Privacy and compliance
This Actor is built for company (B2B) data, not for collecting data about people:
- Only public, corporate information published by the company on its own website.
- No personal emails. Only role / generic mailboxes are returned (info@, sales@, support@, press@, privacy@, careers@, etc.). Emails that look like a person (
john.smith@,jsmith@,maria@) are discarded and only counted (personalEmailsDiscarded), never stored. Emails on other domains (gmail.com, agencies, widgets) are ignored. - No employee names. People listed in structured data, team pages or personal LinkedIn profiles (
linkedin.com/in/...) are ignored; team and people pages are not visited. - Respects robots.txt of every website, on every request and every redirect: paths disallowed for our user agent (or for
*) are never requested. ACrawl-delayup to 10 seconds is honoured. - Identifiable and polite: user agent
CompanyWebsiteEnrichmentBot/1.0with a link to this page, pages of the same site fetched one at a time with a delay (1 s by default), at most 8 pages per domain, timeouts on every request. No proxies, no CAPTCHA solving, no login.
You are responsible for using the results lawfully (for example GDPR / ePrivacy rules on B2B outreach in your country).
Pricing
Pay per event: USD 4 per 1,000 enriched domains (USD 0.004 per company). Failed websites, domains blocked by robots.txt, invalid inputs and duplicates are free. Apify platform usage is included. The run respects your max charge per run: it never processes more domains than you will pay for.
Limits and tips
- Some websites block automated requests with a firewall (HTTP 403) or only render their content with JavaScript. These come back as
failedor with fewer fields; they are not charged when they fail. - Large corporations often hide emails behind contact forms: you will get more emails and phones from small and mid-size companies, which usually publish
info@and a phone number in the footer or imprint. - The country is a best guess and comes with its source (
address,phone,domain,language). - Technology detection looks at the home page HTML and headers only (no browser), so tools loaded later by JavaScript may be missed.
- Around 5 pages per domain and 5 domains in parallel: roughly 300-600 domains per 10 minutes, depending on the websites.
Why use Company Contact Details Scraper
- One clean row per company, not per page. Name, description, language, likely country, logo, official social pages (LinkedIn company page, X, Facebook, Instagram, YouTube, TikTok), phones in E.164, generic contact emails (info@, sales@, support@), address and tech stack.
- Predictable price: a flat price per company, whatever number of pages it reads (up to 8).
- Company data only. It does not collect personal emails of employees, which keeps the output simpler to use under GDPR.
- Failed sites, robots.txt blocks, invalid inputs and duplicates are not charged.
Cost examples
Prices at the current pay-per-event rates (see Pricing). You can set a maximum charge per run in the run options.
| Job | Approximate cost |
|---|---|
| 100 company domains | about $0.40 |
| 1,000 company domains | about $4.00 |
| 10,000 company domains | about $40 |
Use it from your code, an integration or an AI agent
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("latamdatatools/company-website-enrichment").call(run_input={"domains": ["stripe.com","hubspot.com","siemens.com"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript / Node.js (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('latamdatatools/company-website-enrichment').call({"domains": ["stripe.com","hubspot.com","siemens.com"]});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
No code:
- Schedules: run it daily or weekly from Apify Console (Schedules), with the same input saved as a Task.
- Integrations: send results to Google Sheets, Slack, email, Make, Zapier, n8n or Airbyte from the Integrations tab, or call your own webhook when a run finishes.
- AI agents: add it as a tool in Claude, Cursor, VS Code and other MCP clients through the Apify MCP server (
https://mcp.apify.com), so the agent can run Company Contact Details Scraper and read the results.
FAQ
Can I get the CEO's or employees' emails? No, by design. Use this Actor for company-level data only.
Why is a LinkedIn / Instagram profile missing? Only links published on the company's own website are used. If the site does not link to its profiles, the field is null.
Can I pass a list from another Actor or a spreadsheet? Yes: paste domains or URLs, one per line, or call the Actor via API / integrations (Make, Zapier, n8n) with a domains array.
How is it different from a crawler that collects every email on a site? Those return one row per page or per email found, often including personal addresses. This Actor reads a handful of pages (home, contact, imprint, about, privacy) and returns one merged company profile with only company-level contacts.
Which websites work best? Small and mid-size company sites. Very large corporations often hide emails behind forms, and sites that block bots (HTTP 403) or render everything with JavaScript return fewer fields or fail (failures are free).
Questions or a missing field? Open an issue in the Issues tab.