Website Tech Stack Detector + DMARC, SPF, MX & SSL Checker
Pricing
$2.00 / 1,000 domain profileds
Website Tech Stack Detector + DMARC, SPF, MX & SSL Checker
Technology lookup for any list of domains, a BuiltWith/Wappalyzer-style tech stack detector: 3,500+ technologies (CMS, ecommerce, frameworks, analytics, CDN), email provider from MX records, SPF, DMARC and DKIM checks, SSL certificate expiry, llms.txt and security headers. One row per domain.
Pricing
$2.00 / 1,000 domain profileds
Rating
0.0
(0)
Developer
HireWatch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
A fast tech stack detector and technology lookup for any list of websites, plus email and domain checks in the same run: email provider from MX records, SPF / DMARC / DKIM validation and SSL certificate expiry. Use it as an affordable BuiltWith or Wappalyzer alternative for lead lists and domain audits.
Independent tool: not affiliated with or endorsed by BuiltWith or Wappalyzer. Names are used only to describe similar functionality.
Paste a list of domains and get one clean row per domain:
- 🧩 Technologies: CMS, ecommerce platform, JS and web frameworks, analytics and tag managers, CDN and hosting, payments, live chat, marketing tools and 3,500+ more, with versions where the site exposes them.
- 📧 E-mail provider: Google Workspace, Microsoft 365, Zoho, Proton and others, read from MX records. Security gateways such as Proofpoint, Mimecast and Cisco are reported too, along with the mailbox behind them when SPF reveals it.
- 🔐 E-mail security: SPF (record,
-all/~all, recursive DNS-lookup count vs the limit of 10, sending services), DMARC (policy, subdomain policy, pct, reporting service), DKIM keys on ~35 common selectors (with key size), MTA-STS, TLS-RPT and BIMI. - 🔒 SSL/TLS: issuer, validity dates, days until expiry, hostname coverage, chain verification, TLS version and key type.
- 🤖 robots.txt, sitemap and llms.txt: whether each exists, which AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot…) are blocked, the sitemap type and URL count, and the llms.txt title and link count.
- 🌐 HTTP basics: status, redirects, final URL, server, response time, HTTP/3, HSTS, security headers, and whether HTTP redirects to HTTPS.
- 🧾 DNS: DNS host (Cloudflare, Route 53…), CAA, IPs, and SaaS tools revealed by TXT verification records (Atlassian, DocuSign, Zoom, OpenAI, HubSpot, Stripe…).
- ✅ Plain-language findings: e.g. "No DMARC record", "SPF needs 13 DNS lookups (limit 10)", "TLS certificate expires in 9 days", "No HSTS header".
Who it's for
- Sales and lead generation: qualify accounts by stack ("uses Shopify + Klaviyo", "on Microsoft 365 behind Proofpoint", "WordPress sites without DMARC").
- Agencies and MSPs: e-mail deliverability, security and SSL-expiry audits across many client or prospect domains in one run.
- SEO and AI visibility: robots.txt, sitemap and llms.txt status, and which AI crawlers a site blocks.
- Market research: technology adoption across a list of companies or competitors.
Input
| Field | What it does |
|---|---|
domains | Domains or URLs, one per line. stripe.com, https://www.example.com/page and info@example.com all work (only the domain is used). |
detectTechnologies, checkEmailDns, checkDkim, checkSsl, checkSiteFiles, checkHttpsRedirect | Turn individual checks on or off (all on by default). |
dkimSelectors | Extra DKIM selectors to test. |
minTechConfidence | Hide weaker technology matches (0–100). |
maxConcurrency | Domains processed in parallel (default 10). |
{ "domains": ["apify.com", "stripe.com", "shopify.com"] }
Output
One dataset item per domain. The table views are Overview, Technologies, E-mail & DNS and Audit findings, and you can export to CSV, Excel or JSON. A shortened example from a real run:
{"domain": "apify.com","status": "ok","finalUrl": "https://apify.com/","httpStatus": 200,"title": "Apify: Marketplace of ready-to-run tools for AI","hostingCdn": "Amazon Cloudfront, Amazon S3, Amazon Web Services","emailProvider": "Google Workspace","spfAll": "-all","dmarcPolicy": "reject","dkimFound": true,"sslIssuer": "Amazon","sslDaysLeft": 100,"hasRobotsTxt": true,"hasSitemap": true,"hasLlmsTxt": true,"technologyNames": ["Algolia", "Amazon Cloudfront", "HubSpot", "Mixpanel", "React", "styled-components", "..."],"technologies": [{ "name": "Algolia", "categories": ["Search engines"], "version": null, "confidence": 100 }],"email": {"provider": "Google Workspace","sendingServices": ["Google Workspace", "Mailgun", "Amazon SES", "HubSpot"],"spf": { "allQualifier": "-all", "dnsLookups": 10, "tooManyLookups": false },"dmarc": { "policy": "reject", "subdomainPolicy": "reject", "record": "v=DMARC1; p=reject; sp=reject; pct=100; rua=mailto:***@apify.com" },"dkim": { "found": [{ "selector": "google", "keyBits": 2048 }, { "selector": "pic", "likelySender": "Mailgun", "keyBits": 1024 }] }},"dns": { "dnsProvider": "Amazon Route 53", "verifiedServices": ["OpenAI", "Google Search Console"] },"robotsTxt": { "found": true, "aiCrawlersBlocked": [], "sitemaps": ["https://apify.com/sitemap.xml"] },"llmsTxt": { "found": true, "title": "Apify", "linkCount": 73 },"issues": []}
status takes one of these values:
ok: the full profile.partial: the website was unreachable, returned an error, or robots.txt disallowed it. DNS, e-mail and SSL data are still returned.domain_not_found: the domain does not exist. Not charged.invalid_input: the input could not be read as a domain. Not charged.
The RUN_REPORT record in the key-value store lists the status of every input.
Pricing
Pay per event: $0.002 per domain profiled ($2 per 1,000 domains). There is no extra charge for the extra checks; everything above is included. You are not charged for invalid inputs, duplicates, or domains that don't exist. Set a maximum cost per run and the Actor stops cleanly when it reaches it.
How it works, and why it's polite
- It requests only the public homepage,
/robots.txt, the sitemap (the first one listed in robots.txt, or/sitemap.xml),/llms.txt, and one request tohttp://to check the HTTPS redirect, whose body is not downloaded. It never crawls deeper pages. - robots.txt is checked before every request, including each redirect hop (RFC 9309). If robots.txt disallows the homepage, the page is skipped and the domain is reported as
partial. - At most one request per second per website, an honest User-Agent (
HireWatchSiteProfiler), and size limits on every download. - DNS and TLS facts come from public DNS and a normal TLS handshake.
- No personal data is collected. Page text, e-mail addresses and phone numbers are never output, and the mailbox part of DMARC report addresses is masked (
***@domain). No WHOIS or registrant data is collected.
Limits and accuracy
- Technology detection reads the homepage HTML, headers, cookies, script URLs, meta tags, DOM, DNS and the certificate. It does not run JavaScript in a browser, so tools that only appear after client-side scripts run can be missed. This keeps it fast and cheap.
- DNS cannot list DKIM selectors, so only common selectors are checked. "Not found" therefore does not prove that DKIM is missing.
- Sites behind aggressive bot protection may return 403. You still get DNS, e-mail, SSL and robots data, and the CDN/WAF is usually detected from the response headers.
Use with AI agents / MCP
This Actor is built to be called by AI agents (Grok Bot, Claude, ChatGPT, Cursor, LangChain and others) through the Apify MCP server or the Apify API.
- Add only this tool:
https://mcp.apify.com?tools=hirewatch/tech-stack-domain-profiler. You can also let your agent find it throughsearch-actors. - Keep calls small so they finish fast. The MCP
call-actortool waits up to 45 seconds, and a run with 3 domains takes about 20 seconds, so send up to ~10 domains per call. For bigger lists, start the run and read the results when it finishes. Turn off checks you don't need (e.g.checkDkim: false) to speed things up, and cap spend withmaxTotalChargeUsdincallOptions. - Read results with
get-dataset-itemsusing the run'sdatasetId. You get one flat row per domain with astatusfield (ok,partial,domain_not_foundorinvalid_input). A bad domain never fails the whole run, and domains that don't exist or can't be read are not charged. - Pay without an Apify account. The Actor uses pay-per-event pricing with limited permissions, so agents can pay per run with agentic payments (x402 / MPP prepaid tokens or Skyfire).
Minimal agent call:
{"domains": ["stripe.com", "shopify.com"],"checkDkim": false}
Attribution and licences
Technology fingerprints come from Wappalyzer (npm wappalyzer@6.10.54), © Elbert Alias / Wappalyzer, used under the MIT License. 6.10.54 is the last MIT-licensed release; later Wappalyzer versions and community forks are GPL-3.0 and are not used. The full licence text ships with the Actor in src/data/LICENSE-fingerprints.txt. This Actor is not affiliated with or endorsed by Wappalyzer or BuiltWith.
Related
- Workday, Greenhouse, Lever, Ashby & Oracle Jobs Scraper: open jobs, new/closed tracking and hiring signals from company career sites on five platforms.
- Workday Jobs Scraper: every job from Workday career sites, including sites with more than 2,000 jobs.
- Greenhouse Jobs Scraper: Greenhouse job boards by company name, with salary ranges.
- Lever Jobs Scraper and Ashby Jobs Scraper: Lever and Ashby job boards by company name, with salaries.
Questions or a missing technology, e-mail provider or check? Open an issue on the Actor's Issues tab.