Get leak statistics for an email (Public)
curl --request GET \
--url https://api.projectdiscovery.io/v1/leaks/stats/email \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.projectdiscovery.io/v1/leaks/stats/email"
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/email', 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/email",
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/email"
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/email")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.projectdiscovery.io/v1/leaks/stats/email")
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
Get leak statistics for an email (Public)
Public endpoint - no authentication required. Returns leak statistics for any email address including leak classification, compromised services, and risk timeline.
GET
/
v1
/
leaks
/
stats
/
email
Get leak statistics for an email (Public)
curl --request GET \
--url https://api.projectdiscovery.io/v1/leaks/stats/email \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.projectdiscovery.io/v1/leaks/stats/email"
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/email', 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/email",
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/email"
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/email")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.projectdiscovery.io/v1/leaks/stats/email")
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 any email address. This is a public endpoint that doesn’t require authentication, making it ideal for quick breach checks and self-service monitoring.Public Endpoint: No authentication required. You can check leak statistics for any email address.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
email | string | Required. The email address to get leak statistics for |
Response Structure
The response provides comprehensive statistics about leaks for the specified email:{
"email": "user@example.com",
"total_leaks": 25,
"leak_classification": {
"personal_leaks": 15,
"employee_leaks": 8,
"customer_leaks": 2
},
"recent_activity": {
"last_30_days": 3,
"last_7_days": 1
},
"compromised_services": [
{
"service": "facebook.com",
"count": 8,
"last_seen": "2023-03-15T10:30:00Z"
},
{
"service": "linkedin.com",
"count": 5,
"last_seen": "2023-02-28T14:20:00Z"
}
],
"risk_timeline": [
{
"date": "2023-03",
"new_leaks": 3
},
{
"date": "2023-02",
"new_leaks": 5
}
]
}
Data Fields Explained
| Field | Description |
|---|---|
email | The email address these statistics apply to |
total_leaks | Total number of leaks found for this email |
leak_classification | Breakdown by leak type (personal, employee, customer) |
recent_activity | New leak discovery in recent time periods |
compromised_services | Services where this email was found in leaks |
risk_timeline | Historical trend of leak discovery |
Usage Examples
Check email breach status
curl -X GET "https://api.projectdiscovery.io/v1/leaks/stats/email?email=user@example.com"
No API key or authentication header is required for this endpoint.
Use Cases
Personal Breach Check
Allow users to quickly check if their email has been involved in any credential leaks.Self-Service Monitoring
Build breach notification tools that let users check their own exposure without requiring account creation.Security Awareness
Integrate into security training tools to show employees their personal exposure risk.Best Practices
- Cache results appropriately to minimize API calls
- Use this for summary data; detailed leak information requires authenticated endpoints
- Consider rate limiting when building user-facing applications
- Combine with the domain stats endpoint for comprehensive organizational monitoring
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?