curl --request GET \
--url https://api.projectdiscovery.io/v1/domain/associated \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.projectdiscovery.io/v1/domain/associated"
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/domain/associated', 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/domain/associated",
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/domain/associated"
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/domain/associated")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.projectdiscovery.io/v1/domain/associated")
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{
"domain": "<string>",
"results": [
{
"domain": "<string>",
"sources": [
"<string>"
],
"evidence": {
"acquired_company": "<string>",
"acquired_date": "<string>",
"acquirer_name": "<string>",
"active": true,
"as_name": "<string>",
"as_number": 123,
"cert_common_name": "<string>",
"cert_expiry_date": "<string>",
"cert_issued_date": "<string>",
"cert_issuer": "<string>",
"cert_org_name": "<string>",
"cert_serial": "<string>",
"crunchbase_url": "<string>",
"expiry_date": "<string>",
"location": "<string>",
"orgname": "<string>",
"probe": "<string>",
"registrant_org": "<string>",
"registrar": "<string>",
"registration_date": "<string>",
"search_identifier": "<string>",
"status_code": 123,
"subdomain_count": 123,
"title": "<string>",
"update_date": "<string>",
"whois_server": "<string>"
}
}
],
"sources": [
"<string>"
],
"sources_count": {},
"unique_count": 123,
"limit": 123,
"page": 123,
"total_count": 123,
"total_pages": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}Get Associated Domains
Discover domains related to a given domain through acquisition history, certificate transparency logs, and WHOIS records. Returns associated domains with evidence of their relationship.
curl --request GET \
--url https://api.projectdiscovery.io/v1/domain/associated \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.projectdiscovery.io/v1/domain/associated"
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/domain/associated', 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/domain/associated",
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/domain/associated"
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/domain/associated")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.projectdiscovery.io/v1/domain/associated")
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{
"domain": "<string>",
"results": [
{
"domain": "<string>",
"sources": [
"<string>"
],
"evidence": {
"acquired_company": "<string>",
"acquired_date": "<string>",
"acquirer_name": "<string>",
"active": true,
"as_name": "<string>",
"as_number": 123,
"cert_common_name": "<string>",
"cert_expiry_date": "<string>",
"cert_issued_date": "<string>",
"cert_issuer": "<string>",
"cert_org_name": "<string>",
"cert_serial": "<string>",
"crunchbase_url": "<string>",
"expiry_date": "<string>",
"location": "<string>",
"orgname": "<string>",
"probe": "<string>",
"registrant_org": "<string>",
"registrar": "<string>",
"registration_date": "<string>",
"search_identifier": "<string>",
"status_code": 123,
"subdomain_count": 123,
"title": "<string>",
"update_date": "<string>",
"whois_server": "<string>"
}
}
],
"sources": [
"<string>"
],
"sources_count": {},
"unique_count": 123,
"limit": 123,
"page": 123,
"total_count": 123,
"total_pages": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}{
"message": "<string>",
"kind": "<string>",
"code": "<string>",
"error": "<string>",
"error_id": "<string>",
"param": "<string>",
"status": 123
}domain parameter, returns associated domains for all your verified domains. Optionally provide a domain parameter to query associated domains for a specific domain.Result Limits: Results are limited to 10 associated domains per query. Enterprise plans include full results with pagination support. Contact sales to access complete results.Discovery Sources
The Associated Domains API correlates data from three primary sources:| Source | Description |
|---|---|
acquisition_history | Corporate subsidiaries and acquired companies from business intelligence sources |
certificate_history | SSL/TLS certificate transparency logs revealing shared infrastructure |
whois_history | Domain registration records identifying common ownership |
Example Requests
Get all associated domains
curl -X GET "https://api.projectdiscovery.io/v1/domain/associated?domain=meta.com" \
-H "X-Api-Key: YOUR_API_KEY"
Filter by specific source
# Only certificate-based associations
curl -X GET "https://api.projectdiscovery.io/v1/domain/associated?domain=meta.com&source=certificate_history" \
-H "X-Api-Key: YOUR_API_KEY"
# Multiple sources
curl -X GET "https://api.projectdiscovery.io/v1/domain/associated?domain=meta.com&source=acquisition_history,whois_history" \
-H "X-Api-Key: YOUR_API_KEY"
Filter by liveness
# Only active/reachable domains
curl -X GET "https://api.projectdiscovery.io/v1/domain/associated?domain=meta.com&active=true" \
-H "X-Api-Key: YOUR_API_KEY"
Paginated results
curl -X GET "https://api.projectdiscovery.io/v1/domain/associated?domain=meta.com&limit=50&page=1&sort=subdomain_count" \
-H "X-Api-Key: YOUR_API_KEY"
Raw output (plain text)
# Get just domain names, one per line (useful for piping to other tools)
curl -X GET "https://api.projectdiscovery.io/v1/domain/associated?domain=meta.com&raw=true" \
-H "X-Api-Key: YOUR_API_KEY"
Related Resources
- Associated Domains Discovery Guide - Comprehensive feature documentation
- Asset Discovery Overview - Platform asset management capabilities
Authorizations
Headers
Query Parameters
Domain name to fetch associated domains. If omitted, returns associated domains for all your verified domains.
Comma-separated source filter (acquisition_history, certificate_history, whois_history)
Filter by liveness (true=alive, false=unreachable)
Sort results
active, domain, source, subdomain_count, update_date Maximum results per page (pagination). If omitted, returns all.
Page number (pagination, starts at 1)
If true, returns plain text list (one domain per line)
Response
Associated domains response
Queried domain
List of associated domains
Show child attributes
Show child attributes
List of sources used in the query
Count of results per source
Show child attributes
Show child attributes
Unique associated domains count
Maximum results per page when paginated
Current page when paginated
Total associated domains when paginated
Total pages when paginated
Was this page helpful?