Username Monitor: Availability Checker + Recurring Alerts
Pricing
from $0.50 / 1,000 platform checkeds
Username Monitor: Availability Checker + Recurring Alerts
Bulk username availability checking across GitHub, GitLab, Bluesky, Farcaster, npm, PyPI, crates.io, Docker Hub, Spotify, SoundCloud, Vimeo, YouTube, and X. Optional monitor mode alerts via webhook/Slack when a username's status changes.
Pricing
from $0.50 / 1,000 platform checkeds
Rating
0.0
(0)
Developer
Donovan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Username Monitor
Bulk username availability checking across GitHub, GitLab, Bluesky, Farcaster, npm, PyPI, crates.io, Docker Hub, Spotify, SoundCloud, Vimeo, YouTube, and X — plus optional monitor mode: get alerted when a username's status actually changes, instead of re-checking it by hand.
Built for founders naming a product, brand-protection teams, OSINT researchers, and security teams watching for namespace/typosquat risk on package registries.
What sets this apart
Every username checker on the Apify Store does a one-shot lookup. None of them do recurring monitoring — verified against the eight closest competitors before building this (easyapi, sync-network, corent1robert, maximedupre, parsebird, maged120, dev00, goat255):
- Monitor mode. Pair with an Apify Schedule and this actor remembers the last result per username/platform, diffs against the current check, and only reports (and charges for) an actual status change — available → taken, or taken → available. Nobody else in this category does this.
- Webhook + Slack alerts, no code required. Fill in a URL, get a POST when something changes. This is deliberately the same no-code pattern the top competitors in adjacent categories (website-change-monitor actors) already ship — Apify Store buyers are a mix of developers integrating via API and non-technical users configuring alerts through the Console, not developers exclusively.
- A curated platform list, not a padded one. The highest-user-count competitor in this category (80+ platforms) is largely a copy of the classic Sherlock OSINT tool's site list — Blip.fm, Periscope, LiveLeak, MySpace, and other platforms that are dead or irrelevant in 2026. Every platform here was hit with a live test today against a known-taken and a known-free username before being included. See "What's not included" below for what got cut and why.
- A dev-namespace bundle nobody else covers. npm, PyPI, crates.io, and Docker Hub username/package availability — real typosquat and supply-chain-risk signal for security teams, and genuinely uncontested in this category.
Platforms
| Platform | Signal | Notes |
|---|---|---|
github | 200 taken / 404 free | |
gitlab | 200 taken / 3xx free | GitLab redirects unknown handles rather than 404ing them |
bluesky | 200 taken / 400 free | AT Protocol's own resolveHandle endpoint, no auth |
farcaster | body-based | Always returns 200 — availability comes from whether the fname registry's transfers array is empty |
npm | 200 taken / 404 free | Checks package-name availability, the actual typosquat signal |
pypi | 200 taken / 404 free | |
crates_io | 200 taken / 404 free | Requires a descriptive User-Agent — crates.io rejects generic ones |
docker_hub | 3xx taken / 404 free | Opposite convention from GitLab — taken usernames redirect, free ones 404 |
spotify | 200 taken / 404 free | |
soundcloud | 200 taken / 404 free | |
vimeo | 200 taken / 404 free | |
youtube | 200 taken / 404 free | Checks the newer @handle format |
twitter | 200 taken / 404 free | Best-effort. X rate-limits and bot-blocks aggressively at any real volume — confirmed locally, two sequential checks were enough to trigger a 503. Don't rely on this for bulk or high-frequency monitor-mode use until it's been stress-tested further. |
What's not included, and why
- Instagram, TikTok, Twitch, Steam, Pinterest, Roblox — all tested live today and all return
200regardless of whether the username exists. They're JS-rendered SPAs that don't 404 at the HTTP level; a real check would need body-text scraping (fragile, breaks on markup changes) or an internal API endpoint that wasn't verified. Not shipping a check that looks like it works but doesn't. - Reddit, Ko-fi — both returned
403on every request tested today, taken or free. Blocked outright at the HTTP level; would needimpitor a browser to get past, which is real added cost, not free. - Discord — no public unauthenticated username-check endpoint exists. The only path is the registration flow, which is a captcha-protected multi-field POST, not something a public multi-tenant actor can safely probe.
Input
{"usernames": ["shipsatnight"],"platforms": [],"monitorMode": true,"monitorName": "brand-watch","webhookUrl": "","slackWebhookUrl": ""}
| Field | Type | Default | What it does |
|---|---|---|---|
usernames | string[] | required | With or without a leading @. Duplicates removed automatically. |
platforms | string[] | all | Which platforms to check. Omit to check everything. |
monitorMode | boolean | false | Compare this run against the last run under the same monitorName; report and alert only on changes. |
monitorName | string | "default" | Namespaces saved state so multiple monitors don't collide. |
webhookUrl | string | — | POSTed a JSON payload on any detected status change. |
slackWebhookUrl | string | — | Posts a formatted Slack message on any detected status change. |
Output
One record per username in the default dataset:
{"username": "shipsatnight","checked_at": "2026-08-04T14:00:00.000Z","platforms": [{ "platform": "github", "status": "taken", "profile_url": "https://github.com/shipsatnight" },{ "platform": "npm", "status": "available", "profile_url": null }],"changed_since_last_run": [{ "platform": "npm", "previous_status": "taken", "current_status": "available" }]}
changed_since_last_run is only present in monitor mode, and only when something actually changed. A run-level summary (usernames processed, checks/alerts charged, whether the run stopped early on a spending cap) is written to the key-value store under RUN_SUMMARY.
Monitor mode mechanics
Apify actors don't run continuously — monitor mode is a Schedule (cron, configured in the Console, no code) that re-runs this actor periodically. Each run loads the last known status per username/platform from a named key-value store (not the run-scoped default one — the default store doesn't survive between separate Schedule-triggered runs), diffs it against the current check, and only reports/charges/alerts on an actual flip. A failed check (unknown) never counts as a change in either direction, so a transient network blip doesn't fire a false alert.
Pricing
Pay-per-event: $0.00005 actor start, $0.0005 per platform successfully checked, $0.002 per alert fired in monitor mode. Failed/unknown checks aren't charged — matches the norm this category has already converged on (competitors explicitly advertise "rate-limited or unknown results are never charged").
Status
Built and locally verified — delta detection and webhook delivery confirmed across simulated status-flip test runs. Not yet pushed, monetized, or published to the Apify Store.