# Username Checker: Availability on 50 Sites (`scrapemint/username-checker`) Actor

Check a username or brand handle on 50 sites: GitHub, Twitch, TikTok, Telegram, Bluesky, Pinterest, Snapchat, Steam, Medium, Substack, Roblox and more. Taken, available or unknown per site, with the profile link. For handle checks and brand protection. $0.0005 per check.

- **URL**: https://apify.com/scrapemint/username-checker.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Social media, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.50 / 1,000 site checks

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Username Checker: Availability on 50 Sites

Check a **username, brand name or handle** on **50 sites** at once. For every site you get **taken**, **available** or **unknown**, and the **profile link** where it is taken.

Sites covered:

- **Developer:** GitHub, GitLab, Bitbucket, Docker Hub, dev.to, Hacker News, Keybase, Codewars, Hugging Face, LeetCode, Lobsters, Launchpad, Scratch
- **Social:** Bluesky, Mastodon (mastodon.social), Telegram, Pinterest, Snapchat, TikTok, VK, Tumblr, Gravatar, Wikipedia, Disqus
- **Video and music:** Twitch, Dailymotion, SoundCloud, Bandcamp, Mixcloud
- **Gaming:** Steam, Chess.com, Lichess, Roblox, Minecraft, Speedrun.com, itch.io
- **Writing and creative:** Medium, Substack, WordPress.com, Wattpad, Dribbble, Flickr, DeviantArt
- **Other:** Duolingo, Trello, Patreon, Gumroad, About.me, OpenStreetMap, Pastebin

Every site uses a check that was tested from Apify's servers against a known account and a random name before shipping. When a site does not give a clear answer, the row says **unknown** and you are not charged for it.

No accounts, no API keys, no proxy. $0.0005 per answered check, no start fee.

### What you get per username and site

- `username`, `site`, `category`
- `status`: `taken`, `available` or `unknown`
- `profileUrl` (when taken), `checkedUrl`, `httpStatus`, `checkedAt`

The run summary lists, for each username, how many sites it is taken and available on, and where it is taken.

### Example input

Is a brand name free before you launch?

```json
{
  "usernames": ["acmeboards"]
}
```

Where does a creator have accounts? Only list the sites where the name is taken:

```json
{
  "usernames": ["mkbhd"],
  "onlyTaken": true
}
```

Developer platforms only, for three candidate project names:

```json
{
  "usernames": ["fastqueue", "quickq", "qflow"],
  "categories": ["developer"]
}
```

### Example output

```json
[
  { "username": "nike", "site": "GitHub", "category": "developer", "status": "taken", "profileUrl": "https://github.com/nike", "httpStatus": 200 },
  { "username": "nike", "site": "Twitch", "category": "video", "status": "taken", "profileUrl": "https://www.twitch.tv/nike", "httpStatus": 200 },
  { "username": "nike", "site": "Bluesky", "category": "social", "status": "available", "profileUrl": null, "httpStatus": 400 }
]
```

### Uses

- **Naming and launches:** check a product, company or project name across platforms before you commit
- **Brand protection:** see where your brand's handle is held, and by whom (follow the profile links)
- **Creator and company research:** find someone's other public profiles from one handle
- **Handle hunting:** test a list of candidate handles in one run

### Pricing

- **$0.0005** per site check with a taken or available answer (50 sites = $0.025 per username)
- Unknown answers are free. No start fee.

### Notes

- "Taken" means an account or page with exactly that name exists. Some sites match names without case (GitHub, Twitch); a few are case-sensitive.
- Bluesky is checked as `name.bsky.social`; custom-domain handles are not covered. Mastodon is checked on mastodon.social only.
- Instagram, X/Twitter, Facebook, LinkedIn, Reddit and YouTube are not included: they do not answer reliably without a login or proxy.
- Only use this on public profile existence. It does not read private data.

# Actor input Schema

## `usernames` (type: `array`):

One or more usernames or handles to check, e.g. acmecorp, myband, janedoe_art. Letters, digits, dot, dash and underscore.

## `categories` (type: `array`):

Optional. Any of: developer, social, video, music, gaming, writing, creative, other. Empty checks all 50 sites.

## `sites` (type: `array`):

Optional. Site names, e.g. GitHub, Twitch, Bluesky. Empty checks every site.

## `onlyTaken` (type: `boolean`):

Output only the sites that have an account with the username (profile finder). Off lists every site with taken, available or unknown (availability check).

## Actor input object example

```json
{
  "usernames": [
    "openai"
  ],
  "categories": [],
  "sites": [],
  "onlyTaken": false
}
```

# Actor output Schema

## `checks` (type: `string`):

Username, site, category, taken / available / unknown, profile URL.

## `summary` (type: `string`):

Per username: how many sites it is taken, available and unknown on, and where it is taken.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "usernames": [
        "openai"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/username-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "usernames": ["openai"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/username-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "usernames": [
    "openai"
  ]
}' |
apify call scrapemint/username-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/username-checker"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EPr3hDb535a6NwdYb/builds/UuGlQ8N5xUO9fenAv/openapi.json
