OSINTverse

Search workflow

Synchronous SearchIn responses versus async FaceCheck polling.

Every search returns a job object with id, status, cost_usd, and balance_after.

Status values

StatusMeaning
completedFinished. Results are in result.matches and result.sources.
runningStill processing. Poll GET /v1/search/:id every ~2 seconds.
failedInsufficient balance or request rejected before charging.
refundedUpstream provider failed after billing. Balance was restored.

Synchronous providers

LeakRadar, OSINT Industries, Predicta Search, DeHashed, Snusbase, Whoxy, WhoisXML, SecurityTrails, Picarta, and LeakOSINTbot typically complete in the POST /v1/search response. Check status anyway — treat running as a signal to poll.

Async polling (FaceCheck)

Facecheck.id image searches often return running with poll_url. Keep calling GET /v1/search/:id until completed, failed, or refunded.

Running response
{
  "id": "550e8400-e29b-41d4-a716-446655440001",
  "status": "running",
  "provider": "facecheck",
  "input_type": "image",
  "query": "https://example.com/photo.jpg",
  "cost_usd": "0.50",
  "balance_after": "9.45",
  "result": null,
  "error": null,
  "poll_url": "/v1/search/550e8400-e29b-41d4-a716-446655440001"
}

Completed FaceCheck matches use score, url, and thumbnail (often a data URI).

Do not busy-loop

Poll about every two seconds. Daily key rate limits still apply to poll requests.

Result shape

result.sources describes what the adapter fetched (counts, paging, lookup type). result.matches is the normalized list your UI or pipeline should consume. Provider-specific fields stay on each match — see provider guides.

LeakRadar unlocks

LeakRadar Lite / Plus / Pro charge a flat per-query price and auto-unlock credentials up to 1,000 / 10,000 / 50,000 items. Caps live with pricing in the catalog.

POST /v1/search/bulk runs a cartesian product of queries[] × providers[] in one request.

LimitValue
Max queries50
Max jobs (queries × providers)100
Bulk request
{
  "input_type": "email",
  "queries": ["[email protected]", "[email protected]"],
  "providers": ["leakradar-lite", "dehashed"]
}

The response includes batch_id, estimated_cost_usd (list prices before free-lookup discounts), summary, and a searches[] array (one job per pair, queries outer / providers inner). Partial success is normal — inspect each job’s status / error.

Poll any running job with GET /v1/search/:id the same way as a single search. Each job counts toward the daily API key rate limit even though bulk uses one HTTP call.

At most one gifted free lookup per provider is used in a personal bulk batch; remaining jobs charge the wallet.

On this page