Cross-Platform Username OSINT avatar

Cross-Platform Username OSINT

Pricing

$36.00 / 1,000 username checks

Go to Apify Store
Cross-Platform Username OSINT

Cross-Platform Username OSINT

Check public usernames across selected platform groups without source credentials. Get matched accounts, optional no-match rows, and public profile, post, video, and linked-account details when sources expose them.

Pricing

$36.00 / 1,000 username checks

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

🔎 Map Usernames Across Public Platforms

Investigators, researchers, trust and safety teams, and developers can check one or more public usernames across selected platform groups. The Actor returns matched rows and, when requested, no-match rows for the username and platform checks that produce a saved status. Rows can include public profile context when a source exposes it. This gives you a structured starting point for a public username footprint review without source credentials. A shared username is a lead, not proof that accounts belong to the same person.

📊 See Account Matches and Public Context

Each row names the submitted username and the platform checked. A matched row can include a public profile URL, source account ID, profile details, posts, videos, and accounts linked by the source. A presence value of "noMatch" is an explicit no-match row when you turn on Include no-match results. Uncertain or blocked checks are not saved as rows and are not treated as no-match results.

The Actor saves the first eligible occurrence of a source account for a submitted username and platform. If the same source account is found again during discovery, the later match is ignored. The saved row describes only the first match and does not collect evidence from later matches.

▶️ Check Usernames in One Run

  1. Add one or more public usernames.
  2. Choose the platform categories to check. Leave the list empty to check all non-sensitive groups.
  3. Add public federated server domains only when Federated is selected. The list narrows the servers checked and has no effect otherwise.
  4. Turn on Include no-match results when you need explicit no-match rows for checks that return no public account.
  5. Start the run and open the public dataset.

Each submitted username is checked as its own footprint. A single run processes the submitted list independently.

⚙️ Input

Input fields

FieldTypeWhat it does
usernamesarray of stringsRequired. Add one or more public usernames. Each username is checked as its own footprint.
platformCategoriesarray of stringsChoose social, developer, gaming, forums, media, business, federated, or sensitive. Leave it empty to check all non-sensitive groups.
federatedServersarray of stringsAdd public federated server domains, such as mastodon.social. This list narrows checks only when federated is selected and is ignored otherwise.
includeNoMatchResultsbooleanDefault false. Turn it on to save an explicit no-match row for each username and platform check that returns no public account. Uncertain or blocked checks stay separate.

Example input

This is the public input from a successful current-beta default-input run:

{
"usernames": [
"apify"
],
"platformCategories": [
"social",
"developer"
],
"includeNoMatchResults": false
}

🧾 Output

The Output tab opens the public default dataset. Every dataset row has username, platform, and presence. Optional fields appear when the source exposes them. The tables below cover the no-match, profile, post, linked-account, and video row forms seen in successful current-beta runs.

Output link

FieldTypeWhat it does
datasetURLOpens the public result rows in the default dataset overview.

No-match rows

FieldTypeWhat it does
usernamestringThe submitted public username.
platformstringThe public platform checked for this username.
presencestringThe exact value "noMatch" when the source check found no public account and no-match rows were requested.

Example no-match row

This complete row is from a successful current-beta run:

{
"username": "Gargron",
"platform": "Bluesky",
"presence": "noMatch"
}

Matched profile rows

FieldTypeWhat it does
usernamestringThe submitted public username.
platformstringThe public platform where the account was matched.
presencestringThe exact value "matched" for a confirmed public account match.
profileUrlURLDirect public URL of the matched account, when exposed.
accountIdstringStable public identifier from the source, when exposed.
profileobjectPublic profile fields from the matched account, when exposed.
profile.displayNamestringPublic display name shown by the source.
profile.biographystringPublic biography or profile description, when exposed.
profile.avatarUrlURLDirect public URL of the account avatar, when exposed.
profile.locationstringPublic location shown by the source, when exposed.
profile.websiteUrlURLPublic website listed by the account, when exposed.
profile.followersintegerSource-reported follower count, when exposed.
profile.followingintegerSource-reported following count, when exposed.
profile.postsCountintegerSource-reported post count, when exposed.
profile.videosCountintegerSource-reported video count, when exposed.
profile.createdAtISO date-timeSource-owned account creation date, when exposed.
profile.lastActiveAtISO date-timeSource-owned last activity date, when exposed.

Example matched profile row

This complete row is from a successful current-beta run:

{
"username": "Gargron",
"platform": "GitHub",
"presence": "matched",
"profileUrl": "https://github.com/Gargron",
"accountId": "184731",
"profile": {
"displayName": "Eugen Rochko",
"biography": "Executive Strategy & Product Advisor at Mastodon.",
"avatarUrl": "https://avatars.githubusercontent.com/u/184731?v=4",
"location": "Germany",
"websiteUrl": "https://eugenrochko.com/",
"followers": 2388,
"following": 6,
"createdAt": "2010-01-18T16:30:34.000Z",
"lastActiveAt": "2026-08-20T11:30:11.000Z"
}
}

Matched rows with posts and linked accounts

FieldTypeWhat it does
usernamestringThe submitted public username.
platformstringThe public platform where the account was matched.
presencestringThe exact value "matched" for a confirmed public account match.
profileUrlURLDirect public URL of the matched account, when exposed.
accountIdstringStable public identifier from the source, when exposed.
profileobjectPublic profile fields from the matched account, when exposed.
profile.displayNamestringPublic display name shown by the source.
profile.biographystringPublic biography or profile description, when exposed.
profile.avatarUrlURLDirect public URL of the account avatar, when exposed.
profile.locationstringPublic location shown by the source, when exposed.
profile.websiteUrlURLPublic website listed by the account, when exposed.
profile.followersintegerSource-reported follower count, when exposed.
profile.followingintegerSource-reported following count, when exposed.
profile.postsCountintegerSource-reported post count, when exposed.
profile.videosCountintegerSource-reported video count, when exposed.
profile.createdAtISO date-timeSource-owned account creation date, when exposed.
profile.lastActiveAtISO date-timeSource-owned last activity date, when exposed.
postsarray of objectsPublic posts from the matched account, when exposed.
posts[].urlURLDirect public URL of the post.
posts[].textstringPublic post text, when exposed.
posts[].publishedAtISO date-timeSource-owned publication date of the post, when exposed.
posts[].authorobjectPublic author context shown with the post, when exposed.
posts[].author.usernamestringPublic author username.
posts[].author.displayNamestringPublic author display name, when exposed.
posts[].author.profileUrlURLDirect public URL of the author profile.
posts[].mediaarray of objectsPublic media attached to the post, when exposed.
posts[].media[].typestringSource-reported media type.
posts[].media[].urlURLDirect public URL of the media file.
posts[].media[].thumbnailUrlURLDirect public URL of a media thumbnail, when exposed.
posts[].engagementobjectSource-reported post engagement counts, when exposed.
posts[].engagement.likesintegerSource-reported like count.
posts[].engagement.commentsintegerSource-reported comment count.
posts[].engagement.sharesintegerSource-reported share count.
posts[].engagement.viewsintegerSource-reported view count, when exposed.
linkedAccountsarray of objectsOther public accounts explicitly linked by the source account.
linkedAccounts[].platformstringPlatform of the explicitly linked account.
linkedAccounts[].usernamestringPublic username of the linked account, when exposed.
linkedAccounts[].profileUrlURLDirect public URL of the explicitly linked account.

Example matched row with posts and a linked account

This is a shortened genuine row from a successful current-beta run. The source row has more posts, so the posts array uses "..." after its first real post as an omission marker.

{
"username": "Gargron",
"platform": "Mastodon",
"presence": "matched",
"profileUrl": "https://mastodon.social/@Gargron",
"accountId": "1",
"profile": {
"displayName": "Eugen Rochko",
"biography": "Executive Strategy & Product Advisor, Founder of @ Mastodon . Film photography, prog metal, Dota 2. Likes all things analog. Luddite.",
"avatarUrl": "https://files.mastodon.social/accounts/avatars/000/000/001/original/6b2384b33799a0dd.png",
"websiteUrl": "https://eugenrochko.com/",
"followers": 382546,
"following": 742,
"postsCount": 82267,
"createdAt": "2016-03-16T00:00:00.000Z",
"lastActiveAt": "2026-09-15T20:53:55.351Z"
},
"posts": [
{
"url": "https://mastodon.social/@Gargron/117277041317773052",
"text": "@ TheBreadmonkey People don’t read. You could’ve put it as the first sentence and someone would’ve missed it.",
"publishedAt": "2026-09-15T20:53:55.351Z",
"author": {
"username": "Gargron",
"displayName": "Eugen Rochko",
"profileUrl": "https://mastodon.social/@Gargron"
},
"engagement": {
"likes": 2,
"comments": 0,
"shares": 0
}
},
"..."
],
"linkedAccounts": [
{
"platform": "GitHub",
"profileUrl": "https://github.com/Gargron",
"username": "Gargron"
}
]
}

Matched rows with videos

FieldTypeWhat it does
usernamestringThe submitted public username.
platformstringThe public platform where the account was matched.
presencestringThe exact value "matched" for a confirmed public account match.
profileUrlURLDirect public URL of the matched account, when exposed.
accountIdstringStable public identifier from the source, when exposed.
profileobjectPublic profile fields from the matched account, when exposed.
profile.displayNamestringPublic display name shown by the source.
profile.biographystringPublic biography or profile description, when exposed.
profile.avatarUrlURLDirect public URL of the account avatar, when exposed.
profile.locationstringPublic location shown by the source, when exposed.
profile.websiteUrlURLPublic website listed by the account, when exposed.
profile.followersintegerSource-reported follower count, when exposed.
profile.followingintegerSource-reported following count, when exposed.
profile.postsCountintegerSource-reported post count, when exposed.
profile.videosCountintegerSource-reported video count, when exposed.
profile.createdAtISO date-timeSource-owned account creation date, when exposed.
profile.lastActiveAtISO date-timeSource-owned last activity date, when exposed.
videosarray of objectsPublic videos from the matched account, when exposed.
videos[].urlURLDirect public URL of the video.
videos[].titlestringPublic video title, when exposed.
videos[].channelobjectPublic channel context shown with the video, when exposed.
videos[].channel.namestringPublic channel name.
videos[].channel.urlURLDirect public URL of the channel, when exposed.
videos[].descriptionstringPublic video description, when exposed.
videos[].publishedAtISO date-timeSource-owned publication date of the video, when exposed.
videos[].durationSecondsnumberSource-reported video duration in seconds, when exposed.
videos[].thumbnailUrlURLDirect public URL of the video thumbnail, when exposed.
videos[].engagementobjectSource-reported video engagement counts, when exposed.
videos[].engagement.viewsintegerSource-reported view count.
videos[].engagement.likesintegerSource-reported like count.
videos[].engagement.commentsintegerSource-reported comment count.

Example matched row with videos

This complete row is from a successful current-beta run:

{
"username": "dailymotion",
"platform": "Dailymotion",
"presence": "matched",
"profileUrl": "https://www.dailymotion.com/dailymotion",
"accountId": "x43py0",
"profile": {
"displayName": "Dailymotion",
"biography": "DayOne : Tout commence le jour où on y croit ✨",
"avatarUrl": "https://s1.dmcdn.net/u/QIeO1ggVYwOsQUoA/720x720",
"followers": 11944,
"following": 103,
"videosCount": 141,
"createdAt": "2007-05-16T11:45:46.000Z",
"lastActiveAt": "2026-09-11T09:26:49.000Z"
},
"videos": [
{
"url": "https://www.dailymotion.com/video/xb6qxim",
"title": "Bienvenue dans les coulisses de DayOne. Entre deux prise, notre CM est allée poser quelques questions aux ambassadeurs. Et visiblement, certains ont l’âme d’un enquêteur…",
"publishedAt": "2026-09-11T09:26:49.000Z",
"durationSeconds": 95,
"thumbnailUrl": "https://s2.dmcdn.net/v/eKVuk1ge-JI_lLkkV/x720",
"channel": {
"name": "Dailymotion",
"url": "https://www.dailymotion.com/dailymotion"
},
"engagement": {
"views": 76,
"likes": 1,
"comments": 0
}
},
{
"url": "https://www.dailymotion.com/video/xb6qrbe",
"title": "T’as le projet. Il te manque les moyens pour le faire exister ?Avec #DayOne, Dailymotion peut financer ton projet jusqu’à 50 000€",
"publishedAt": "2026-09-11T09:17:17.000Z",
"durationSeconds": 59,
"thumbnailUrl": "https://s2.dmcdn.net/v/eKTxA1ge-K6Elzlcv/x720",
"channel": {
"name": "Dailymotion",
"url": "https://www.dailymotion.com/dailymotion"
},
"engagement": {
"views": 53,
"likes": 1,
"comments": 0
}
},
{
"url": "https://www.dailymotion.com/video/xb53wii",
"title": "DayOne - le programme de Dailymotion (Teaser officiel)",
"description": "Toi aussi, rejoins l’aventure DayOne ! Partage ta vidéo de présentation sur Dailymotion et tente ta chance pour bénéficier d’un accompagnement afin de donner vie au projet de tes rêves. Retrouve toutes les informations et le formulaire d’inscription en bio 😉",
"publishedAt": "2026-09-07T14:00:07.000Z",
"durationSeconds": 47,
"thumbnailUrl": "https://s1.dmcdn.net/v/e9_XQ1gdk3tCuxtxR/x720",
"channel": {
"name": "Dailymotion",
"url": "https://www.dailymotion.com/dailymotion"
},
"engagement": {
"views": 216,
"likes": 5,
"comments": 0
}
},
{
"url": "https://www.dailymotion.com/video/xaz9c66",
"title": "Entre pole dance et makeup d'envergure... on a demandé à by.indy de nous blazer ses préfs | Le blaze",
"publishedAt": "2026-08-20T08:00:43.000Z",
"durationSeconds": 64,
"thumbnailUrl": "https://s2.dmcdn.net/v/daX3U1gYeQWzeXifk/x720",
"channel": {
"name": "Dailymotion",
"url": "https://www.dailymotion.com/dailymotion"
},
"engagement": {
"views": 221,
"likes": 0,
"comments": 0
}
},
{
"url": "https://www.dailymotion.com/video/xawfgp2",
"title": "On ne juge pas mais on jauge avec @amahgauche | La jauge",
"publishedAt": "2026-08-10T11:23:40.000Z",
"durationSeconds": 90,
"thumbnailUrl": "https://s1.dmcdn.net/v/dIOf61gXD_hrzU7vi/x720",
"channel": {
"name": "Dailymotion",
"url": "https://www.dailymotion.com/dailymotion"
},
"engagement": {
"views": 255,
"likes": 1,
"comments": 0
}
}
]
}

💳 Pricing

The Actor uses pay-per-event pricing. The current primary event is $0.036 for each submitted username check. The event is tied to the check, not to the number of rows it saves. No-match rows are written only when requested, and uncertain or blocked checks are not turned into no-match rows.

🔌 Integrations

Read the dataset in the Apify Console or through the standard Apify API. Export the structured rows for your own workflow. The Actor uses public source data and does not need source credentials.

❓ FAQ

How should I read noMatch?

It means the selected source check found no public account for that username, and the check was saved as an explicit no-match row. It does not prove that the username is unused everywhere.

When should I include no-match results?

Turn it on when your review needs explicit no-match rows for username and platform checks that return no public account. Leave it off when you only want matched accounts and their public details.

What happens when a source is uncertain or blocked?

The check is kept separate from noMatch. The Actor does not treat an uncertain or blocked source as proof that an account is absent, and those checks are not saved as dataset rows.

Can I check several usernames in one run?

Yes. Add each public username to the list. The Actor checks each submitted username as its own footprint in the same run.

What does an empty platform category list do?

It checks all non-sensitive platform groups. Sensitive public platforms are checked only when you select Sensitive public platforms.

How do federated servers affect a run?

Select Federated to check public federated accounts. Add server domains to narrow that check. The server list has no effect when Federated is not selected.

Does a shared username prove two accounts belong to one person?

No. A shared username shows public account presence on each source. It is not proof of common ownership or an identity verdict.

Will every matched row include posts or videos?

No. Posts, videos, profile fields, engagement counts, and linked accounts appear only when the source exposes them for that match. The tables above show the fields that can be present.

Does this run continuously monitor accounts?

Each run checks the usernames you submit. Run it again when you need a new check, but the Actor does not combine separate runs or claim change history.

Can it access private or login-gated accounts?

No. It uses public source access and does not bypass privacy controls, login gates, or other access limits.

📝 Changelog

v0.0 (16-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré