SearchIn API
Integrate any OSINT provider's data into your own workflow. One key and one credit balance cover LeakRadar, OSINT Industries, Facecheck.id, and every other source we support — pay only for the searches you run.
Quick start
- Sign in and create an API key at Dashboard → API keys. Copy the secret immediately — it is shown only once.
- Send requests to
https://apiv1.osintverse.comwith thex-api-keyheader. - Call
GET /v1/providersto see valid provider/input combinations and pricing, thenPOST /v1/search.
Base URL
Interactive docs: Swagger · ReDoc · OpenAPI JSON
Authentication
Authenticated endpoints require an API key in the x-api-key header. Keys are prefixed with ov_ and rate-limited to 1,000 requests per day per key.
x-api-key: ov_your_secret_key
Content-Type: application/jsonEndpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /health | None | Service health check. |
| GET | /v1/providers | None | Provider catalog with supported input types and pricing. |
| POST | /v1/search | Required | Create and run an OSINT search. |
| GET | /v1/search/{id} | Required | Poll async search status and retrieve results. |
Search workflow
Request & response examples
POST /v1/search — request
{
"provider": "leakradar-lite",
"input_type": "email",
"query": "[email protected]"
}Completed response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"provider": "leakradar-lite",
"input_type": "email",
"query": "[email protected]",
"cost_usd": "1.00",
"balance_after": "9.00",
"result": {
"sources": [
{
"name": "leakradar",
"type": "email",
"total": 3,
"total_unlocked": 2,
"page": 1,
"page_size": 100,
"items_returned": 3,
"auto_unlock_points_consumed": 1
}
],
"matches": [
{
"type": "leak",
"id": "3f1a9c2b7e",
"url": "https://example.com/login",
"username": "[email protected]",
"username_masked": "u***@example.com",
"password": "P@ssw0rd123",
"password_strength": 6,
"unlocked": true,
"is_email": true,
"added_at": "2025-01-15T10:30:00Z",
"status": "new"
}
]
},
"error": null,
"poll_url": null
}Running response (poll again)
{
"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"
}FaceCheck completed response
{
"id": "c1e823d0-c8be-486a-aad0-4405a6326c88",
"status": "completed",
"provider": "facecheck",
"input_type": "image",
"query": "https://example.com/photo.jpg",
"cost_usd": "0.50",
"balance_after": "9.00",
"result": {
"sources": [
{
"name": "facecheck",
"type": "image",
"provider": "facecheck",
"testing_mode": false,
"total_results": 300,
"returned": 2,
"max_score": 97,
"search_id": "c1e823d0-c8be-486a-aad0-4405a6326c88"
}
],
"matches": [
{
"score": 97,
"url": "https://sports.yahoo.com/article/example",
"thumbnail": "data:image/webp;base64,..."
},
{
"score": 94,
"url": "https://www.instagram.com/p/example/",
"thumbnail": "data:image/webp;base64,..."
}
],
"raw": null
},
"error": null,
"poll_url": null
}Search status values
| Status | Meaning |
|---|---|
| completed | Search finished. Results are in result.matches and result.sources. |
| running | Still processing. Poll GET /v1/search/{id} every ~2 seconds. |
| failed | Insufficient balance or request rejected before charging. |
| refunded | Upstream provider failed after billing. Balance was restored. |
Provider matrix & pricing
Invalid provider + input_type pairs return HTTP 422. All providers use flat per-query pricing. LeakRadar Lite / Plus / Pro unlock up to 1,000 / 10,000 / 50,000 credentials. Pricing loaded live from the API.
| Input type | Provider | Price |
|---|---|---|
| LeakRadar Lite | $1.00 (up to 1,000 unlocks) | |
| LeakRadar Plus | $5.00 (up to 10,000 unlocks) | |
| LeakRadar Pro | $20.00 (up to 50,000 unlocks) | |
| LeakOSINTbot | $0.20 | |
| OSINT Industries | $0.60 | |
| username | LeakRadar Lite | $1.00 (up to 1,000 unlocks) |
| username | LeakRadar Plus | $5.00 (up to 10,000 unlocks) |
| username | LeakRadar Pro | $20.00 (up to 50,000 unlocks) |
| username | LeakOSINTbot | $0.20 |
| username | OSINT Industries | $0.60 |
| phone | OSINT Industries | $0.60 |
| domain | LeakRadar Lite | $1.00 (up to 1,000 unlocks) |
| domain | LeakRadar Plus | $5.00 (up to 10,000 unlocks) |
| domain | LeakRadar Pro | $20.00 (up to 50,000 unlocks) |
| domain | OSINT Industries | $0.60 |
| name | OSINT Industries | $0.60 |
| name | Facecheck.id | $0.50 |
| image | Facecheck.id | $0.50 |
| image | Picarta.ai | $0.50 |
| ip | OSINT Industries | $0.60 |
HTTP error codes
Errors return { "detail": "message" }. Validation errors may include an errors array.
| Code | Meaning |
|---|---|
| 401 | Missing, invalid, disabled, or expired API key. |
| 403 | Account is banned. |
| 404 | Search not found or not owned by your account. |
| 422 | Invalid request body, query validation, or provider/input_type pair. |
| 502 | Upstream provider or API key verification failure. |
| 503 | API key verification is not configured on the server. |
Code examples
Create search
curl -X POST "https://apiv1.osintverse.com/v1/search" \
-H "Content-Type: application/json" \
-H "x-api-key: ov_your_api_key" \
-d '{"provider":"leakradar-lite","input_type":"email","query":"[email protected]"}'Poll async search
curl "https://apiv1.osintverse.com/v1/search/550e8400-e29b-41d4-a716-446655440000" \
-H "x-api-key: ov_your_api_key"Ready to integrate?
Create an API key, explore the interactive Swagger docs, or run your first search from the SearchIn dashboard.