Social Handle Checker - IG, TikTok, X, Snapchat, Twitch, Github
Pricing
from $4.99 / 1,000 results
Social Handle Checker - IG, TikTok, X, Snapchat, Twitch, Github
Bulk-check username availability across 10 platforms — Instagram, TikTok, Facebook, Pinterest, YouTube, X, Threads, GitHub, Snapchat, and Twitch — in one run. Built for founders and agencies picking a brand name. Export JSON/CSV.
Pricing
from $4.99 / 1,000 results
Rating
4.6
(2)
Developer
Corentin Robert
Maintained by CommunityActor stats
1
Bookmarked
145
Total users
23
Monthly active users
7 days ago
Last modified
Categories
Share
Social Handle Checker
Bulk-check username availability across Instagram, TikTok, Facebook, Pinterest, YouTube (@handle), X (Twitter), Threads, GitHub, Snapchat, and Twitch in a single run. Input: a list of candidate handles (no @). Output: one dataset row per handle with yes / no / error / not_checked per platform — ideal when you are naming a company, product, or personal brand.
Built for: brand naming · pre-launch social audits · agency pitch research · trademark-style availability scans (informal, not legal advice)
What does this Actor do?
The Actor fans out each handle across the platforms you select (default: all ten). It uses:
| Platform | Method (summary) |
|---|---|
www.instagram.com/api/v1/users/web_profile_info/ — 200 = taken, 404 = free, 401 = taken (private account). 1 dedicated fresh residential IP per handle via got-scraping (Chrome TLS fingerprint). Zero warmup. | |
| TikTok | Public profile URL + ProfilePage / status signals in HTML. |
facebook.com/{handle} — browser-like headers, www + m.facebook.com fallbacks; residential proxy on Apify to reduce HTTP 400 blocks. | |
Public RSS pinterest.com/{handle}/feed.rss (200 + XML = taken; 404 = free), then HTML fallback. | |
| YouTube | youtube.com/@{handle} — 404 = free, channelMetadataRenderer in HTML = taken. |
| X (Twitter) | Public oEmbed API (publish.twitter.com/oembed?url=https://twitter.com/{handle}) — 200 + embed HTML = taken, 404 = free. No JS scraping. |
| Threads | Same web_profile_info endpoint as Instagram — Meta shares @username across both. Shares Instagram's residential proxy pool. |
| GitHub | api.github.com/users/{handle} — 200 = taken, 404 = free. Public REST API, no auth needed. Extremely reliable. |
| Snapchat | story.snapchat.com/@{handle} — 200 = taken, 404 = free. Static CDN page, no JS required. |
| Twitch | twitch.tv/{handle} — page title "{name} - Twitch" = taken, "Twitch" alone = free. No auth needed. |
Instagram and Threads use got-scraping (Chrome JA3/TLS fingerprint) — no cookies or session tokens required. GitHub, Snapchat, and Twitch use public APIs with standard GET requests — no proxy needed. Some sites return login walls or soft 404s — rows may show error; verify critical names manually.
LinkedIn is intentionally not included — public /in/{slug} URLs are not the same kind of vanity “handle” game as Instagram/TikTok; naming rules and availability are a poor fit for this Actor.
What data does it extract?
| Column | Meaning |
|---|---|
handle | Candidate string tested (without @). |
available_instagram | yes = appears free, no = taken, error = check failed, not_checked = platform omitted from run. |
available_tiktok | Same scale. |
available_facebook | Same scale (Facebook Page-style URL). |
available_pinterest | Same scale. |
available_youtube | Same scale (@handle). |
available_twitter | Same scale (X). |
available_threads | Same scale (Threads — inferred via Instagram username lookup). |
available_github | Same scale (GitHub username). |
available_snapchat | Same scale (Snapchat profile). |
available_twitch | Same scale (Twitch username). |
Download results as JSON, CSV, Excel, or HTML from the Dataset tab.
Input
Default: all platforms. Restrict platforms to save time and egress.
{"handles": [{ "handle": "mybrand" },{ "handle": "acme_corp" }],"platforms": ["instagram", "tiktok", "facebook", "pinterest", "youtube", "twitter", "threads", "github", "snapchat", "twitch"]}
Instagram + TikTok only (faster on small lists):
{"handles": ["brandname", "brand_name"],"platforms": ["instagram", "tiktok"]}
All input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
handles | Array | — | Handles without @. Items may be strings or { "handle": "..." }. |
platforms | Array | All 10 | Subset of: instagram, tiktok, facebook, pinterest, youtube, twitter, threads, github, snapchat, twitch. |
On Apify Cloud, Instagram and Threads checks use the residential proxy group by default; no extra input is required.
API-only (not shown in the Console input form): If you start runs via the API, you can still pass instagramCookies (array of { "name", "value" }) or proxyGroups (defaults to ["RESIDENTIAL"] when omitted).
Output example
[{"handle": "mybrand","available_instagram": "yes","available_tiktok": "no","available_facebook": "yes","available_pinterest": "yes","available_youtube": "no","available_twitter": "yes","available_threads": "yes","available_github": "yes","available_snapchat": "no","available_twitch": "yes"}]
Run log (Apify Console)
While a cloud run is executing, open Storage → Key-value store → RUN_LOG for the same structured lines as the live log (banners, Mode: phases, indented progress). The default store also exposes Run log (live) in the Actor Output tab.
How to use
- Open the Actor Input tab on Apify Console.
- List the handles you want to test (one per line, without
@). - Optionally narrow Platforms to check.
- Click Start.
- Open the Dataset tab and download JSON/CSV when the run finishes.
Local development
$npm install
Copy input.json.example to input.json and edit handles/platforms, then:
cp input.json storage/key_value_stores/default/INPUT.jsonapify run
Example input.json:
{"handles": [{ "handle": "testbrand" }],"platforms": ["youtube", "twitter", "tiktok"]}
Use apify run for local tests (not npm start alone — the CLI wires Apify storage and env).
Performance and cost
| Scenario | Handles | Approx. cost (No discount) |
|---|---|---|
| Brand smoke test | 5 handles | ~$0.05 |
| Agency batch | 50 handles | ~$0.50 |
| Portfolio scan | 1 000 handles | ~$10.00 |
| Large hunt | 5 000 handles | ~$50.00 |
Pricing: $10.00 / 1,000 results on the Free plan. Paid Apify plans get discounts — Starter $8.70, Scale $7.50, Business $6.20 per 1,000.
Each "result" = one handle checked across all selected platforms (up to 10). The per-handle cost is fixed regardless of how many platforms you select.
| Scenario | Notes |
|---|---|
| Few handles | Usually under 10 seconds. |
| Many handles + Instagram | Instagram checks run in parallel with 1 residential IP per handle — no warmup overhead. |
| Rate limits | Automatic retry on 429/590 with a fresh IP. Persistent errors shown as error in the dataset. |
Use cases
- Shortlist a brand name and see which @ handles are still free on major networks.
- Give clients a one-click “social username matrix” before incorporation or campaign launch.
- Periodically re-check a handle you want after a soft
error(networks change HTML often).
Legal / compliance
Only publicly reachable URLs and endpoints are queried. Handles and availability signals may relate to personal data on some platforms — use results in line with GDPR and local law. This Actor is not a legal or trademark search. For scraping legality context, see Apify’s blog.
FAQ
Why is a platform error?
Rate limits, bot challenges, timeouts, or HTML changes. Retry later or test that URL manually.
Is Instagram 100% accurate?
It reflects the signup attempt response; reserved or restricted names may still fail later in real signup.
How do I get help?
Use the Issues tab on the Actor page in the Apify store. For a bespoke scraper or integration, see Support below.
Support
For bug reports and general questions, use the Issues tab on the Actor page in the Apify Console.
Need a custom script or integration? Contact corentin@outreacher.fr for bespoke scraping or automation tailored to your workflow.
Ready? Paste your handle shortlist, choose platforms, and click Start.