# Bulk Username Checker: GitHub, GitLab, Docker (`comall-agency/username-osint-checker`) Actor

Check whether a username exists on GitHub, GitLab, Docker Hub, Keybase and Hacker News in a single call, through each platform's own public API. No login and no scraping. A platform that times out is reported as unknown, never collapsed into not-found.

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

## Pricing

$15.20 / 1,000 username checkeds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Username OSINT Checker — GitHub, GitLab, Docker Hub, Keybase, Hacker News

Find out whether a username is taken across five developer-facing
platforms in a single call. Each platform is queried through **its own
public API** — no login, no scraping, no anti-bot circumvention.

### Duplicates are checked once and charged once

A username repeated in the same batch is checked **once**. Every submitted
line still gets its own output row, in your original order, so the result
joins straight back onto your list — the repeat carries `is_duplicate: true`
and **is not charged**.

Here that matters more than on a pure-computation tool: every username costs
**five outbound HTTP calls**, one per platform. Not repeating them saves your
run time and avoids sending pointless traffic to GitHub, GitLab, Docker Hub,
Keybase and Hacker News.

**Capitalisation is kept, deliberately.** GitHub and GitLab treat usernames
case-insensitively, but Hacker News does not — folding case here would merge
two names that are genuinely different on at least one of the five platforms.
`Torvalds` and `torvalds` are therefore checked separately.

The run also writes a `SUMMARY` record to the key-value store: how many
usernames were submitted, how many were unique, how many duplicates were
skipped and how many HTTP calls that saved.

### What it does

For each username, five checks run in parallel:

| Platform | What is checked |
|---|---|
| **GitHub** | whether the user account exists |
| **GitLab** | whether the username is in use |
| **Docker Hub** | whether the account exists |
| **Keybase** | whether the identity is registered |
| **Hacker News** | whether the user profile exists |

A platform that times out or errors is reported as **unknown**, never as
"not found". That distinction matters: for name-availability research,
silently turning an outage into "free to take" is the one error that
actually costs you something.

Usernames are format-checked first — letters, digits, underscore, dot and
hyphen only.

### Use cases

- **Brand and project naming** — before committing to a name, see where
  the handle is already taken across the platforms developers actually
  use.
- **OSINT and due diligence** — map a known handle's presence across
  developer platforms from public endpoints only.
- **Account-handle cleanup** — bulk-check a list of handles your
  organisation believes it owns.

### Input

```json
{ "usernames": ["octocat", "torvalds"] }
```

### Output (one row per username)

```json
{
  "username": "octocat",
  "checked_at": "2026-08-27T05:42:48.242Z",
  "verdict": "checked",
  "github_found": true,
  "gitlab_found": false,
  "dockerhub_found": false,
  "keybase_found": true,
  "hackernews_found": true,
  "found_count": 3,
  "unknown_count": 0
}
```

### Pricing

Pay-per-event: **$0.0152 per username checked**, charged once per
username once the five platform checks have completed — a single price
covering all five, whatever each one returns.

### Limitations — read this before you buy

- **Five platforms only**, all developer-facing: GitHub, GitLab, Docker
  Hub, Keybase, Hacker News. There is deliberately no social-network
  coverage here — those platforms' terms of service forbid this kind of
  automated lookup, and building on top of that would put your account at
  risk as much as ours.
- **"Not found" is not a legal availability guarantee.** A free handle can
  still be reserved, trademarked, or held by a suspended account.
- **`unknown` means unknown.** A platform that is down or rate-limiting
  returns `unknown`, and it is never collapsed into "not found".
- Only public endpoints are used, so only public profiles are visible.

### FAQ

**Why is one platform `unknown` while the others answered?**
That platform timed out or rate-limited the request. Re-running the
username usually resolves it.

**Does this check social networks?**
No, by design — see Limitations.

### Related Actors

Part of the same family of small, single-purpose checkers on this account —
each does one thing, priced per item checked:

- [IBAN Validator & Formatter](https://apify.com/comall-agency/iban-validator-formatter) — ISO 13616 length + mod-97 checksum, fully offline.
- [Card Number Validator (Luhn)](https://apify.com/comall-agency/card-number-validator) — Luhn checksum and card-network detection, output is masked.
- [Barcode Check-Digit Validator](https://apify.com/comall-agency/barcode-checkdigit-validator) — EAN-13, EAN-8 and UPC-A check digits.
- [EU VAT Number Checker](https://apify.com/comall-agency/eu-vat-checker) — official VIES lookup.
- [Email Address Validator](https://apify.com/comall-agency/email-address-validator) — syntax, domain and MX checks.
- [Password Strength Checker](https://apify.com/comall-agency/password-strength-checker) — entropy scoring, never returns the password.
- [Cron Expression Validator](https://apify.com/comall-agency/cron-expression-tool) — plain-English description and next run times.
- [French E-Invoice Partner Resolver](https://apify.com/comall-agency/fr-einvoice-partner-resolver) — SIRET / SIREN / VAT resolution.

# Actor input Schema

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

Usernames to check across GitHub, GitLab, Docker Hub, Keybase and Hacker News. Letters, digits, underscore, dot and hyphen only.

## Actor input object example

```json
{
  "usernames": [
    "octocat",
    "torvalds",
    "octocat"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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": [
        "octocat",
        "torvalds",
        "octocat"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("comall-agency/username-osint-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": [
        "octocat",
        "torvalds",
        "octocat",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("comall-agency/username-osint-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": [
    "octocat",
    "torvalds",
    "octocat"
  ]
}' |
apify call comall-agency/username-osint-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,comall-agency/username-osint-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/ME3GL9re3JOJJECcE/builds/MoowckRopSIRDES20/openapi.json
