Overview

SpiderVerify validates email addresses at the SMTP level to determine if they’re deliverable - without sending actual emails. This protects your sender reputation and helps clean your lead lists before outreach.

Single Verification

Verify one email at a time for real-time validation

Bulk Verification

Verify up to 100 emails per request for list cleaning

How SMTP Verification Works

SpiderVerify performs the same steps an email server would, stopping just before actually sending:
  1. DNS Lookup - Find MX (mail exchange) records for the domain
  2. SMTP Connect - Open connection to the mail server
  3. EHLO Handshake - Identify as a legitimate mail sender
  4. MAIL FROM - Specify the sender address
  5. RCPT TO - Ask if the recipient exists
  6. Analyze Response - Determine deliverability from server response
No email is ever sent. SpiderVerify closes the connection before the DATA stage.

Quick Start

Verify a Single Email

curl -X POST https://spideriq.di-atomic.com/api/v1/jobs/spiderVerify/submit \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your_credentials>" \
  -d '{
    "payload": {
      "email": "john@example.com"
    }
  }'

Verify Multiple Emails

curl -X POST https://spideriq.di-atomic.com/api/v1/jobs/spiderVerify/submit \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your_credentials>" \
  -d '{
    "payload": {
      "emails": [
        "john@example.com",
        "jane@company.com",
        "info@business.org"
      ]
    }
  }'

Understanding Results

Status Values

StatusMeaningAction
validEmail exists and can receive messagesSafe to email
invalidEmail doesn’t exist or is blockedDo not email
riskyEmail may work but has risk factorsUse caution
unknownCouldn’t determine statusRetry or skip

Quality Scores

SpiderVerify provides a 0-100 quality score:
ScoreRatingRecommendation
90-100ExcellentHigh priority for outreach
70-89GoodSafe for campaigns
50-69FairConsider for large campaigns only
25-49PoorSkip or verify manually
0-24BadDo not use

Detection Flags

SpiderVerify detects several types of email addresses:
Temporary email services like Mailinator, 10MinuteMail, etc. These emails are typically used to bypass signup requirements and have very short lifespans.Flag: is_disposable: true Recommendation: Do not include in campaigns
Generic addresses like info@, support@, sales@, admin@. These go to shared inboxes, not individuals.Flag: is_role_account: true Recommendation: Lower priority, may still be useful for company outreach
Domains configured to accept any email address. The server can’t confirm if the specific mailbox exists.Flag: is_catch_all: true Recommendation: May bounce, use with caution
Gmail, Yahoo, Outlook, etc. May be personal rather than business emails.Flag: is_free: true Recommendation: Valid for B2C, less ideal for B2B

Complete Workflow

Here’s how to verify emails extracted from SpiderSite:
1

Scrape Website

Use SpiderSite to extract emails from a target website:
site_response = requests.post(
    "https://spideriq.di-atomic.com/api/v1/jobs/spiderSite/submit",
    headers=headers,
    json={
        "payload": {
            "url": "https://example.com",
            "max_pages": 10
        }
    }
)
site_job_id = site_response.json()["job_id"]
2

Wait for Results

Poll until the SpiderSite job completes:
import time

while True:
    result = requests.get(
        f"https://spideriq.di-atomic.com/api/v1/jobs/{site_job_id}/results",
        headers=headers
    )
    if result.status_code == 200:
        emails = result.json()["data"]["emails"]
        break
    time.sleep(5)
3

Verify Emails

Submit extracted emails for verification:
verify_response = requests.post(
    "https://spideriq.di-atomic.com/api/v1/jobs/spiderVerify/submit",
    headers=headers,
    json={
        "payload": {
            "emails": emails[:100]  # Max 100 per request
        }
    }
)
verify_job_id = verify_response.json()["job_id"]
4

Filter Results

Keep only valid, high-quality emails:
while True:
    result = requests.get(
        f"https://spideriq.di-atomic.com/api/v1/jobs/{verify_job_id}/results",
        headers=headers
    )
    if result.status_code == 200:
        verified = result.json()["data"]["results"]
        valid_emails = [
            e["email"] for e in verified
            if e["status"] == "valid"
            and e["quality_score"] >= 70
            and not e.get("is_disposable")
        ]
        break
    time.sleep(5)

Best Practices

Do

  • Verify before outreach - Clean your lists to improve deliverability
  • Filter disposable emails - They have no long-term value
  • Prioritize high scores - Focus on 70+ quality scores
  • Use bulk verification - More efficient for large lists

Don’t

  • Don’t email invalids - Damages sender reputation
  • Don’t ignore catch-all warnings - May still bounce
  • Don’t verify too frequently - Respect rate limits
  • Don’t skip role accounts entirely - info@ can still be valuable

Rate Limiting

SpiderVerify includes built-in rate limiting to protect sender reputation:
  • 3 seconds between verifications per VPS
  • 50 warmed emails rotated across 10 VPS
  • Email rotation prevents any single address from being overused
SpiderVerify rate limits are enforced automatically. Submitting too many jobs won’t speed up processing - jobs are queued and processed at a sustainable rate.

Next Steps