Website Contact & Tech Stack Enricher avatar

Website Contact & Tech Stack Enricher

Pricing

from $3.00 / 1,000 website enricheds

Go to Apify Store
Website Contact & Tech Stack Enricher

Website Contact & Tech Stack Enricher

Turn company websites into lead-ready rows: ranked emails, E.164 phones, LinkedIn and social profiles, address, 260+ tech stack fingerprints, email provider from DNS, domain age and careers page. One row per website, no API keys.

Pricing

from $3.00 / 1,000 website enricheds

Rating

0.0

(0)

Developer

AIMindTeams

AIMindTeams

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Turn a list of company websites into lead-ready rows. Paste domains or URLs and get one clean row per company with everything a sales or research team needs to qualify it:

  • Emails, ranked so the best inbox (sales@, hello@, contact@, info@ or a named person on the company domain) comes first
  • Phone numbers in international E.164 format, validated per country
  • Social profiles: LinkedIn company page, X/Twitter, Facebook, Instagram, YouTube, TikTok, GitHub, Pinterest, Crunchbase
  • Company name and postal address from the site's structured data
  • Tech stack: 260+ technologies across CMS and site builders, ecommerce, analytics, ad pixels, marketing automation, CRM and sales tools, live chat, payments, hosting and frameworks
  • Email setup from DNS: mailbox provider (Google Workspace, Microsoft 365 ...), email-sending services (HubSpot, Salesforce, SendGrid ...) and verified SaaS tools
  • Domain age, registrar and expiry date from the official RDAP registry
  • Careers page and hiring system (Greenhouse, Lever, Ashby, Workday ...)

No API keys, no logins and no browser. Press Start to see three sample websites enriched in seconds.


Why this Actor exists

Most contact scrapers return one row per page and leave you to merge them. Tech-stack lookups, email-provider checks and domain-age checks usually live in separate paid tools. This Actor does all of it in one pass and returns one row per website, ready for a CRM import or a spreadsheet.

Typical contact scraperWebsite Contact & Tech Stack Enricher
Emails and phonesPer page, unrankedPer website, ranked, deduplicated
Cloudflare-protected emails and "name [at] domain [dot] com"Often missedDecoded
Phone validationRaw textE.164, validated per country
Social profilesSometimes9 networks, company page preferred
Tech stackNo260+ fingerprints
Email provider and sending tools (DNS)NoYes
Domain age and registrarNoYes
Careers page and hiring systemNoYes
BillingPer pagePer website

How it works

  1. Normalize every input (domain, URL, even an email address) and remove duplicates.
  2. Load the homepage (following redirects to the brand's real domain) and pick the most promising contact, imprint, about and team pages. If no contact page is linked, common paths like /contact are tried.
  3. Extract emails (including Cloudflare-obfuscated ones), phones, social links, schema.org company data and the careers page from each page.
  4. Fingerprint the tech stack from HTML, response headers, cookies and the generator tag.
  5. Query DNS-over-HTTPS for MX, SPF, DMARC and verification records, and RDAP for registration dates.
  6. Push one row per website and charge one event for it.

Websites that block automated visitors still return their DNS email setup and domain data at a much lower price, and domains that don't exist are never charged.


Quick start

  1. Paste your websites into Websites, one per line (domains or URLs both work).
  2. Press Start.
  3. Open the Overview tab for a spreadsheet-style table, or export CSV, Excel or JSON.

Example input:

{
"websites": ["acme.com", "https://www.example-store.com", "northwind-analytics.com/contact"],
"maxPagesPerSite": 4,
"companyEmailsOnly": false
}

Input

FieldTypeDefaultWhat it does
websitesarray of strings3 samplesDomains or URLs to enrich. Duplicates are removed.
maxPagesPerSiteinteger (1 to 10)4Homepage plus the best contact, imprint, about and team pages. Billing is per website, not per page.
companyEmailsOnlybooleanfalseKeep only addresses on the company's own domain.
detectTechnologiesbooleantrueFingerprint the tech stack.
checkDnsbooleantrueRead MX, SPF, DMARC and verification records.
lookupDomainAgebooleantrueRegistration and expiry dates from RDAP.
defaultCountrystringUSCountry used to read local phone numbers when the site doesn't reveal one.
maxConcurrencyinteger (1 to 20)5Websites processed in parallel.

Output

One dataset item per website. Shortened example:

{
"input": "northwind.co",
"domain": "northwind.co",
"url": "https://northwind-analytics.com/",
"status": "ok",
"company_name": "Northwind Analytics, Inc.",
"best_email": "sales@northwind-analytics.com",
"emails": [
{ "email": "sales@northwind-analytics.com", "type": "role", "is_company_domain": true, "source_url": "https://northwind-analytics.com/contact/" },
{ "email": "jane@northwind-analytics.com", "type": "personal", "is_company_domain": true, "source_url": "https://northwind-analytics.com/about-us" }
],
"best_phone": "+14155550132",
"phones": [
{ "number": "+14155550132", "national_format": "(415) 555-0132", "country": "US", "source": "tel-link", "source_url": "https://northwind-analytics.com/contact/" }
],
"social_profiles": {
"linkedin": "https://www.linkedin.com/company/northwind-analytics",
"twitter": "https://x.com/northwind",
"facebook": "https://www.facebook.com/northwindanalytics"
},
"address": { "street": "500 Howard St", "city": "San Francisco", "region": "CA", "postal_code": "94105", "country": "US" },
"tech_summary": {
"cms": ["WordPress"],
"analytics": ["Google Analytics"],
"marketing_automation": ["HubSpot"],
"live_chat": ["Intercom"],
"hosting_cdn": ["Cloudflare"]
},
"cms_platform": "WordPress",
"ecommerce_platform": null,
"dns": {
"email_provider": "Google Workspace",
"mx_records": ["aspmx.l.google.com", "alt1.aspmx.l.google.com"],
"spf_services": ["Google Workspace", "SendGrid"],
"verified_services": ["Google Search Console"],
"has_dmarc": true
},
"domain_info": { "registered_domain": "northwind-analytics.com", "created": "2015-03-02", "age_years": 11.6, "registrar": "Namecheap, Inc." },
"hiring": { "careers_url": "https://northwind-analytics.com/careers", "ats": "Lever", "ats_board_url": "https://jobs.lever.co/northwind" },
"pages_scanned": ["https://northwind-analytics.com/", "https://northwind-analytics.com/contact/", "https://northwind-analytics.com/about-us"],
"charged_event": "website-enriched",
"scanned_at": "2026-10-17T18:25:47Z"
}

Status values

statusMeaningCharged
okThe website loaded and was fully enriched.website-enriched
website-unreachableThe site was down or blocked automated visitors. DNS email setup and domain data are still returned.domain-checked (only if any data was found)
domain-not-foundThe domain has no DNS records (expired or mistyped).Free

Every run also writes a run summary to the OUTPUT record of the default Key-Value Store (counts, emails found, invalid inputs and warnings).


Pricing (Pay-Per-Event)

EventWhenPrice
website-enrichedA website loaded and was enrichedSee the Pricing tab
domain-checkedThe site was unreachable but DNS or domain data was returnedA fraction of the full price
  • You pay per website, never per page, DNS query or technology.
  • Domains that don't exist are free.
  • Your run's maximum charge is respected: the Actor checks the remaining budget before each website and stops cleanly when it runs out.

Use cases

  • Lead enrichment: turn a list of company domains from a trade-show list, directory or CRM export into emails, phones and LinkedIn pages.
  • Technographic targeting: find Shopify stores using Klaviyo, WordPress sites without analytics, or companies running HubSpot.
  • Email deliverability and IT research: who runs on Google Workspace vs. Microsoft 365, who has DMARC, who sends through SendGrid.
  • Agency prospecting: spot outdated stacks (old builders, no tag manager, no chat) and pitch upgrades.
  • Data hygiene: flag dead or expired domains before an outreach campaign.

Use it from AI agents (MCP)

Every input field has a default and a plain-language description, so AI agents can call this Actor without any setup.

Hosted Apify MCP server (Claude, ChatGPT, Cursor, VS Code and any client that supports remote MCP):

https://mcp.apify.com?tools=AIMindTeams/website-contact-tech-enricher

Local stdio server (for example, Claude Desktop claude_desktop_config.json):

{
"mcpServers": {
"website-enricher": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--tools", "AIMindTeams/website-contact-tech-enricher"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}

Example prompts:

  • "Enrich these 20 domains and give me the best email, phone and LinkedIn page for each."
  • "Which of these stores run Shopify and use Klaviyo for email?"
  • "Check whether these companies use Google Workspace or Microsoft 365."

Use it from code

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("AIMindTeams/website-contact-tech-enricher").call(
run_input={"websites": ["acme.com", "example-store.com"], "companyEmailsOnly": True}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["input"], item["best_email"], item["best_phone"], item["tech_summary"]["cms"], item["dns"]["email_provider"])

cURL (run and get the items in one call):

curl -X POST "https://api.apify.com/v2/acts/AIMindTeams~website-contact-tech-enricher/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"websites": ["acme.com"]}'

FAQ

Does it need a browser or proxies? No. It reads the HTML that websites send, which contains contacts, structured data and technology fingerprints for the vast majority of company sites. That keeps it fast and cheap.

What if a site blocks automated visitors? You still get the DNS email setup and domain registration data for that site, billed as the low-cost domain-checked event, and the status_reason says what happened.

How are emails ranked? Company-domain inboxes come first: sales@, hello@, contact@, info@ and similar, then named people on the company domain, then addresses on other domains. No-reply addresses are never chosen as the best email.

Does it guess or verify emails? It only returns addresses that are published on the website (including obfuscated ones it decodes). It does not guess patterns or send test emails.

How accurate is the tech stack? Each technology is matched on a product-specific asset host, global variable, header or cookie, and the evidence field says which one. A plain mention of a brand in page text never counts.

Is this legal? The Actor only reads publicly available pages and public DNS and registry data. You are responsible for using contact data in line with the laws that apply to you (for example GDPR and CAN-SPAM).


More from AIMindTeams


Changelog

  • 1.0: First release. Ranked emails, E.164 phones, 9 social networks, schema.org company data, 260+ technology fingerprints, DNS email setup, RDAP domain age and hiring-system detection.