Your GET endpoint for domain stats
curl --request GET \
--url https://api.projectdiscovery.io/v1/leaks/stats/domain \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.projectdiscovery.io/v1/leaks/stats/domain"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.projectdiscovery.io/v1/leaks/stats/domain', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.projectdiscovery.io/v1/leaks/stats/domain",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.projectdiscovery.io/v1/leaks/stats/domain"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.projectdiscovery.io/v1/leaks/stats/domain")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.projectdiscovery.io/v1/leaks/stats/domain")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"leak_devices_count": [
{
"devices": 123
}
],
"leak_customers_count": [
{
"customers": 123
}
],
"leak_user_count": [
{
"user": 123
}
],
"leak_employees_count": [
{
"employees": 123
}
],
"combolist_exposure": [
{
"combolist_exposure": 123
}
],
"leak_country_stats": [
{
"Country": "<string>",
"CredentialsCount": 123
}
],
"top_used_urls_by_customers": [
{
"count": 123,
"url": "<string>"
}
],
"top_used_urls_by_employees": [
{
"count": 123,
"url": "<string>"
}
],
"top_used_urls_by_user": [
{
"count": 123,
"url": "<string>"
}
],
"leak_customers_timeline": [
{
"CredentialsCount": 123,
"Month": 123,
"Year": 123
}
],
"leak_user_timeline": [
{
"CredentialsCount": 123,
"Month": 123,
"Year": 123
}
],
"leak_employees_timeline": [
{
"CredentialsCount": 123,
"Month": 123,
"Year": 123
}
],
"customers_sample_data": [
{
"password": "<string>",
"username": "<string>",
"url": "<string>",
"country": "<string>",
"log_date": "<string>"
}
],
"employees_sample_data": [
{
"password": "<string>",
"username": "<string>",
"url": "<string>",
"country": "<string>",
"log_date": "<string>"
}
],
"user_sample_data": [
{
"password": "<string>",
"username": "<string>",
"url": "<string>",
"country": "<string>",
"log_date": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}Leaks
Your GET endpoint for domain stats
get leaks stats for a domain
GET
/
v1
/
leaks
/
stats
/
domain
Your GET endpoint for domain stats
curl --request GET \
--url https://api.projectdiscovery.io/v1/leaks/stats/domain \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.projectdiscovery.io/v1/leaks/stats/domain"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.projectdiscovery.io/v1/leaks/stats/domain', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.projectdiscovery.io/v1/leaks/stats/domain",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.projectdiscovery.io/v1/leaks/stats/domain"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.projectdiscovery.io/v1/leaks/stats/domain")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.projectdiscovery.io/v1/leaks/stats/domain")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"leak_devices_count": [
{
"devices": 123
}
],
"leak_customers_count": [
{
"customers": 123
}
],
"leak_user_count": [
{
"user": 123
}
],
"leak_employees_count": [
{
"employees": 123
}
],
"combolist_exposure": [
{
"combolist_exposure": 123
}
],
"leak_country_stats": [
{
"Country": "<string>",
"CredentialsCount": 123
}
],
"top_used_urls_by_customers": [
{
"count": 123,
"url": "<string>"
}
],
"top_used_urls_by_employees": [
{
"count": 123,
"url": "<string>"
}
],
"top_used_urls_by_user": [
{
"count": 123,
"url": "<string>"
}
],
"leak_customers_timeline": [
{
"CredentialsCount": 123,
"Month": 123,
"Year": 123
}
],
"leak_user_timeline": [
{
"CredentialsCount": 123,
"Month": 123,
"Year": 123
}
],
"leak_employees_timeline": [
{
"CredentialsCount": 123,
"Month": 123,
"Year": 123
}
],
"customers_sample_data": [
{
"password": "<string>",
"username": "<string>",
"url": "<string>",
"country": "<string>",
"log_date": "<string>"
}
],
"employees_sample_data": [
{
"password": "<string>",
"username": "<string>",
"url": "<string>",
"country": "<string>",
"log_date": "<string>"
}
],
"user_sample_data": [
{
"password": "<string>",
"username": "<string>",
"url": "<string>",
"country": "<string>",
"log_date": "<string>"
}
]
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}Overview
Get statistical information about leaks associated with a specific domain. This endpoint provides aggregate data for monitoring and reporting purposes.This endpoint requires domain verification. You can only get stats for domains you have verified ownership of.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
domain | string | Required. The domain to get leak statistics for |
unmask_email | boolean | Whether to unmask email addresses in the response |
Response Structure
The response provides comprehensive statistics about leaks for the specified domain:{
"domain": "example.com",
"total_leaks": 150,
"open_leaks": 120,
"fixed_leaks": 30,
"leak_types": {
"employee_leaks": 100,
"customer_leaks": 50
},
"recent_activity": {
"last_30_days": 15,
"last_7_days": 3
},
"top_services": [
{
"service": "facebook.com",
"count": 45
},
{
"service": "linkedin.com",
"count": 32
}
],
"geographic_distribution": [
{
"country": "United States",
"count": 89
},
{
"country": "Canada",
"count": 23
}
]
}
Usage Examples
Get basic domain stats
curl -X GET "https://api.projectdiscovery.io/v1/leaks/stats/domain?domain=example.com" \
-H "Authorization: Bearer YOUR_API_KEY"
Get stats with unmasked emails
curl -X GET "https://api.projectdiscovery.io/v1/leaks/stats/domain?domain=example.com&unmask_email=true" \
-H "Authorization: Bearer YOUR_API_KEY"
Best Practices
Regular Monitoring
- Check domain stats regularly to identify new leaks quickly
- Set up automated alerts when leak counts increase
- Monitor the ratio of open vs fixed leaks
Performance Considerations
- Cache stats data appropriately to avoid excessive API calls
- Use this endpoint for summary data, detailed leak info requires other endpoints
- Consider rate limiting when building automated monitoring systems
Authorizations
Response
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?