Domains
Four endpoints that together describe a domain's organic footprint: the headline numbers, the keywords behind them, the domains it competes with, and the pages that carry the traffic. Start with the overview and go deeper only where the numbers justify it, because the deeper calls cost more.
Domain overview
Organic visibility totals for a domain in one country: keyword count, top 3 and top 10 positions, estimated monthly organic traffic, what that traffic would cost in paid ads, and month over month movement.
Costs 2 credits per call.
Required attributes
- Name
domain- Type
- string
- Description
A bare domain such as
example.com. Protocol,www.and paths are stripped.
Optional attributes
- Name
country- Type
- string
- Description
ISO 3166-1 alpha-2 code such as
US,ESorMX. DefaultUS. See Countries and languages.
- Name
language- Type
- string
- Description
ISO 639-1 code such as
enores. Defaults to the main language of the country, soESmeans Spanish unless you say otherwise.
Response fields
- Name
organic.keywords- Type
- integer
- Description
Keywords the domain ranks for in the top 100.
- Name
organic.monthly_traffic- Type
- integer
- Description
Estimated monthly organic visits, modelled from positions and search volumes.
- Name
organic.traffic_value_usd- Type
- integer
- Description
What buying that traffic through ads would cost per month.
- Name
movement- Type
- object
- Description
Keywords that improved, declined, are new or were lost since the previous month.
Returns 404 not_found when the domain has no organic presence in that country. That is often a language mismatch: try the country's main language, which is the default.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/domains/overview \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "hubspot.com", "country": "US"}'
Response
{
"data": {
"domain": "hubspot.com",
"country": "US",
"checked_at": "2026-09-09T11:47:02.086Z",
"organic": {
"keywords": 303827,
"top_3": 13141,
"top_10": 48894,
"positions_11_20": 64193,
"positions_21_30": 59140,
"monthly_traffic": 2258695,
"traffic_value_usd": 44177901
},
"movement": {
"improved": 95727,
"declined": 78824,
"new": 116809,
"lost": 131200
}
},
"meta": {
"credits_charged": 2,
"credits_remaining": 483.5,
"request_id": "b8ebf69f-d9ab-4b8b-9733-d66af4023f3d"
}
}
Domain keywords
The keywords a domain actually ranks for, highest estimated traffic first. This is the endpoint to use for "where does their traffic come from".
Costs 4.5 credits per call, regardless of limit.
Required attributes
- Name
domain- Type
- string
- Description
A bare domain such as
example.com. Protocol,www.and paths are stripped.
Optional attributes
- Name
country- Type
- string
- Description
ISO 3166-1 alpha-2 code such as
US,ESorMX. DefaultUS. See Countries and languages.
- Name
language- Type
- string
- Description
ISO 639-1 code such as
enores. Defaults to the main language of the country, soESmeans Spanish unless you say otherwise.
- Name
limit- Type
- integer
- Description
Keywords to return, 10 to 100. Default 50. Capped by your plan.
Response fields
- Name
total_keywords- Type
- integer
- Description
How many keywords the domain ranks for in total, beyond the ones returned.
- Name
keywords[].traffic- Type
- integer
- Description
Estimated monthly visits this keyword sends to the domain.
- Name
keywords[].url- Type
- string
- Description
The page that ranks.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/domains/keywords \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "hubspot.com", "country": "US", "limit": 50}'
Response
{
"data": {
"domain": "hubspot.com",
"country": "US",
"total_keywords": 303854,
"count": 10,
"keywords": [
{
"keyword": "hubspot",
"position": 1,
"volume": 368000,
"traffic": 111872,
"cpc": 7.88,
"difficulty": 57,
"url": "https://www.hubspot.com/"
},
{
"keyword": "client feedback surveys",
"position": 3,
"volume": 135000,
"traffic": 41040,
"cpc": 37.46,
"difficulty": 7,
"url": "https://knowledge.hubspot.com/customer-feedback/create-and-send-customer-satisfaction-surveys"
},
{
"keyword": "customer feedback survey",
"position": 2,
"volume": 135000,
"traffic": 41040,
"cpc": 37.46,
"difficulty": 13,
"url": "https://knowledge.hubspot.com/customer-feedback/create-and-send-customer-satisfaction-surveys"
},
// ...
]
},
"meta": {
"credits_charged": 4.5,
"credits_remaining": 483.5,
"request_id": "f4d29d84-977a-4866-a7f4-129c36715f00"
}
}
Domain competitors
Domains that share organic keywords with the target, ranked by how many they share. Large platforms such as YouTube or Reddit often appear first because they rank for everything; filter them out client side if you want direct competitors only.
Costs 3.5 credits per call.
Required attributes
- Name
domain- Type
- string
- Description
A bare domain such as
example.com. Protocol,www.and paths are stripped.
Optional attributes
- Name
country- Type
- string
- Description
ISO 3166-1 alpha-2 code such as
US,ESorMX. DefaultUS. See Countries and languages.
- Name
language- Type
- string
- Description
ISO 639-1 code such as
enores. Defaults to the main language of the country, soESmeans Spanish unless you say otherwise.
- Name
limit- Type
- integer
- Description
Competitors to return, 5 to 50. Default 10.
Response fields
- Name
competitors[].shared_keywords- Type
- integer
- Description
Keywords both domains rank for.
- Name
competitors[].avg_position- Type
- integer
- Description
The competitor's average position on the shared keywords.
- Name
competitors[].monthly_traffic- Type
- integer
- Description
The competitor's total estimated organic traffic.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/domains/competitors \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "hubspot.com", "country": "US", "limit": 10}'
Response
{
"data": {
"domain": "hubspot.com",
"country": "US",
"count": 4,
"competitors": [
{
"domain": "youtube.com",
"shared_keywords": 296384,
"avg_position": 18,
"keywords": 150042818,
"monthly_traffic": 3027344320
},
{
"domain": "reddit.com",
"shared_keywords": 205819,
"avg_position": 8,
"keywords": 94514427,
"monthly_traffic": 4158425546
},
{
"domain": "quora.com",
"shared_keywords": 166261,
"avg_position": 23,
"keywords": 31933895,
"monthly_traffic": 368517098
},
// ...
]
},
"meta": {
"credits_charged": 3.5,
"credits_remaining": 483.5,
"request_id": "0ba810b5-0413-4207-8391-067aaa10aca1"
}
}
Top pages
The pages of a domain that earn the most organic traffic. A site where ten URLs carry most of the traffic is fragile; a flat distribution means depth.
Costs 2 credits per call.
Required attributes
- Name
domain- Type
- string
- Description
A bare domain such as
example.com. Protocol,www.and paths are stripped.
Optional attributes
- Name
country- Type
- string
- Description
ISO 3166-1 alpha-2 code such as
US,ESorMX. DefaultUS. See Countries and languages.
- Name
language- Type
- string
- Description
ISO 639-1 code such as
enores. Defaults to the main language of the country, soESmeans Spanish unless you say otherwise.
- Name
limit- Type
- integer
- Description
Pages to return, 10 to 100. Default 25.
Response fields
- Name
pages[].monthly_traffic- Type
- integer
- Description
Estimated monthly organic visits to this URL.
- Name
pages[].keywords- Type
- integer
- Description
Keywords this URL ranks for.
- Name
pages[].top_10- Type
- integer
- Description
Of those, how many rank in the top 10.
Request
curl -X POST https://suvjexogmfpvxjcktvuk.supabase.co/functions/v1/api/v1/domains/pages \
-H "Authorization: Bearer $PENGU_API_KEY" \
-H "Content-Type: application/json" \
-d '{"domain": "hubspot.com", "country": "US", "limit": 25}'
Response
{
"data": {
"domain": "hubspot.com",
"country": "US",
"count": 10,
"pages": [
{
"url": "https://www.hubspot.com/products/crm",
"monthly_traffic": 329133,
"keywords": 1001,
"top_3": 522,
"top_10": 745,
"traffic_value_usd": 14445707
},
{
"url": "https://www.hubspot.com/",
"monthly_traffic": 134601,
"keywords": 505,
"top_3": 61,
"top_10": 67,
"traffic_value_usd": 1456113
},
{
"url": "https://knowledge.hubspot.com/customer-feedback/create-and-send-customer-satisfaction-surveys",
"monthly_traffic": 123147,
"keywords": 22,
"top_3": 5,
"top_10": 7,
"traffic_value_usd": 4612271
},
// ...
]
},
"meta": {
"credits_charged": 2,
"credits_remaining": 483.5,
"request_id": "1433f8d6-c24f-41d4-9e31-50ccaaa7040f"
}
}
