Digital footprint API: one request, every platform

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.

What a digital footprint API returns

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 @.

POST /v1/lookup?wait=true
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"}'
Response (abridged)
{
  "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
}

One request, every platform: 887 standard, 1,244 deep

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.

Three inputs, auto-detected, one shape of answer

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.

Verified or omitted: the rules of a digital footprint check

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.

Where a digital footprint check fits

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.

Frequently asked questions

What is a digital footprint API?
An API that takes an identifier - an email address, username or phone number - and returns the trace it has left: the platforms it is registered on (out of 887 checked here), the breaches it has appeared in and the public pages that mention it. It returns facts about existence, never the contents of any account.
How do I do a digital footprint check on an email address?
POST the address to /v1/lookup with ?wait=true and read the response: results lists each platform with registered true or false and a timestamp, breaches lists each known breach by name and date, and webMentions lists public pages where the address appears. Use ?instant=true when you need an answer inside a request.
Does a digital footprint check return personal data from the profiles it finds?
No. It confirms that an account exists for the identifier and when that was confirmed. Names, photos, posts, followers, locations and messages are never collected or returned, which is what makes the check usable at signup and in regulated onboarding.
How accurate is a digital footprint API?
Every result is confirmed with the platform at the moment shown in checkedAt. A platform that could not be confirmed is left out of the response rather than reported as not registered, so what is present is verified and what is absent is unknown - never guessed.

Related

Start freeTry a lookup