Reference
Reverse lookup API
Turn an email address or a website into the people and product behind it: founder names, their other emails, socials, the product, its launches (Product Hunt, BetaList, AppSumo and more) and verified contact emails. Plain HTTPS, JSON out.
Available on the Pro and Ultimate plans.
1. Create an API key
Open API keys in the app, name the key (e.g. "CRM enrichment") and copy it. It starts with fdb_ and is shown once — only a hash is stored. Lost it? Revoke it and make another.
Keep keys server-side. Anyone with the key can spend your quota.
2. Send the key with every request
Either header works:
Authorization: Bearer fdb_your_key
x-api-key: fdb_your_key
Base URL: https://founderdb.co/api/v1
Look up an email
GET /lookup/email?email=jane@acme.com
curl -s "https://founderdb.co/api/v1/lookup/email?email=jane@acme.com" \
-H "Authorization: Bearer $FOUNDERDB_KEY"
{
"data": {
"email": "jane@acme.com",
"found": true,
"people": [
{
"id": "…",
"name": "Jane Doe",
"username": "janedoe",
"avatar": "https://…",
"bio": "Building Acme",
"emails": [{ "email": "jane@acme.com", "source": "website", "status": "safe", "safeToSend": true }],
"socials": [{ "type": "linkedin", "url": "https://linkedin.com/in/janedoe" }],
"productIds": ["…"]
}
],
"products": [
{
"id": "…",
"name": "Acme",
"tagline": "Invoices that chase themselves",
"website": "https://acme.com",
"emails": [{ "email": "hello@acme.com", "source": "website", "status": "safe", "safeToSend": true }],
"socials": [{ "type": "twitter", "url": "https://x.com/acme" }],
"launches": [{ "platform": "producthunt", "launchedAt": "2026-10-24T00:00:00.000Z", "url": "https://www.producthunt.com/posts/acme", "upvotes": 312 }],
"makers": [{ "name": "Jane Doe", "role": "maker", "emails": [], "socials": [] }]
}
]
}
}
found: false with empty lists means we don't know that address.
Look up a domain
GET /lookup/domain?domain=acme.com — a bare domain or any URL (?domain=https://www.acme.com/pricing works too).
curl -s "https://founderdb.co/api/v1/lookup/domain?domain=acme.com" \
-H "x-api-key: $FOUNDERDB_KEY"
Returns { "data": { "domain": "acme.com", "found": true, "products": [ … ] } } — the same product shape as above, with its makers and contact emails.
Email status
Each email carries status from verification: safe (deliverable), catch_all, role_account (info@, hello@), unknown, invalid, disabled, or unverified. safeToSend is the short answer.
Usage and limits
- 60 requests a minute and 5,000 a day per key.
GET /usageshows a key's calls in the last minute and 24 hours.- Over a limit you get
429withRetry-After(seconds).
Errors
Errors are JSON: { "error": { "code": "invalid_email", "message": "…" } }.
| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_email / invalid_domain | The parameter is missing or malformed. |
| 401 | missing_api_key / invalid_api_key | No key, a wrong key, or a revoked one. |
| 403 | plan_required | The account isn't on Pro or Ultimate. |
| 429 | rate_limited / daily_limit | Slow down; see Retry-After. |
| 500 | internal_error | Our side — retry shortly. |
Examples
JavaScript:
const res = await fetch(
`https://founderdb.co/api/v1/lookup/email?email=${encodeURIComponent(email)}`,
{ headers: { Authorization: `Bearer ${process.env.FOUNDERDB_KEY}` } }
);
const { data } = await res.json();
Python:
import os, requests
r = requests.get(
"https://founderdb.co/api/v1/lookup/domain",
params={"domain": "acme.com"},
headers={"x-api-key": os.environ["FOUNDERDB_KEY"]},
)
print(r.json()["data"])