Footprint check
Which platforms an email address, phone number or username is registered on - the sweep, breach history and web mentions, with no other module.
Request
Send query (an email, phone number or username, detected for you), email, or phone.
curl -X POST https://api.digifootprint.dev/v2/footprint \
-H "Authorization: Bearer dfp_live_..." \
-H "Content-Type: application/json" \
-d '{"query": "someone@example.com"}'{
"lookupId": "2c7c1393-e854-4120-985c-f7f76f0869b1",
"footprint": {
"platformsChecked": 1944,
"matches": 6,
"socialMatches": 5,
"derivedMatches": 1,
"hits": ["github", "gravatar", "spotify", "google", "pinterest", "duolingo"],
"servedFromCache": false,
"results": [
{
"platform": "github",
"registered": true,
"method": "public_api",
"icon": "https://digifootprint.dev/icons/github.svg",
"checkedAt": "2026-09-28T18:53:14.440Z",
"identity": "email"
}
],
"breaches": [
{ "name": "AlienStealerLogs", "date": "2025" },
{ "name": "Naz.API", "date": "2023" }
],
"webMentions": [
{
"title": "Someone's profile",
"url": "https://github.com/someone",
"snippet": "How to reach me someone@example.com ...",
"matchConfidence": "confirmed"
}
]
}
}What comes back
The footprint object is the same one POST /v2/lookup returns. Every row in results carries the method that established it and when it was checked. A platform we could not confirm is left out, never reported as false.
breaches is null when not checked (a phone or username only, or the source is unavailable) and [] when checked and nothing was found. webMentions follows the same rule.
An email and a phone together
Send both and each gets its own sweep; identity on every result says which one it came from. That is two footprint lookups.
{
"email": "someone@example.com",
"phone": "+14155552671"
}Choosing the phone platforms
A phone number is checked platform by platform and billed per platform that runs. With nothing named, the default set runs (WhatsApp and Telegram). Name others in checks.footprint.phone.platforms; an unknown platform is a 400. Send "email": false or "phone": false inside checks.footprint to skip one identity's sweep, and "breaches": false in checks to skip the breach lookup. Per-platform prices are on the rate card.
{
"phone": "+14155552671",
"checks": { "footprint": { "phone": { "platforms": ["whatsapp", "telegram", "facebook"] } } }
}Speed
This endpoint waits for the full sweep, which usually takes several seconds and can run past fifteen when a slow platform is involved. To answer in one to three seconds and let the rest finish in the background, use POST /v2/lookup with {"checks": {"footprint": {"early": true}}}.
Billing
An email or username is one footprint lookup; a phone number is billed per platform that runs. No other module runs or is billed. An IP address has nothing to sweep: use POST /v2/ip for that.