Username Availability Checker avatar

Username Availability Checker

Pricing

$0.45 / 1,000 availability checks

Go to Apify Store
Username Availability Checker

Username Availability Checker

Check usernames across supported public platforms in one run. Get per-platform available, taken, invalid, or unresolved results with profile links and reasons when available.

Pricing

$0.45 / 1,000 availability checks

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

🔎 Check username availability across public platforms

Founders, marketers, creators, agencies, and developers can use Username Availability Checker to test candidate usernames or handles across supported public platforms. It returns one row per candidate with a normalized handle and per-platform available, taken, invalid, or unresolved results, plus profile links and reasons when available. Use the rows to compare names before choosing a brand, creator, or product handle.

📊 Per-platform username results

The default dataset has one row for each submitted candidate. Each row keeps the submitted candidate beside its normalized handle and the platform results. A platform result reports available, taken, invalid, or unresolved. available and taken are reported only when the source signal is definitive. A public profile link or a reason is included when the source provides one.

Returned data

Use the rows to see which platforms have a candidate, which checks need review, and which submitted values were rejected by a platform's username rules. An unresolved result is not treated as proof that a username is available or taken.

▶️ Check many handles in one run

  1. Set Check usernames on to Selected platforms or Full catalog.
  2. If you choose Selected platforms, pick one or more values in Platforms.
  3. Add one or more usernames or handles to Usernames or handles. You can also add a full Gmail address such as name@gmail.com.
  4. Start the run and open the default dataset to review or export the rows.

The selected scope applies to every candidate in the run. Each run is a point-in-time check of public source signals. Run it again when you need a new check.

⚙️ Input

Add one candidate list and one platform scope for each run.

Input fields

FieldTypeWhat it does
platformScopestringRequired. Use selected to check the platforms in platforms, or all to check the full supported catalog for every candidate.
platformsarray of stringsChoose one or more platforms when platformScope is selected: instagram, facebook, x, linkedin, tiktok, youtube, reddit, pinterest, threads, bluesky, mastodon, github, gitlab, npm, devto, twitch, kick, discord, steam, roblox, or gmail.
candidatesarray of stringsRequired. Add one or more usernames or handles. Each value is checked on every platform in the selected scope. A full Gmail address such as name@gmail.com is also accepted.

Input example

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

{
"platformScope": "selected",
"platforms": [
"github",
"instagram",
"youtube",
"gmail"
],
"candidates": [
"octocat"
]
}

🧾 Output

The Output tab opens the default dataset overview. Each dataset row contains one candidate and its per-platform checks. The tables below cover the output link and the complete dataset row shape.

Output link

FieldTypeWhat it does
resultslinkOpens the checked candidates and their platform results in the default dataset overview.

Dataset row

FieldTypeWhat it does
candidatestringThe submitted username or handle for this row.
normalizedHandlestringThe normalized username or handle used for the checks.
platformResultsarray of objectsThe results for the platforms checked for this candidate.
platformResults[].platformstringThe platform checked for this candidate.
platformResults[].verdictstringThe outcome: available, taken, invalid, or unresolved. Available or taken is reported only when the source signal is definitive.
platformResults[].profileUrlURLThe public profile URL checked for the platform, when the source provides one.
platformResults[].reasonstringExtra source context for an invalid, unresolved, or otherwise explained platform outcome, when available.

This complete row is from a successful current-beta run with the full catalog selected.

{
"candidate": "octocat@gmail.com",
"normalizedHandle": "octocat",
"platformResults": [
{
"platform": "instagram",
"verdict": "unresolved",
"reason": "The source response was not definitive after retries. Manual review is needed."
},
{
"platform": "facebook",
"verdict": "unresolved",
"reason": "The source response was not definitive after retries. Manual review is needed."
},
{
"platform": "x",
"verdict": "taken",
"profileUrl": "https://x.com/octocat"
},
{
"platform": "linkedin",
"verdict": "unresolved",
"reason": "The source response was not definitive after retries. Manual review is needed."
},
{
"platform": "tiktok",
"verdict": "taken",
"profileUrl": "https://www.tiktok.com/@octocat"
},
{
"platform": "youtube",
"verdict": "taken",
"profileUrl": "https://www.youtube.com/channel/UCuLNZr-IbDjSLgwQBFgQgIQ"
},
{
"platform": "reddit",
"verdict": "taken",
"profileUrl": "https://www.reddit.com/user/octocat/"
},
{
"platform": "pinterest",
"verdict": "taken",
"profileUrl": "https://www.pinterest.com/octocat/"
},
{
"platform": "threads",
"verdict": "unresolved",
"reason": "The source response was not definitive after retries. Manual review is needed."
},
{
"platform": "bluesky",
"verdict": "available",
"reason": "Invalid app.bsky.actor.getProfile params: Invalid AT identifier (got \"octocat\")"
},
{
"platform": "mastodon",
"verdict": "taken",
"profileUrl": "https://mastodon.social/@octocat"
},
{
"platform": "github",
"verdict": "taken",
"profileUrl": "https://github.com/octocat"
},
{
"platform": "gitlab",
"verdict": "available",
"reason": "GitLab returned an empty exact username result."
},
{
"platform": "npm",
"verdict": "taken",
"profileUrl": "https://www.npmjs.com/~octocat"
},
{
"platform": "devto",
"verdict": "taken",
"profileUrl": "https://dev.to/octocat"
},
{
"platform": "twitch",
"verdict": "taken",
"profileUrl": "https://www.twitch.tv/octocat"
},
{
"platform": "kick",
"verdict": "taken",
"profileUrl": "https://kick.com/octocat"
},
{
"platform": "discord",
"verdict": "taken"
},
{
"platform": "steam",
"verdict": "taken",
"profileUrl": "https://steamcommunity.com/id/Octocat/"
},
{
"platform": "roblox",
"verdict": "taken"
},
{
"platform": "gmail",
"verdict": "taken"
}
]
}

The unresolved verdict means that the source did not give a definitive answer. Review its reason before making a decision. Availability can change after the check time, so treat these rows as point-in-time signals.

💳 Pricing

This Actor uses pay-per-event pricing. The primary event is username-platform-availability-checked, which represents one check for one submitted username on one supported platform. Review the current Apify pricing panel for the live price and billing details.

🔌 Integrations

Open the default dataset in Apify, read the rows through the Apify API, export them for another workflow, or schedule the same one-list, one-scope check again. A later run is a new point-in-time check and does not create historical change tracking.

❓ FAQ

What does available or taken mean?

It is the source's definitive availability signal for that platform at the time of the check. It does not prove account ownership or guarantee that the status will stay the same.

What does unresolved mean?

The source response was not clear enough to classify the username. The Actor keeps the result as unresolved and includes a reason when available instead of guessing.

Why is a username marked invalid?

The platform rejected the candidate under its username rules or returned an invalid-input response. Read the platform result's reason when one is available.

Can I check a full Gmail address?

Yes. Add a full address such as name@gmail.com to candidates. The result keeps the submitted candidate and reports the normalized handle used for checks.

Can I check several usernames and platforms together?

Yes. Add several candidates and use either a selected platform list or the full supported catalog. One scope applies to every candidate in the run.

Does this Actor create or reserve accounts?

No. It only checks public availability signals. It does not create, reserve, claim, sign in to, or manage accounts or handles.

Is this an official platform tool, and does it prove ownership?

No. It is an independent Apify Actor. A public availability signal is not proof of ownership, inbox access, or account control.

No. The results help with operational naming research, but they are not trademark, legal, domain-registration, or business-name clearance.

📝 Changelog

v0.0 (21-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é