A developer-focused comparison of 9 email finder APIs (Tomba, Hunter, Snov.io, GetProspect, Anymailfinder, Skrapp, VoilaNorbert, Prospeo, Findymail): base URLs, auth schemes, HTTP methods, endpoint coverage, official SDKs, and free tiers — every field linked to the vendor's own docs. Open CSV data + a zero-dependency Python script.
Different from email-finder-comparison. That repo benchmarks accuracy (5,000 real searches, who returns the most valid emails). This repo compares the APIs as developer products — how you authenticate, what endpoints exist, which SDKs ship, and what you get for free. If you're choosing an email API to build on, start here; if you're choosing one for data quality, start there.
- Auth is not standardized. Five different schemes across nine APIs: two static headers (Tomba), a single API key in a header or query param (Hunter), OAuth2 with a 1-hour token (Snov.io), HTTP Basic (VoilaNorbert), and a Bearer token (Findymail). Plan your client accordingly.
- GET vs POST splits the field. Tomba and Hunter are GET-first (trivial to
curl); Prospeo and Findymail are POST-only with JSON bodies. - Endpoint breadth varies widely. Tomba exposes the widest documented surface in this set (domain search, finder, verifier, enrichment, author finder, phone, bulk). Most others cover the core three (domain search / finder / verifier) plus bulk.
- Everyone has a free tier, none needs a credit card to start.
| Tool | Auth scheme | Credential location | HTTP methods |
|---|---|---|---|
| Tomba | API key + secret | X-Tomba-Key & X-Tomba-Secret headers |
GET |
| Hunter | API key | api_key query param / X-API-KEY / Bearer |
GET |
| Snov.io | OAuth2 (client credentials) | Authorization: Bearer <token> (expires 3600s) |
GET/POST |
| GetProspect | API key | API key header | GET/POST |
| Anymailfinder | API key | Authorization: <key> header |
POST |
| Skrapp.io | API key | X-Access-Key header |
GET/POST |
| VoilaNorbert | Basic auth | API_TOKEN via HTTP Basic |
GET/POST |
| Prospeo | API key | X-KEY header |
POST (JSON only) |
| Findymail | Bearer token | Authorization: Bearer <key> |
POST |
| Tool | Domain search | Email finder | Verifier | Enrichment | Author | Phone | Bulk |
|---|---|---|---|---|---|---|---|
| Tomba | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Hunter | ✅ | ✅ | ✅ | ✅ | — | — | ✅ |
| Snov.io | ✅ | ✅ | ✅ | ✅ | — | — | ✅ |
| GetProspect | ✅ | ✅ | ✅ | ✅ | — | — | ✅ |
| Anymailfinder | ✅ | ✅ | ✅ | — | — | — | ✅ |
| Skrapp.io | ✅ | ✅ | — | ✅ | — | — | ✅ |
| VoilaNorbert | — | ✅ | ✅ | — | — | — | ✅ |
| Prospeo | ✅ | ✅ | ✅ | ✅ | — | ✅ | — |
| Findymail | ✅ | ✅ | ✅ | — | — | — | — |
A
—means "not documented among the sources cited below," not "definitely absent." Vendors ship and rename endpoints often; treat this as a starting map and confirm against the linked docs before you build. Seesheets/sources.csvfor every source URL.
| Tool | Free on signup | Card required | Official SDKs |
|---|---|---|---|
| Tomba | 75 credits + 25 searches/mo + 50 verifications | no | 10 (PHP, Python, Go, Java, Ruby, JS, Laravel, Django, Rails, …) |
| Hunter | free plan (limited searches/mo) | no | official (Python, Ruby, PHP, …) |
| Snov.io | trial access on request | no | community |
| GetProspect | 50 free emails | no | — |
| Anymailfinder | pay-per-valid (free if not found) | no | — |
| Skrapp.io | free plan | no | — |
| VoilaNorbert | 50 free verified emails | no | Node.js, PHP, Python, Ruby |
| Prospeo | free credits | no | — |
| Findymail | free signup credits | no | — |
The examples/curl/ scripts call three Tomba endpoints and the
committed *.output.json files are the real responses (captured 2026-06-04):
# 1) Domain search — every email behind a domain
curl -sG 'https://api.tomba.io/v1/domain-search' \
--data-urlencode 'domain=stripe.com' --data-urlencode 'limit=5' \
-H "X-Tomba-Key: $TOMBA_KEY" -H "X-Tomba-Secret: $TOMBA_SECRET"
# 2) Email finder — most likely address from a name + domain
curl -sG 'https://api.tomba.io/v1/email-finder' \
--data-urlencode 'domain=stripe.com' \
--data-urlencode 'first_name=Patrick' --data-urlencode 'last_name=Collison' \
-H "X-Tomba-Key: $TOMBA_KEY" -H "X-Tomba-Secret: $TOMBA_SECRET"
# → {"data": {"email": "patrick@stripe.com", "score": 99, ...}} (real captured result)
# 3) Email verifier — deliverability of one address
curl -sG 'https://api.tomba.io/v1/email-verifier/info@stripe.com' \
-H "X-Tomba-Key: $TOMBA_KEY" -H "X-Tomba-Secret: $TOMBA_SECRET"Get a free key (no card) at app.tomba.io/auth/register.
No dependencies, no API key — the sheets/ CSVs are the source of truth:
python3 compare.py # all four tables
python3 compare.py endpoints # one table
pytest -q # 7 tests over the data + renderer- Date: 2026-06-04. API surfaces change; re-verify before relying on a row.
- Source of truth: the four CSVs in
sheets/. Every claim traces to a vendor doc URL insheets/sources.csv. - Scope: developer-facing facts (auth, methods, documented endpoints, free tier, SDKs). It does not measure accuracy or price-per-valid-email — that's
email-finder-comparison. - Corrections welcome: open a PR editing the relevant CSV row + its source URL. The tables above are generated from those CSVs.
Code: MIT — see LICENSE. Data (the CSV sheets): free to reuse with attribution.
- email-finder-comparison — the accuracy benchmark (5,000 searches, 9 tools)
- Tomba API docs · Tomba Go SDK
- domain-search-cli · verify-cli
