Breach & Leak Data
Database Search
Search stealer-log and combo-list collections by e-mail or domain
GET
/
api
/
database-search
curl "https://www.osintcat.net/api/database-search?query=user%40example.com&type=email" \
-H "X-API-KEY: YOUR_API_KEY"
import requests
url = "https://www.osintcat.net/api/database-search"
params = {"query": "user@example.com", "type": "email"}
headers = {"X-API-KEY": "YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers, timeout=60)
print(response.status_code, response.json())
const response = await fetch("https://www.osintcat.net/api/database-search?query=user%40example.com&type=email", {
headers: { "X-API-KEY": "YOUR_API_KEY" },
});
console.log(response.status, await response.json());
<?php
$curl = curl_init("https://www.osintcat.net/api/database-search?query=user%40example.com&type=email");
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-KEY: YOUR_API_KEY"],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
echo $status . " " . $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://www.osintcat.net/api/database-search?query=user%40example.com&type=email", nil)
req.Header.Set("X-API-KEY", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode, string(body))
}
{
"results": [
{
"url": "https://accounts.example.org/login",
"login": "user@example.com",
"password": "hunter2",
"date": "2025-11-02"
}
],
"results_count": 1,
"query": "user@example.com",
"type": "email",
"execution_time": "0.84s",
"status": "success"
}
Searches stealer-log and combo-list collections for an e-mail address or a domain.
See Errors for the responses every endpoint can return.
Parameters
string
required
The e-mail address or domain.
string
email or domain. Detected from query when left out.Headers
string
required
Your API key.
Usage
Counts as one lookup against your plan’s daily allowance (Max: unlimited). When the allowance is used up, the lookup can continue at a per-lookup price charged to your balance (the module’s page in the dashboard shows the price); a lookup that finds nothing is not charged.Example request
curl "https://www.osintcat.net/api/database-search?query=user%40example.com&type=email" \
-H "X-API-KEY: YOUR_API_KEY"
import requests
url = "https://www.osintcat.net/api/database-search"
params = {"query": "user@example.com", "type": "email"}
headers = {"X-API-KEY": "YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers, timeout=60)
print(response.status_code, response.json())
const response = await fetch("https://www.osintcat.net/api/database-search?query=user%40example.com&type=email", {
headers: { "X-API-KEY": "YOUR_API_KEY" },
});
console.log(response.status, await response.json());
<?php
$curl = curl_init("https://www.osintcat.net/api/database-search?query=user%40example.com&type=email");
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-KEY: YOUR_API_KEY"],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
echo $status . " " . $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://www.osintcat.net/api/database-search?query=user%40example.com&type=email", nil)
req.Header.Set("X-API-KEY", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode, string(body))
}
SDK example
The same request with the official SDKs. Each one reads your key fromOSINTCAT_API_KEY.
import { OsintCatClient } from "osintcat";
const client = new OsintCatClient(); // reads OSINTCAT_API_KEY
const result = await client.breach.databaseSearch({
query: "user@example.com"
});
console.log(result);
from osintcat import OsintCat
client = OsintCat() # reads OSINTCAT_API_KEY
result = client.breach.database_search(
query="user@example.com",
)
print(result)
package main
import (
"context"
"fmt"
osintcat "github.com/OsintCatHQ/osintcat-go"
osintcatclient "github.com/OsintCatHQ/osintcat-go/client"
)
func main() {
client := osintcatclient.NewClient() // reads OSINTCAT_API_KEY
request := &osintcat.DatabaseSearchBreachRequest{
Query: "user@example.com",
}
result, err := client.Breach.DatabaseSearch(context.Background(), request)
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", result)
}
<?php
require __DIR__ . '/vendor/autoload.php';
use OsintCat\OsintCatClient;
use OsintCat\Breach\Requests\DatabaseSearchBreachRequest;
$client = new OsintCatClient(); // reads OSINTCAT_API_KEY
$result = $client->breach->databaseSearch(
new DatabaseSearchBreachRequest([
'query' => 'user@example.com',
]),
);
echo json_encode($result, JSON_PRETTY_PRINT), PHP_EOL;
Response
array
Matching entries (typically a URL, login and password, and when it was collected).
number
Number of entries.
string
The query searched for.
string
email or domain.string
Time the search took.
string
success.{
"results": [
{
"url": "https://accounts.example.org/login",
"login": "user@example.com",
"password": "hunter2",
"date": "2025-11-02"
}
],
"results_count": 1,
"query": "user@example.com",
"type": "email",
"execution_time": "0.84s",
"status": "success"
}
Errors
| Status | Error | When |
|---|---|---|
| 424 | Upstream error | The search backend answered with an error. Not charged. |
| 424 | timeout error | The search backend did not answer in time. Not charged. |
Was this page helpful?
⌘I
curl "https://www.osintcat.net/api/database-search?query=user%40example.com&type=email" \
-H "X-API-KEY: YOUR_API_KEY"
import requests
url = "https://www.osintcat.net/api/database-search"
params = {"query": "user@example.com", "type": "email"}
headers = {"X-API-KEY": "YOUR_API_KEY"}
response = requests.get(url, params=params, headers=headers, timeout=60)
print(response.status_code, response.json())
const response = await fetch("https://www.osintcat.net/api/database-search?query=user%40example.com&type=email", {
headers: { "X-API-KEY": "YOUR_API_KEY" },
});
console.log(response.status, await response.json());
<?php
$curl = curl_init("https://www.osintcat.net/api/database-search?query=user%40example.com&type=email");
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-KEY: YOUR_API_KEY"],
]);
$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_RESPONSE_CODE);
curl_close($curl);
echo $status . " " . $response;
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://www.osintcat.net/api/database-search?query=user%40example.com&type=email", nil)
req.Header.Set("X-API-KEY", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode, string(body))
}
{
"results": [
{
"url": "https://accounts.example.org/login",
"login": "user@example.com",
"password": "hunter2",
"date": "2025-11-02"
}
],
"results_count": 1,
"query": "user@example.com",
"type": "email",
"execution_time": "0.84s",
"status": "success"
}
