Updated 2026-08-30
Fake accounts are cheap to create and expensive to moderate after the fact. A fake account detection API answers, before the first listing or message, whether a new member’s email address or handle exists anywhere else, with the result for each platform verified or omitted, never guessed.
The accounts that damage a marketplace or a community are rarely created one at a time. A seller running a refund scam, a spam ring seeding a forum, a swarm of profiles on a dating app: each one needs an email address, and each address is created minutes before the signup. It has never been used for anything. The response below is the signature. matches: 1 looks like something until you see that the single hit is a mailbox-provider account that came with the address and carries mailboxProvider: true; socialMatches: 0 is the number that matters.
curl -X POST "https://api.digifootprint.dev/v1/lookup?wait=true" \
-H "Authorization: Bearer dfp_your_key" \
-H "Content-Type: application/json" \
-d '{"query": "deals.outlet.4471@example.com"}'{
"lookupId": "9a17e5d0-...",
"query": "deals.outlet.4471@example.com",
"platformsChecked": 887,
"matches": 1,
"socialMatches": 0,
"servedFromCache": false,
"results": [
{ "platform": "microsoft", "registered": true, "method": "domain_derived", "checkedAt": "2026-08-30T13:27:09.415Z", "mailboxProvider": true },
{ "platform": "instagram", "registered": false, "method": "public_api", "checkedAt": "2026-08-30T13:27:09.602Z" },
{ "platform": "reddit", "registered": false, "method": "public_api", "checkedAt": "2026-08-30T13:27:09.688Z" },
{ "platform": "discord", "registered": false, "method": "public_api", "checkedAt": "2026-08-30T13:27:09.731Z" }
],
"breaches": [],
"webMentions": [],
"phoneDetails": null
}Every registered: false here is a platform that confirmed there is no account for the input. Platforms that could not answer confidently are missing from results rather than filled in, so the array is shorter than platformsChecked. The full semantics, including why breaches being [] differs from null, are in running a lookup.
Community platforms have a second identifier to check. A new member who registers as a well-known creator’s handle, or a seller whose profile claims a large following elsewhere, can be checked by username: the response reports on which of the 887+ platforms that handle exists. If the handle is registered on Instagram, YouTube and Twitch, it belongs to someone; whether it belongs to the person in front of you is a question for your verification flow, not for the API.
The reverse case is just as useful. A handle that exists on none of the platforms it is keyed on, attached to an address with no history, is the profile of an account created to be thrown away. Usernames reach more platforms than either email or phone, because most social networks are keyed on them; the social, gaming and community hubs list what each category covers.
The response is an observation, and the right use of an observation is to decide how much friction a new member gets, not whether they exist. A workable policy has three lanes. An established footprint (several socialMatches, a breach older than a year) is fast-tracked: post, sell and message immediately. A thin footprint is limited: listings held for review, messaging rate-capped, payouts delayed until a phone or payment method is verified. A thin footprint combined with your own signals, such as a device already tied to a banned account or ten signups from one network in an hour, is queued for a human.
Absence of a footprint is never itself grounds for removal. Privacy-conscious people, teenagers on their first platform and users in markets where the services we check are not popular all have thin footprints and are all real. The API supports this policy by never reporting a platform as unregistered unless the platform confirmed it, and by keeping socialMatches separate from mailbox-provider hits so a corporate address is not mistaken for an active online life.
A moderator looking at a reported profile does not want to wait for the slowest platform. The streaming endpoint sends each platform result as a server-sent event as it lands, the first in well under a second, followed by breach and web-mention events and a final summary. Wire it to a panel beside the report queue and the footprint is visible before the moderator has finished reading the complaint. For the signup path itself, queue the lookup without ?wait=true and gate the first sensitive action on the result; repeat checks of the same input within the freshness window are served from cache and flagged servedFromCache: true, and per-key limits are documented on the rate limits page.
The API never returns profile contents. It does not fetch a display name, a photo, a bio, a follower count or a location from any platform; it reports that an account exists for the identifier, established how, at what time. That keeps a trust-and-safety integration within a narrow processing purpose: the member gave you the identifier, and you are checking whether it has a history. Our terms prohibit using the service to surveil or harass individuals, and using it to remove someone from a platform on the basis of a protected characteristic would breach both the terms and the law. Phone-number lookups are in beta with limited coverage. There are free lookups to start; see the pricing section, or the fraud prevention page for the payments-side version of the same check.