Updated 2026-08-30
A digital footprint check answers where an identifier has been used: which platforms an email, username or phone number is registered on, whether it appears in known breaches, and whether it shows up on the public web. This API returns all three in one response, and only what it could verify.
Three kinds of fact in one response. Platform registrations: for each platform that answered, whether an account exists for the identifier, how that was established and exactly when. Breach history: each known breach the address appeared in, by name and date. Web mentions: public pages where the identifier appears, with a title, URL, snippet and whether the exact string was confirmed on the page. Counts sit on top: matches for every registration, socialMatches excluding accounts that came with the address, and derivedMatches for hits found through the handle before the @.
curl -X POST "https://api.digifootprint.dev/v1/lookup?wait=true" \
-H "Authorization: Bearer dfp_your_key" \
-H "Content-Type: application/json" \
-d '{"query": "someone@example.com"}'{
"query": "someone@example.com",
"platformsChecked": 887,
"matches": 5,
"socialMatches": 3,
"derivedMatches": 1,
"servedFromCache": false,
"results": [
{ "platform": "google", "registered": true, "method": "domain_derived", "checkedAt": "2026-08-30T12:30:02.011Z", "mailboxProvider": true },
{ "platform": "github", "registered": true, "method": "public_api", "checkedAt": "2026-08-30T12:30:02.140Z" },
{ "platform": "tiktok", "registered": true, "method": "public_api", "checkedAt": "2026-08-30T12:30:02.233Z" },
{ "platform": "spotify", "registered": true, "method": "public_api", "checkedAt": "2026-08-30T12:30:02.287Z" },
{ "platform": "reddit", "registered": true, "method": "public_api", "checkedAt": "2026-08-30T12:30:02.512Z", "derivedFrom": "email_local_part" },
{ "platform": "instagram", "registered": false, "method": "public_api", "checkedAt": "2026-08-30T12:30:02.301Z" }
],
"breaches": [
{ "name": "Canva", "date": "2019-05-24" }
],
"webMentions": [
{ "title": "Speakers - Example Conf 2024", "url": "https://example.org/speakers", "snippet": "... someone@example.com ...", "matchConfidence": "confirmed" }
],
"phoneDetails": null
}The standard band runs 887 platforms on every lookup - social networks, developer platforms, shopping, finance, music, gaming and community sites, all in the same request, because a footprint is only meaningful in full. A deep lookup (?deep=true) extends that to 1,244 by adding the long tail, and an instant lookup runs the highest-signal subset under a strict time budget. Which platforms a given input reaches depends on the input: an email address reaches 27 platforms directly and the rest through its handle, a username reaches 864, and a phone number reaches 1 - phone lookups are in beta. Every platform has a page saying which inputs it accepts; start from GitHub, TikTok or the social category.
Send query and the type is detected; send email or phone to be explicit. An email address is the richest input - registrations, breach history, web mentions and a derived handle all apply. A username reaches the widest set of platforms but has no breach history, since breach data is keyed on addresses. A phone number reaches very few platforms but returns phoneDetails: validity, carrier, line type and country. The response shape is identical for all three, so one integration handles whichever identifier a flow has, and the guides for each go deeper: reverse email lookup, username search, phone number lookup.
A footprint is only useful if every fact in it can be trusted, so the response follows four rules without exception. A platform we could not confirm is omitted, never reported as not registered. null means not checked and [] means checked and empty - for breaches and web mentions alike. Every result carries the real time it was established in checkedAt, and servedFromCache says when any of it was reused, so a cached fact is never presented as fresh (see caching). And nothing from inside an account is ever returned: the check establishes existence, not contents. The consequence is a response you can act on without a confidence model in front of it - what is there is verified, what is missing is unknown, and the two are never confused.
Fraud prevention: score a new account on the history of its email address in the request path, with instant mode. KYC and AML: a low-friction first pass that tells a long-lived identity from one that appeared last week, before documents are requested. Trust and safety: check whether a reported handle or address has a presence across the platforms you moderate. OSINT: turn one identifier into a timestamped list of platforms to pursue through proper channels. The social profile lookup page covers the social slice; streaming delivers each platform as it lands. Free lookups to start - see pricing.