Cross-Platform Username OSINT
Pricing
$36.00 / 1,000 username checks
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é
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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.
- Check one username across selected public platforms with Cross-platform username search.
- Build a first public account map with Digital footprint search.
- Check a handle across social sites with Social media username checker.
- Look for public accounts tied to a username with Online username search.
- Review where a public username appears with Username lookup.
📊 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
- Add one or more public usernames.
- Choose the platform categories to check. Leave the list empty to check all non-sensitive groups.
- Add public federated server domains only when Federated is selected. The list narrows the servers checked and has no effect otherwise.
- Turn on Include no-match results when you need explicit no-match rows for checks that return no public account.
- 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
| Field | Type | What it does |
|---|---|---|
usernames | array of strings | Required. Add one or more public usernames. Each username is checked as its own footprint. |
platformCategories | array of strings | Choose social, developer, gaming, forums, media, business, federated, or sensitive. Leave it empty to check all non-sensitive groups. |
federatedServers | array of strings | Add public federated server domains, such as mastodon.social. This list narrows checks only when federated is selected and is ignored otherwise. |
includeNoMatchResults | boolean | Default 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
| Field | Type | What it does |
|---|---|---|
dataset | URL | Opens the public result rows in the default dataset overview. |
No-match rows
| Field | Type | What it does |
|---|---|---|
username | string | The submitted public username. |
platform | string | The public platform checked for this username. |
presence | string | The 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
| Field | Type | What it does |
|---|---|---|
username | string | The submitted public username. |
platform | string | The public platform where the account was matched. |
presence | string | The exact value "matched" for a confirmed public account match. |
profileUrl | URL | Direct public URL of the matched account, when exposed. |
accountId | string | Stable public identifier from the source, when exposed. |
profile | object | Public profile fields from the matched account, when exposed. |
profile.displayName | string | Public display name shown by the source. |
profile.biography | string | Public biography or profile description, when exposed. |
profile.avatarUrl | URL | Direct public URL of the account avatar, when exposed. |
profile.location | string | Public location shown by the source, when exposed. |
profile.websiteUrl | URL | Public website listed by the account, when exposed. |
profile.followers | integer | Source-reported follower count, when exposed. |
profile.following | integer | Source-reported following count, when exposed. |
profile.postsCount | integer | Source-reported post count, when exposed. |
profile.videosCount | integer | Source-reported video count, when exposed. |
profile.createdAt | ISO date-time | Source-owned account creation date, when exposed. |
profile.lastActiveAt | ISO date-time | Source-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
| Field | Type | What it does |
|---|---|---|
username | string | The submitted public username. |
platform | string | The public platform where the account was matched. |
presence | string | The exact value "matched" for a confirmed public account match. |
profileUrl | URL | Direct public URL of the matched account, when exposed. |
accountId | string | Stable public identifier from the source, when exposed. |
profile | object | Public profile fields from the matched account, when exposed. |
profile.displayName | string | Public display name shown by the source. |
profile.biography | string | Public biography or profile description, when exposed. |
profile.avatarUrl | URL | Direct public URL of the account avatar, when exposed. |
profile.location | string | Public location shown by the source, when exposed. |
profile.websiteUrl | URL | Public website listed by the account, when exposed. |
profile.followers | integer | Source-reported follower count, when exposed. |
profile.following | integer | Source-reported following count, when exposed. |
profile.postsCount | integer | Source-reported post count, when exposed. |
profile.videosCount | integer | Source-reported video count, when exposed. |
profile.createdAt | ISO date-time | Source-owned account creation date, when exposed. |
profile.lastActiveAt | ISO date-time | Source-owned last activity date, when exposed. |
posts | array of objects | Public posts from the matched account, when exposed. |
posts[].url | URL | Direct public URL of the post. |
posts[].text | string | Public post text, when exposed. |
posts[].publishedAt | ISO date-time | Source-owned publication date of the post, when exposed. |
posts[].author | object | Public author context shown with the post, when exposed. |
posts[].author.username | string | Public author username. |
posts[].author.displayName | string | Public author display name, when exposed. |
posts[].author.profileUrl | URL | Direct public URL of the author profile. |
posts[].media | array of objects | Public media attached to the post, when exposed. |
posts[].media[].type | string | Source-reported media type. |
posts[].media[].url | URL | Direct public URL of the media file. |
posts[].media[].thumbnailUrl | URL | Direct public URL of a media thumbnail, when exposed. |
posts[].engagement | object | Source-reported post engagement counts, when exposed. |
posts[].engagement.likes | integer | Source-reported like count. |
posts[].engagement.comments | integer | Source-reported comment count. |
posts[].engagement.shares | integer | Source-reported share count. |
posts[].engagement.views | integer | Source-reported view count, when exposed. |
linkedAccounts | array of objects | Other public accounts explicitly linked by the source account. |
linkedAccounts[].platform | string | Platform of the explicitly linked account. |
linkedAccounts[].username | string | Public username of the linked account, when exposed. |
linkedAccounts[].profileUrl | URL | Direct 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
| Field | Type | What it does |
|---|---|---|
username | string | The submitted public username. |
platform | string | The public platform where the account was matched. |
presence | string | The exact value "matched" for a confirmed public account match. |
profileUrl | URL | Direct public URL of the matched account, when exposed. |
accountId | string | Stable public identifier from the source, when exposed. |
profile | object | Public profile fields from the matched account, when exposed. |
profile.displayName | string | Public display name shown by the source. |
profile.biography | string | Public biography or profile description, when exposed. |
profile.avatarUrl | URL | Direct public URL of the account avatar, when exposed. |
profile.location | string | Public location shown by the source, when exposed. |
profile.websiteUrl | URL | Public website listed by the account, when exposed. |
profile.followers | integer | Source-reported follower count, when exposed. |
profile.following | integer | Source-reported following count, when exposed. |
profile.postsCount | integer | Source-reported post count, when exposed. |
profile.videosCount | integer | Source-reported video count, when exposed. |
profile.createdAt | ISO date-time | Source-owned account creation date, when exposed. |
profile.lastActiveAt | ISO date-time | Source-owned last activity date, when exposed. |
videos | array of objects | Public videos from the matched account, when exposed. |
videos[].url | URL | Direct public URL of the video. |
videos[].title | string | Public video title, when exposed. |
videos[].channel | object | Public channel context shown with the video, when exposed. |
videos[].channel.name | string | Public channel name. |
videos[].channel.url | URL | Direct public URL of the channel, when exposed. |
videos[].description | string | Public video description, when exposed. |
videos[].publishedAt | ISO date-time | Source-owned publication date of the video, when exposed. |
videos[].durationSeconds | number | Source-reported video duration in seconds, when exposed. |
videos[].thumbnailUrl | URL | Direct public URL of the video thumbnail, when exposed. |
videos[].engagement | object | Source-reported video engagement counts, when exposed. |
videos[].engagement.views | integer | Source-reported view count. |
videos[].engagement.likes | integer | Source-reported like count. |
videos[].engagement.comments | integer | Source-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 🫡
🔗 Related Actors
- Instagram Profile Stats Scraper: Enrich a matched Instagram username with public profile stats, links, and recent post previews.
- TikTok Creator Analytics Scraper: Review public TikTok profile, audience, and recent post metrics for a matched handle.
- Twitter Scraper: Follow a public X account match with profile or post data, links, and engagement fields.
- Telegram Info Scraper: Inspect a matched public Telegram username, channel, group, or bot.
- Influencer Scraper: Compare public creator profiles across TikTok, Instagram, and YouTube from handles or profile URLs.
Made with ❤️ by Maxime Dupré