Contact Details Scraper & Company Enrichment from Domain avatar

Contact Details Scraper & Company Enrichment from Domain

Pricing

$4.00 / 1,000 companies

Go to Apify Store
Contact Details Scraper & Company Enrichment from Domain

Contact Details Scraper & Company Enrichment from Domain

Contact details scraper and company enrichment from a domain: e-mails, phones, social profiles, address, company name, industry, tech stack, e-mail provider (MX/SPF/DMARC) and hiring with open job counts. Public website data, no login or API key. Priced per company, errors free.

Pricing

$4.00 / 1,000 companies

Rating

0.0

(0)

Developer

RS Automation Labs

RS Automation Labs

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

5 days ago

Last modified

Share

Paste a list of domains or website URLs and get one clean row per company: e-mails, phone numbers, social profiles (LinkedIn, X, Facebook, Instagram, YouTube, TikTok ...), contact page, HQ address, company name, description, industry, tech stack, e-mail provider (MX/SPF/DMARC), hiring status with open job counts, languages, founded year, VAT ID and logo.

You pay per company, not per crawled page, and errors are free. No login, no API key, no AI tokens: every value comes from public sources (the company's own website, schema.org / JSON-LD, meta tags, public DNS, the sitemap and public job-board APIs). LinkedIn is never scraped and e-mails are never guessed.

What does Contact Details Scraper & Company Enrichment do?

For every domain you give it, the Actor:

  1. Checks DNS (MX, SPF, DMARC, NS, TXT). Dead domains become a free DOMAIN_NOT_FOUND row, and you see the e-mail provider (Google Workspace, Microsoft 365, Zoho ...), the sending tools (HubSpot, Mailchimp, SendGrid ...) and the DNS host.
  2. Reads the homepage and up to 5 key pages: contact, about, imprint / Impressum, careers. It finds them from the site's own links in 20+ languages and respects robots.txt.
  3. Extracts contacts: e-mails (including Cloudflare-obfuscated and name [at] domain [dot] com forms), tel: links and phone numbers near a phone label, normalised to E.164, plus 18 social networks.
  4. Extracts firmographics from schema.org Organization data, meta tags and page text: name, legal name, description, address, VAT ID, founded year, employees, logo and languages.
  5. Fingerprints ~150 technologies: CMS, e-commerce, analytics, tag managers, CDN, chat, CRM, marketing automation, frameworks, payments and more.
  6. Detects hiring: careers page, applicant tracking system (Greenhouse, Lever, Ashby, Workable, Personio, Recruitee and 20 more) and open job counts from their public APIs.

Who is it for?

  • Lead generation & cold outreach: turn a list of websites (for example from Google Maps, a directory or a trade-show list) into e-mails, phones and social links.
  • Sales & SDR teams: add the LinkedIn page, country and tech stack to every account before outreach.
  • RevOps / CRM admins: fill empty company fields in HubSpot, Salesforce or Pipedrive from the domain alone.
  • Marketers & agencies: segment accounts by technology (Shopify vs WooCommerce, HubSpot vs Marketo) or e-mail provider.
  • Investors & analysts: screen companies by hiring activity, founding year, languages and site size.

Why this Actor?

  • Per company, not per page. One flat price per enriched domain. Contact scrapers that bill per crawled page (plus extra per lead or per social profile) cost 3-10x more and are hard to predict.
  • Errors are free. Invalid, non-existent, parked, blocked and JavaScript-only domains come back as free error rows with a code and a hint. Duplicate domains in your list are enriched once and charged once.
  • More than contacts. Tech stack, e-mail provider, DMARC, hiring and open jobs, VAT ID, founded year and address come in the same row at no extra cost.
  • No junk e-mails. It drops image filenames (logo@2x.png), tracking addresses (sentry, wixpress), placeholders (example.com) and noreply@.
  • You choose the e-mail scope. By default only role mailboxes (info@, sales@, support@, press@, kontakt@ ...) are returned. Turn on Include named e-mails to also get addresses of named people that the company itself publishes (for example on a team or imprint page).
  • One row per company. A wide, stable schema that is ready for CSV/Excel or CRM import.
  • Fast and light. Around 4 pages per domain at 256 MB memory; 12 small-business sites took 7 seconds in our test.

How to use it

  1. Paste domains, website URLs or business e-mails into Domains or websites. Whole columns work; duplicates are removed.
  2. Optional: turn on Include named e-mails, or switch off DNS, sitemap or job counts for an even faster run.
  3. Click Start. Download the results as Excel, CSV or JSON, or open the Contacts, Tech & DNS or Hiring views.

Input example

{
"domains": ["plausible.io", "https://www.hetzner.com/en/", "info@zalando.de", "stumptowncoffee.com"],
"maxPagesPerDomain": 6,
"includePersonalEmails": false,
"includeDns": true,
"countOpenJobs": true
}
FieldDefaultWhat it does
domains-Domains, URLs or e-mails. Up to 10,000 per run. startUrls ([{"url": ...}]) is accepted too.
maxPagesPerDomain6Homepage plus key pages. The price doesn't change.
includePersonalEmailsfalseAlso return named e-mails published on the site in personalEmails.
includeDnstrueE-mail provider, SPF tools, DMARC, DNS host and verification records.
includeSitemaptrueSitemap URL count and newest lastmod.
countOpenJobstrueOpen positions from public Greenhouse, Lever, Ashby, Workable, Recruitee and Personio boards.
respectRobotsTxttrueSkip pages disallowed by robots.txt.
proxyConfigurationApify ProxyDatacenter is enough for most sites.
residentialFallbackfalseRetry a blocked site once via residential proxy (homepage + 2 pages).
maxConcurrency10Domains processed in parallel.
pageTimeoutSecs20Per-request timeout.

Output example

A real row from our test run on 2026-10-25, shortened:

{
"domain": "stumptowncoffee.com",
"status": "ok",
"companyName": "Stumptown Coffee Roasters",
"description": "Stumptown Coffee Roasters brings you fresh beans, cold brew, and good vibes. Order online, visit a shop, or subscribe for the long haul.",
"industry": "E-commerce & Retail",
"country": "US",
"address": "700 SW 5th Ave, 3rd Floor, #400, 97214 Portland, OR",
"phones": [
"+18557113385"
],
"emails": [
"jobs@stumptowncoffee.com",
"info@stumptowncoffee.com"
],
"personalEmails": null,
"otherEmailsSkipped": 0,
"contactUrl": "https://support.stumptowncoffee.com/hc/en-us/articles/17928599681933-Stumptown-Customer-Support",
"instagramUrl": "https://www.instagram.com/stumptowncoffee",
"facebookUrl": "https://www.facebook.com/stumptowncoffee",
"linkedinUrl": null,
"techStack": [
"Cloudflare",
"Contentful",
"Google Analytics",
"Google Fonts",
"Google Tag Manager",
"Shopify",
"Zendesk"
],
"emailProvider": "Google Workspace",
"dmarcPolicy": "none",
"isHiring": true,
"hiringSignal": "ats",
"careersUrl": "https://www.stumptowncoffee.com/pages/jobs",
"atsProvider": "Workday",
"openJobs": null,
"languages": [
"en"
],
"logoUrl": "https://customers.seomanager.com/knowledgegraph/logo/stumptowncoffee_myshopify_com_logo.png",
"sitemapUrlCount": null
}

Main fields

GroupFields
IdentitycompanyName, legalName, description, industry (+ confidence & source), logoUrl, faviconUrl, foundedYear, employees, vatId
Locationaddress, addressParts (street, postal code, city, region, country), country (ISO-2) + countrySource
Contactsemails (role mailboxes), personalEmails (named e-mails, opt-in), phones (E.164), contactUrl, aboutUrl
SociallinkedinUrl, xUrl, facebookUrl, instagramUrl, youtubeUrl, tiktokUrl, githubUrl, socialLinks (Xing, Crunchbase, Trustpilot, Discord ...)
Tech & DNStechStack, techCategories, emailProvider, mxRecords, emailServices, dmarcPolicy, dnsProvider, verifiedServices
HiringisHiring, hiringSignal, careersUrl, atsProvider, openJobs
Sitelanguages, title, keywords, schemaTypes, sitemapUrlCount, sitemapLastModified, pagesCrawled, httpStatus, redirectedTo, responseTimeMs
ErrorserrorCode, errorMessage, errorHint

The run summary (key-value store record OUTPUT) shows the fill rate of every field, the error codes and the charged events.

Fill rates in our tests

From tests on 2026-10-25 with real company websites (SaaS, restaurants, bakeries, retailers, law firms, hospitals) (30 domains, 8 countries):

FieldFilledFieldFilled
Company name100%YouTube67%
Description100%Tech stack100%
Industry97%E-mail provider100%
Country53%Hiring signal97%
Address47%Careers page77%
Phones33%Open job count20%
Role e-mails63%Languages100%
LinkedIn page53%Founded year47%
X / Twitter73%Logo90%
Facebook87%VAT ID20%
Instagram87%Sitemap size90%

These numbers reflect what companies publish. Many large US brands publish no e-mail or address at all, while EU sites usually have a complete imprint.

Error codes (all free)

CodeMeaning
INVALID_INPUTNot a domain / URL.
DUPLICATE_INPUTSame domain earlier in the list; it was enriched once.
DOMAIN_NOT_FOUNDThe domain doesn't exist (NXDOMAIN).
SITE_UNREACHABLEDNS exists but no website answers. DNS fields such as the e-mail provider are still filled.
PARKED_DOMAIN"This domain is for sale" pages.
BLOCKEDBot protection (or still blocked after the optional residential retry). DNS fields are still filled.
ROBOTS_DISALLOWEDrobots.txt forbids the homepage.
EMPTY_PAGEJavaScript-only site with no server-rendered content.
NOT_HTML, NETWORK_ERROR, TIMEOUT, BUDGET_LIMIT, INTERNAL_ERRORSee errorHint.

How much does it cost?

Pay per event. There is no start fee, and error rows are free:

EventPriceWhen
Company$0.004One domain enriched from its website (status: ok). Errors and duplicates are free.

1,000 enriched domains cost $4, whatever the size of each site and whether you want named e-mails or not. Set Maximum cost per run and the Actor stops cleanly at your budget.

Use it via API, Python, JavaScript or an AI agent

Every run is available through the Apify API. Start a run, wait for it to finish and read the dataset in a few lines of Python with the official apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("rs-automation-labs/contact-details-company-enrichment").call(run_input={
"domains": [
"apify.com",
"zalando.de",
"basecamp.com"
]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
  • JavaScript / cURL: the API tab on this page has ready-to-copy snippets with your token filled in.
  • Schedules and webhooks: run it daily or weekly with Apify Schedules and get notified with webhooks.
  • No-code: connect it to Make, Zapier, n8n, Google Sheets or Slack through Apify integrations.
  • AI agents: call it from Claude, ChatGPT, Cursor or any MCP client through the Apify MCP server.

FAQ

Do you scrape LinkedIn? No. The LinkedIn company page URL is taken from the company's own website, and LinkedIn itself is never requested.

Do you find personal e-mail addresses? Only if you turn on Include named e-mails, and only addresses the company itself publishes on its website. Patterns like first.last@ are never guessed. With the option off (default), only role mailboxes (info@, sales@, press@ ...) are returned, which keeps the data GDPR-friendly for B2B use.

What about sites behind a login or a cookie wall? Nothing behind a login is accessed. Cookie banners don't matter because the Actor reads the server-rendered HTML.

Why is a field empty? The company didn't publish it, or the site renders it only with JavaScript. The pagesCrawled field shows exactly what was read.

Do I need an API key, login or AI credits? No. It only reads public web pages and DNS.

Can I use it via API / Make / Zapier / n8n? Yes. It works like any Apify Actor: run it synchronously, then read the dataset.

Is it legal? It reads public business information that companies publish about themselves. You are responsible for how you use contact data, for example for marketing consent.

Limitations

  • No JavaScript rendering. Single-page apps still give meta tags, JSON-LD, DNS and tech, but often no contacts.
  • Geo or language redirects return the version the site serves to the proxy location. For example, razorpay.com served its US site.
  • industry is a keyword and schema.org heuristic, so treat it as a hint.
  • Very large or bot-protected sites (Amazon, Klarna, some marketplaces) may end as free BLOCKED / EMPTY_PAGE rows.

Other Actors by RS Automation Labs

ActorWhat it does
PageSpeed Insights Bulk CheckerBulk Lighthouse scores and real-user Core Web Vitals for many URLs or a sitemap
Video Transcript & AI SummaryTranscripts, subtitles and AI summaries for YouTube, TikTok, Reels, X and podcasts
AI PDF to JSON & Invoice OCRInvoices, receipts, bank statements and any PDF or scan to validated JSON, CSV and Excel
AI Search Visibility & GEO Rank TrackerWhether ChatGPT, Perplexity, Gemini, Claude, Grok and AI Overviews mention and cite your brand
Career Site Jobs ScraperEvery open job from company career sites and ATS boards (Greenhouse, Lever, Workday ...)

Support

Found a wrong value? Open an issue with the domain and the field. We fix extraction bugs quickly. Feature requests (new ATS, technologies, fields) are welcome.