Contact Details Scraper & Company Enrichment from Domain
Pricing
$4.00 / 1,000 companies
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
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:
- Checks DNS (MX, SPF, DMARC, NS, TXT). Dead domains become a free
DOMAIN_NOT_FOUNDrow, and you see the e-mail provider (Google Workspace, Microsoft 365, Zoho ...), the sending tools (HubSpot, Mailchimp, SendGrid ...) and the DNS host. - 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. - Extracts contacts: e-mails (including Cloudflare-obfuscated and
name [at] domain [dot] comforms),tel:links and phone numbers near a phone label, normalised to E.164, plus 18 social networks. - 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.
- Fingerprints ~150 technologies: CMS, e-commerce, analytics, tag managers, CDN, chat, CRM, marketing automation, frameworks, payments and more.
- 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) andnoreply@. - 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
- Paste domains, website URLs or business e-mails into Domains or websites. Whole columns work; duplicates are removed.
- Optional: turn on Include named e-mails, or switch off DNS, sitemap or job counts for an even faster run.
- 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}
| Field | Default | What it does |
|---|---|---|
domains | - | Domains, URLs or e-mails. Up to 10,000 per run. startUrls ([{"url": ...}]) is accepted too. |
maxPagesPerDomain | 6 | Homepage plus key pages. The price doesn't change. |
includePersonalEmails | false | Also return named e-mails published on the site in personalEmails. |
includeDns | true | E-mail provider, SPF tools, DMARC, DNS host and verification records. |
includeSitemap | true | Sitemap URL count and newest lastmod. |
countOpenJobs | true | Open positions from public Greenhouse, Lever, Ashby, Workable, Recruitee and Personio boards. |
respectRobotsTxt | true | Skip pages disallowed by robots.txt. |
proxyConfiguration | Apify Proxy | Datacenter is enough for most sites. |
residentialFallback | false | Retry a blocked site once via residential proxy (homepage + 2 pages). |
maxConcurrency | 10 | Domains processed in parallel. |
pageTimeoutSecs | 20 | Per-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
| Group | Fields |
|---|---|
| Identity | companyName, legalName, description, industry (+ confidence & source), logoUrl, faviconUrl, foundedYear, employees, vatId |
| Location | address, addressParts (street, postal code, city, region, country), country (ISO-2) + countrySource |
| Contacts | emails (role mailboxes), personalEmails (named e-mails, opt-in), phones (E.164), contactUrl, aboutUrl |
| Social | linkedinUrl, xUrl, facebookUrl, instagramUrl, youtubeUrl, tiktokUrl, githubUrl, socialLinks (Xing, Crunchbase, Trustpilot, Discord ...) |
| Tech & DNS | techStack, techCategories, emailProvider, mxRecords, emailServices, dmarcPolicy, dnsProvider, verifiedServices |
| Hiring | isHiring, hiringSignal, careersUrl, atsProvider, openJobs |
| Site | languages, title, keywords, schemaTypes, sitemapUrlCount, sitemapLastModified, pagesCrawled, httpStatus, redirectedTo, responseTimeMs |
| Errors | errorCode, 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):
| Field | Filled | Field | Filled |
|---|---|---|---|
| Company name | 100% | YouTube | 67% |
| Description | 100% | Tech stack | 100% |
| Industry | 97% | E-mail provider | 100% |
| Country | 53% | Hiring signal | 97% |
| Address | 47% | Careers page | 77% |
| Phones | 33% | Open job count | 20% |
| Role e-mails | 63% | Languages | 100% |
| LinkedIn page | 53% | Founded year | 47% |
| X / Twitter | 73% | Logo | 90% |
| 87% | VAT ID | 20% | |
| 87% | Sitemap size | 90% |
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)
| Code | Meaning |
|---|---|
INVALID_INPUT | Not a domain / URL. |
DUPLICATE_INPUT | Same domain earlier in the list; it was enriched once. |
DOMAIN_NOT_FOUND | The domain doesn't exist (NXDOMAIN). |
SITE_UNREACHABLE | DNS exists but no website answers. DNS fields such as the e-mail provider are still filled. |
PARKED_DOMAIN | "This domain is for sale" pages. |
BLOCKED | Bot protection (or still blocked after the optional residential retry). DNS fields are still filled. |
ROBOTS_DISALLOWED | robots.txt forbids the homepage. |
EMPTY_PAGE | JavaScript-only site with no server-rendered content. |
NOT_HTML, NETWORK_ERROR, TIMEOUT, BUDGET_LIMIT, INTERNAL_ERROR | See errorHint. |
How much does it cost?
Pay per event. There is no start fee, and error rows are free:
| Event | Price | When |
|---|---|---|
| Company | $0.004 | One 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 ApifyClientclient = 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.
industryis 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_PAGErows.
Other Actors by RS Automation Labs
| Actor | What it does |
|---|---|
| PageSpeed Insights Bulk Checker | Bulk Lighthouse scores and real-user Core Web Vitals for many URLs or a sitemap |
| Video Transcript & AI Summary | Transcripts, subtitles and AI summaries for YouTube, TikTok, Reels, X and podcasts |
| AI PDF to JSON & Invoice OCR | Invoices, receipts, bank statements and any PDF or scan to validated JSON, CSV and Excel |
| AI Search Visibility & GEO Rank Tracker | Whether ChatGPT, Perplexity, Gemini, Claude, Grok and AI Overviews mention and cite your brand |
| Career Site Jobs Scraper | Every 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.