Username Search API

Get Username Search data with one API

The Username OSINT API checks a username across platforms as clean JSON.

U
/username-osint/v1

1 active endpoint. Every call is 3 credits.

  • POST/username-osint/v1/username

What Username Search endpoints does ReefAPI ship?

1 live read endpoint. Read-only data API: no writes, no account actions, no dashboard access on the target site.

1 endpoints

username

3 cr

Find every public account for a username across 3000+ sites (powered by the Maigret OSINT eng…

required
username
optional
top, tags, sites, deep

Every parameter, every allowed value →

Username Search API

1 of 1 endpoints, ready to run

View docs ↗

Find every public account for a username across 3000+ sites (powered by the Maigret OSINT eng…

3 credits1 required · 1 optional
POST/username-osint/v1/username
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Username Search API works

Username Search is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 185 engines.

02
Call
POST /username-osint/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
3 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Four statuses, and why the numbers do not add up the way you expect

Every row in results[] carries one of four statuses, and only one of them is an assertion. summary.status_counts is the field to read before you trust a headline number, because a scan of 109 sites can easily contain twenty rows that never produced a verdict at all. Figures below come from live scans of torvalds and three handles we invented.

Field or statusMeasured on torvalds, top=100What it means
status "found"54 rows, each with a profile_urla public profile page answered for that handle; see the FAQ on sites that answer for anything
status "not_found"34 rows, no profile_urlno public profile was seen on that specific site, not proof the person has no account
status "rate_limited"18 rows, no profile_urlthe site throttled the check; no verdict either way, and it still counts toward platforms_checked
status "unknown"3 rowsthe site answered but not clearly enough to call it; also no verdict
summary.platforms_checked109found + not_found + rate_limited + unknown; 21 of the 109 produced no verdict at all
topasked for 100, sites_scanned came back 109top selects the N most popular sites, then aliases and mirrors of those sites are added on top
tagstags=coding, top=100 gave sites_scanned 79 and 22 found, category_distribution {coding: 22}filters to Maigret site tags such as gaming, social, coding, photo, music, forum, finance
sitessites=GitHub,Telegram,Reddit,Instagram gave sites_scanned 10naming 4 sites pulled in 6 mirror entries such as "GitHubGist [GitHub]" and "Pixwox [Instagram]"
input_type"username" for a handle, "steam_id" for 76561197960435530a Steam numeric id or profile URL is detected and routed to 4 Steam-specific checks
engine"maigret-0.6.1"the site definitions and their detection rules come from the Maigret project

An email address is refused rather than treated as a handle: a call with [email protected] returned ok:false with error.code INVALID_PARAM and the message "username must be 1-40 chars: letters, digits, . _ - (no spaces/@)". A handle that exists nowhere is not an error; a made-up handle returned ok:true with platforms_found 1 and status_counts {found: 1, not_found: 80, rate_limited: 18, unknown: 10}.

What people build with Username Search

The jobs this data is most often used for.

1

endpoints

3

credits per call

01

OSINT investigators call username to map a handle across social and dev platforms.

02

Fraud teams check an account's footprint during investigation.

03

Brand protection finds impersonator accounts using a brand handle.

What Username Search data costs

The cheapest call here is 3 credits, so $15/mo (Pro) buys 3,333 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 185 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/username-osint/v1/username \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"username":"torvalds","top":30}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/username-osint/v1/username",
    headers={"x-api-key": REEF_KEY},
    json={
  "username": "torvalds",
  "top": 30
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Username Search.

Get a free key →
Does status "found" prove the account exists?

Not on every site. We scanned three handles we invented and CNET returned status "found" with a constructed profile_url for all three, because that site answers with a page for any profile path. Nothing about the result marks it as weaker than a GitHub hit. Before you act on a single-site result, check the same site against a handle you know is unused. As a control, GitHub, Bit.ly and Instagram all correctly returned not_found for the same invented handles.

torvalds was found on 54 platforms. Is that 54 different services?

No. 18 of those 54 rows were regional editions of one gaming service, listed as OP.GG LoL North America, OP.GG LoL Europe West, OP.GG LoL Korea and so on, all in category gaming. Two more rows were GitHub and GitHubGist, which are the same account. If you are reporting a footprint size, deduplicate on the bracketed parent name in platform first, and read summary.category_distribution, which showed gaming 18 against coding 5 and social 4 for that scan.

How complete is one scan?

Partial by design, and the response quantifies it. In a 109-site scan, 18 sites came back rate_limited and 3 unknown, so 21 checks produced no verdict at all. The coverage_note says it directly: not_found means no public account was seen on the platforms checked, not proof none exists anywhere, and unknown means the platform did not give a clear answer this time. Re-run a scan if a specific platform matters, since which sites throttle varies between runs.

I set top to 100 but sites_scanned says 109.

top selects the N most popular sites from the ranked set, and then mirror and alias entries attached to those sites are scanned as well, which is why the final count runs over. The same effect is much larger with the sites parameter: naming four platforms produced a 10-site scan, adding entries like GitHubGist [GitHub], coder.social [GitHub], ImgInn [Instagram], Pixwox [Instagram], Dumpor [Instagram] and instaprofi.ru [Instagram]. Read sites_scanned and summary.platforms_checked as the true scope of what was run.

Are Reddit, Instagram, X and TikTok covered?

Not in the default popularity set. The coverage_note states that login-only platforms are excluded so they are never reported as a false match. You can still request them by name through the sites parameter, and in that mode they answered: a measured scan naming GitHub, Telegram, Reddit and Instagram returned Instagram as found for torvalds, and the same explicit scan returned Instagram not_found for two invented handles. Treat those results as usable but worth a second check, since login-walled sites are exactly the ones whose logged-out pages change behavior.

Can I search by tag instead of scanning everything?

Yes, and it is the cheapest way to get a usable answer. A measured scan with tags=coding returned sites_scanned 79 and 22 found, all in category coding, including GitHub, BitBucket, Gitea, Docker Hub, NPM, RubyGems, HuggingFace, StackOverflow, LeetCode and Codewars. category_distribution came back as a single bucket, {coding: 22}, which makes the result far easier to report than a mixed scan. Tags are the Maigret ones: gaming, social, coding, photo, music, forum, finance and country codes such as us and ru.

What happens if I pass a Steam ID instead of a handle?

It is detected and routed. A call with 76561197960435530 returned input_type "steam_id" rather than "username", scanned 4 Steam-specific entries instead of the full popularity set, and returned Steam (by id) [Steam] as found with profile_url https://steamcommunity.com/profiles/76561197960435530. The other three Steam entries came back rate_limited on that run. A steamcommunity.com/profiles/ URL is accepted the same way.

What does a completely unused handle return?

ok:true with an almost empty summary, not an error. A handle we invented returned platforms_checked 109, platforms_found 1, found_platforms ["CNET"] and status_counts {found: 1, not_found: 80, rate_limited: 18, unknown: 10}. The single hit is the always-answers site described above. So the practical read of a clean scan is platforms_found at or near zero once you have discounted the sites that answer for anything, with the rate_limited count telling you how much of the scan is simply missing.

What is the Username Search API?

Username Search API is a ReefAPI endpoint group for username search It returns live JSON through POST requests under /username-osint/v1.

Is the Username Search API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Username Search calls use the same shared credit balance as every other ReefAPI engine.

Do I need an Username Search login or account?

No login to Username Search is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Username Search data?

The page example is captured from a live username call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Username Search API use?

Username Search actions currently cost 3 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Username Search from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call username-osint actions with the same key, credit pool and JSON envelope used by normal REST requests.

10 Social Media APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Username Search, you are one call away from the rest of the category — no second contract, no second integration.

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 184 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts.