Run Bulk Portfolio Audits From Python Without Writing Your Own Scoring Rules
If you already use Python, you don't need more complex DNS code. You need a batch endpoint that checks many domains in one run and returns structured results. Veldica gives you per-domain previews and a summary you can use directly in your own apps or reports.
This guide shows how to handle multiple domains in one pass and save the results for your team to use.
Overview
If you already use Python, you don't need more complex DNS code. You need a batch endpoint that checks many domains in one run and returns structured results. Veldica gives you per-domain previews and a summary you can use directly in your own apps or reports.
Perfect for nightly jobs where you have a long list of domains and want a fast, repeatable batch report instead of checking them one by one.
Our API gives you structured scores and summaries without forcing your code to figure out technical security rules on its own.
The results are structured to be used in your code right away. You can easily sort by score, risk level, or common errors.
Current workflow
This is the manual work many teams try to code in Python before they realize it's too complex to maintain.
- Get a list of domains from your database or a file.
- Write your own code to check DNS records for each one.
- Try to invent your own rules for what makes a 'good' or 'bad' score.
- Create your own way to group results and find common problems.
- Spend time updating your rules every time a technical standard changes.
Where it breaks
The hard part isn't the Python code; it's keeping your security rules accurate and up to date.
- Custom code has to guess at risk levels and technical gaps.
- Batch jobs get slow and messy if you try to get too much data in one run.
- You'll eventually need fix-plans or comparison tools that are costly to build from scratch.
- Your team needs concise summaries, not just a mountain of raw DNS text.
Replacement model
The clean Python model is to call the bulk API, save the summary, and only look closer at the domains with issues.
You have to manage every lookup and security rule yourself. Teams often miss things.
Send your whole list to Veldica and get back structured previews and a summary in seconds.
Use the results in Python to rank tasks, create tickets, or update your dashboards.
Only run a full Pro audit for the specific domains that the summary flags as high risk.
Verified request
This Python example uses the bulk endpoint to check several domains at the same time.
curl -H 'content-type: application/json' \
-H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
-H 'X-RapidAPI-Host: email-domain-trust-auditor.p.rapidapi.com' \
-X POST 'https://email-domain-trust-auditor.p.rapidapi.com/v1/pro/audits/domains' \
-d '{
"include_reports": false,
"domains": [
{"domain": "github.com"},
{"domain": "openai.com"},
{"domain": "whitehouse.gov"},
{"domain": "example.com"}
]
}'
Most teams test a single domain first, then move to bulk checks for their real workload.
Verified response
Stable fields your Python code can use to sort domains quickly.
{
"results": [
{
"domain": "github.com",
"success": true,
"audit_id": "6cd744bc-3b26-4579-9e52-669a3e7337b1",
"score": 70,
"grade": "B",
"risk_level": "medium"
},
{
"domain": "openai.com",
"success": true,
"audit_id": "3331cff4-5cc8-4d13-9fd4-3cbccfbedbab",
"score": 81,
"grade": "B",
"risk_level": "medium"
}
]
}
Grouped data for reporting or creating team tasks.
{
"summary": {
"total_domains": 4,
"success_count": 4,
"grade_counts": {
"B": 3,
"A+": 1
},
"prioritized_next_actions": [
"Improve SPF rules on 1 domain.",
"Check DKIM selector coverage for 3 domains."
]
}
}
Output interpretation
These results help you avoid extra coding work in Python.
- Use the
resultslist to sort your domains by their security score or risk level. - Use the
summarysection for high-level reports without needing to group the data yourself. - Use the
include_reports: Falseoption to keep your results fast and light. - Save the audit IDs so you can easily get a detailed fix-plan for any domain later.
Production Usage: Nightly Portfolio Check
This is how a typical team uses the Python requests library to check their domains.
- Get your list of domains from your database.
- Send the list to the bulk endpoint for a fast check.
- Save the scores and risk levels to your database or dashboard.
- Use the summary to update your team's progress reports.
- For domains with errors, use the Pro tools to get exact fix steps.
import requests
def run_bulk_audit(domains):
url = "https://email-domain-trust-auditor.p.rapidapi.com/v1/pro/audits/domains"
headers = {
"X-RapidAPI-Key": "YOUR_API_KEY",
"X-RapidAPI-Host": "email-domain-trust-auditor.p.rapidapi.com",
"Content-Type": "application/json"
}
payload = {
"include_reports": False,
"domains": [{"domain": d} for d in domains]
}
response = requests.post(url, json=payload, headers=headers, timeout=60)
response.raise_for_status()
return response.json()
# Usage
domain_list = ["github.com", "openai.com", "whitehouse.gov"]
batch_result = run_bulk_audit(domain_list)
for item in batch_result['results']:
print(f"Domain: {item['domain']}, Score: {item['score']}, Risk: {item['risk_level']}")
Tool comparison
Other ways to check domains exist, but they often require more manual work.
You own the rules and the scoring, but you have to update them yourself as rules change.
Fine for testing a single domain, but too slow for a large list.
The fastest way to sort and score a large portfolio with consistent results.
Keep Exploring
Use the Workflow Library to browse more guides, comparisons, and integration examples to continue your evaluation.
See the solutions, comparisons, and integration guides collected in one place.
Review grounded audit, compare, fix-plan, and report excerpts before you wire the API into anything.
Jump from the workflow page into the quickstart, endpoint guides, and full OpenAPI reference.
Check one domain for free, then point your Python code at our bulk API
It's the fastest way to build a real security check into your apps without writing the complex logic yourself.