🛡️ Bulk Email DNS Scraper
Pricing
from $9.00 / 1,000 results
🛡️ Bulk Email DNS Scraper
Scrape domain DNS data to extract SPF, DKIM, DMARC, and BIMI records. Generate structured deliverability readiness reports for client portfolios.
Pricing
from $9.00 / 1,000 results
Rating
0.0
(0)
Developer
太郎 山田
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Email Deliverability Portfolio Audit API
Audit email deliverability configurations at scale to ensure your outreach actually reaches the inbox. For marketing agencies, IT professionals, and data teams managing massive domain portfolios, manually verifying DNS infrastructure across hundreds of client domains is virtually impossible. This automation tool allows you to run bulk checks for SPF, DKIM, DMARC, MTA-STS, TLS-RPT, and BIMI setups across thousands of urls without building a custom script from scratch.
Protecting your sender reputation means catching misconfigurations before they impact critical business communications. By scheduling recurring daily or weekly runs, your team can track changes in domain health, monitor infrastructure drift over time, and immediately route failures to a webhook remediation queue. Whether you are prepping a cold lead contact list or auditing enterprise portfolios, this checker processes results in highly parallel batches for maximum speed.
The tool relies strictly on public DNS queries rather than web scraping private pages, ensuring complete privacy compliance while you extract vital security details. Output includes structured, developer-friendly JSON data featuring a high-level executive_summary object and detailed remediation_steps. Key fields provided for each domain include mx_record_details, dmarc_policy_status, and strict alignment metrics to help you resolve failures instantly.
Store Quickstart
- Start with
store-input.example.jsonfor the smallest useful run: 2 domains in, one executive summary + clean remediation rows out. - Then move to
store-input.templates.json:Starter Quickstart (2 Domains -> Executive Summary + Clean Rows)Portfolio Watch (Recurring Dataset Baseline)Webhook Remediation Queue
Key Features
- 🎯 Lead-qualified extraction — Surfaces contact signals from public profiles with validation flags
- ✅ Deliverability scoring — MX/SPF/DMARC checks produce confidence scores on every record
- 🔄 Bulk processing — Audit thousands of domains/emails per run with parallel verification
- 📊 CRM-ready output — Dataset columns map 1:1 to Salesforce/HubSpot import templates
- 🛡️ Privacy-compliant — Reads public DNS/WHOIS only — no scraping of protected data
Use Cases
| Who | Why |
|---|---|
| Developers | Automate recurring data fetches without building custom scrapers |
| Data teams | Pipe structured output into analytics warehouses |
| Ops teams | Monitor changes via webhook alerts |
| Product managers | Track competitor/market signals without engineering time |
Input
| Field | Type | Default | Description |
|---|---|---|---|
| domains | array | prefilled | Start with 2-3 domains for the first deliverability baseline. Expand later into larger recurring portfolios while keepin |
| followRedirects | boolean | true | Follow redirects when checking the main HTTPS endpoint and the MTA-STS policy URL. |
| checkDkim | boolean | true | Probe a small set of common selectors so the first run catches missing DKIM posture quickly. |
| dkimSelectors | array | — | Optional custom DKIM selectors to probe instead of the built-in defaults. |
| checkBimi | boolean | true | Optional branding readiness check. Missing BIMI is treated as an opportunity signal, not a hard failure. |
| delivery | string | "dataset" | Dataset mode keeps the first run lightweight while still writing the full executive summary to OUTPUT. Webhook mode send |
| webhookUrl | string | — | Required when delivery=webhook. |
| snapshotKey | string | "email-deliverability-portfolio-audit" | Reuse the same key when you move from the starter baseline to recurring monitoring so policy changes stay comparable. |
Input Example
{"domains": ["example.com", "github.com"],"followRedirects": true,"checkDkim": true,"checkBimi": true,"delivery": "dataset","snapshotKey": "email-deliverability-quickstart","concurrency": 2}
Output
| Field | Type | Description |
|---|---|---|
meta | object | |
alerts | array | |
results | array | |
alerts[].domain | string | |
alerts[].severity | string | |
alerts[].component | string | |
alerts[].type | string | |
alerts[].message | string |
Output Example
{"meta": {"generatedAt": "2026-04-05T04:40:22.011Z","totals": {"total": 3,"initial": 3,"ok": 0,"changed": 0,"partial": 0,"errors": 0,"actionNeeded": 3},"severityCounts": {"critical": 0,"high": 0,"watch": 3,"info": 0},"averageDeliverabilityScore": 69,"alertCount": 12,"executiveSummary": {"overallStatus": "monitor","brief": "3 of 3 domains need action. Highest-risk issue: No MX records found.","recommendedCadence": "weekly","averageDeliverabilityScore": 69,"totals": {"total": 3,"initial": 3,"ok": 0,"changed": 0,"partial": 0,"errors": 0,"actionNeeded": 3},"severityCounts": {"critical": 0,"high": 0,"watch": 3,"info": 0},
API Usage
Run this actor programmatically using the Apify API. Replace YOUR_API_TOKEN with your token from Apify Console → Settings → Integrations.
cURL
curl -X POST "https://api.apify.com/v2/acts/taroyamada~email-deliverability-portfolio-audit/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{ "domains": ["example.com", "github.com"], "followRedirects": true, "checkDkim": true, "checkBimi": true, "delivery": "dataset", "snapshotKey": "email-deliverability-quickstart", "concurrency": 2 }'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("taroyamada/email-deliverability-portfolio-audit").call(run_input={"domains": ["example.com", "github.com"],"followRedirects": true,"checkDkim": true,"checkBimi": true,"delivery": "dataset","snapshotKey": "email-deliverability-quickstart","concurrency": 2})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('taroyamada/email-deliverability-portfolio-audit').call({"domains": ["example.com", "github.com"],"followRedirects": true,"checkDkim": true,"checkBimi": true,"delivery": "dataset","snapshotKey": "email-deliverability-quickstart","concurrency": 2});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Tips & Limitations
- Combine with
email-deliverability-checkerfor full MX+SMTP validation before outreach. - Use webhook delivery to drop leads into your CRM automation in real-time.
- For ABM campaigns, run weekly against your target list to catch domain changes.
- Low confidence scores (<70) often indicate parked domains — filter before sending outreach.
- This actor is GDPR-safe: no PII is stored, only infrastructure-level signals.
FAQ
Is this GDPR-compliant?
Yes — this actor only processes public infrastructure data (DNS, WHOIS, public website content). No PII is stored.
How accurate is the deliverability score?
Infrastructure-level checks are 95%+ accurate for identifying broken/parked domains. SMTP-level accuracy requires email-deliverability-checker.
Can I use this in a signup form?
The actor is optimized for batch processing, not real-time signup validation. For per-request use, query Apify API directly.
Does this verify if an email actually exists?
This actor checks MX/SPF/DMARC infrastructure. For SMTP-level RCPT TO verification, use email-deliverability-checker.
Can I export to HubSpot/Salesforce?
Yes — use webhook delivery with a Zapier/Make connector, or pull from Dataset API directly.
Related Actors
Lead Generation & B2B cluster — explore related Apify tools:
- 📧 Contact Details Extractor — Extract emails, phone numbers, and social media links from any webpage.
- 📩 Email Validator — Validate email addresses in bulk: syntax, DNS MX lookup, disposable domain detection, deliverability score.
- 📞 Phone Number Validator — Validate and format phone numbers for 250+ countries using google-libphonenumber.
Cost
Pay Per Event:
actor-start: $0.01 (flat fee per run)dataset-item: $0.003 per output item
Example: 1,000 items = $0.01 + (1,000 × $0.003) = $3.01
No subscription required — you only pay for what you use.
⭐ Was this helpful?
If this actor saved you time, please leave a ★ rating on Apify Store. It takes 10 seconds, helps other developers discover it, and keeps updates free.
Bug report or feature request? Open an issue on the Issues tab of this actor.