---
title: "Get Competing PPC Keywords"
method: GET
path: "/v2/kombat/getCompetingPpcKeywords"
tags: ["Kombat API"]
---

# Get Competing PPC Keywords

`GET /v2/kombat/getCompetingPpcKeywords`

Returns paid search keywords shared across multiple competitor domains. The process selects keywords from the includedDomains, then removes any keywords that belong to domains in the excludedDomains list.

[Visualize this API live on SpyFu](https://www.spyfu.com/kombat?query=example.com,example.org)

## Query parameters

- `includeDomainsCsv` string, required
- `excludeDomainsCsv` string
- `isIntersection` boolean, required
- `searchVolume.min` number, float
- `searchVolume.max` number, float
- `liveSearchVolume.min` number, float
- `liveSearchVolume.max` number, float
- `keywordDifficulty.min` number, float
- `keywordDifficulty.max` number, float
- `clicks.min` number, float
- `clicks.max` number, float
- `costPerClickOption` 'Broad' | 'Exact' | 'Phrase'
- `costPerClick.min` number, float
- `costPerClick.max` number, float
- `isQuestion` boolean
- `isTransactionalIntent` boolean
- `mobileSearchesPercentage.min` number, float
- `mobileSearchesPercentage.max` number, float
- `desktopSearchesPercentage.min` number, float
- `desktopSearchesPercentage.max` number, float
- `notClickedSearchesPercentage.min` number, float
- `notClickedSearchesPercentage.max` number, float
- `paidClickSearchPercentage.min` number, float
- `paidClickSearchPercentage.max` number, float
- `organicClicksSearchPercentage.min` number, float
- `organicClicksSearchPercentage.max` number, float
- `monthlyCost.min` number, float
- `monthlyCost.max` number, float
- `monthlyCostOption` 'Broad' | 'Exact' | 'Phrase'
- `rankingHomepages.min` number, float
- `rankingHomepages.max` number, float
- `adCount.min` number, float
- `adCount.max` number, float
- `wordCount.min` number, float
- `wordCount.max` number, float
- `onlyAdultKeywords` boolean
- `pageSize` integer
- `countryCode` 'AR' | 'AT' | 'AU' | 'BE' | 'BR' | 'CA' | 'CH' | 'DE' | 'DK' | 'ES' | 'FR' | 'IE' | 'IN' | 'IT' | 'JP' | 'MX' | 'NL' | 'NO' | 'NZ' | 'PL' | 'PT' | 'SE' | 'SG' | 'TR' | 'UA' | 'UK' | 'US' | 'ZA'
- `sortBy` 'SearchVolume' | 'LiveSearchVolume' | 'RankingDifficulty' | 'TotalMonthlyClicks' | 'PercentMobileSearches' | 'PercentDesktopSearches' | 'PercentSearchesNotClicked' | 'PercentPaidClicks' | 'PercentOrganicClicks' | 'BroadCostPerClick' | 'PhraseCostPerClick' | 'ExactCostPerClick' | 'BroadMonthlyClicks' | 'PhraseMonthlyClicks' | 'ExactMonthlyClicks' | 'BroadMonthlyCost' | 'PhraseMonthlyCost' | 'ExactMonthlyCost' | 'PaidCompetitors' | 'RankingHomepages'
- `sortOrder` 'Ascending' | 'Descending'
- `startingRow` integer
- `adultFilter` boolean

## Response `200`

Successfully retrieved competing PPC keywords. Returns keyword data with search metrics, cost estimates, and competitive intelligence for multiple domain analysis.

- object — Response wrapper containing competitive keyword analysis data showing keywords where multiple domains compete in the same search channel with pagination metadata.
  - `resultCount` integer — Number of results returned
  - `totalMatchingResults` integer — Total number of competitive keywords available that match the query criteria, including results not included in the current page.
  - `results` object[], nullable — Array of competitive keywords with detailed metrics showing overlap between multiple domains in either SEO or PPC search channels.
    - `keyword` string, nullable — The keyword that shows competitive overlap between multiple domains in the same search channel.
    - `searchVolume` integer, nullable — Estimated monthly search volume for this keyword based on Google search data across the selected country/region, blended from multiple sources for accuracy.
    - `liveSearchVolume` integer, nullable — Adjusted search volume based on recent trends and real-time data, providing a more current estimate than historical averages.
    - `rankingDifficulty` integer, nullable — SEO difficulty score (0-100) indicating how challenging it would be to rank organically for this keyword, with 100 being most difficult.
    - `totalMonthlyClicks` integer, nullable — Total estimated monthly clicks (both organic and paid) generated from search results for this keyword.
    - `percentMobileSearches` number, double, nullable — Percentage of searches for this keyword that originate from mobile devices (0.0-1.0).
    - `percentDesktopSearches` number, double, nullable — Percentage of searches for this keyword that originate from desktop devices (0.0-1.0).
    - `percentSearchesNotClicked` number, double, nullable — Percentage of searches where users leave the SERP without clicking any result, often due to sufficient information in featured snippets or direct answers (0.0-1.0).
    - `percentPaidClicks` number, double, nullable — Percentage of total SERP clicks that go to paid ad results (0.0-1.0).
    - `percentOrganicClicks` number, double, nullable — Percentage of total SERP clicks that go to organic search results (0.0-1.0).
    - `broadCostPerClick` number, double, nullable — Average cost-per-click for broad match keyword targeting, representing what advertisers typically pay when their ads are triggered by related keywords.
    - `phraseCostPerClick` number, double, nullable — Average cost-per-click for phrase match keyword targeting, where ads show for searches that include the keyword phrase in the same order.
    - `exactCostPerClick` number, double, nullable — Average cost-per-click for exact match keyword targeting, the most precise and typically highest-performing match type.
    - `broadMonthlyClicks` number, float, nullable — Estimated monthly paid clicks for broad match targeting of this keyword.
    - `phraseMonthlyClicks` number, float, nullable — Estimated monthly paid clicks for phrase match targeting of this keyword.
    - `exactMonthlyClicks` number, float, nullable — Estimated monthly paid clicks for exact match targeting of this keyword.
    - `broadMonthlyCost` number, double, nullable — Estimated monthly advertising spend for broad match targeting of this keyword.
    - `phraseMonthlyCost` number, double, nullable — Estimated monthly advertising spend for phrase match targeting of this keyword.
    - `exactMonthlyCost` number, double, nullable — Estimated monthly advertising spend for exact match targeting of this keyword.
    - `paidCompetitors` integer, nullable — Total number of unique advertisers observed purchasing ads for this keyword over the last 14 months, indicating competitive intensity.
    - `distinctCompetitors` string[], nullable — List of domain names that have purchased ads for this keyword over the last 14 months.
    - `rankingHomepages` integer, nullable — Number of domain homepages (root URLs) ranking within the first 100 organic search results for this keyword.
    - `serpFeaturesCsv` string, nullable — Comma-separated list of SERP features present for this keyword (e.g., Images, Videos, Maps, Shopping), indicating competition for organic real estate.
    - `serpFirstResult` string, nullable — Domain name of the top-ranking organic result for this keyword, useful for identifying category leaders.
    - `isQuestion` boolean — Indicates whether this keyword is phrased as a question (who, what, when, where, why, how).
    - `isNotSafeForWork` boolean — Indicates whether this keyword is flagged as containing adult or inappropriate content.

## Other responses

- `400` — Bad Request - Invalid parameters provided (e.g., malformed domain list, invalid boolean values, or invalid country code)
- `401` — Unauthorized - Invalid API credentials or insufficient permissions to access Kombat keyword data
- `500` — Internal Server Error - A server-side error occurred while processing the request

---

[API](https://skmtc.net/spyfu/apis/domain-stats-api.md) · [All operations](https://skmtc.net/spyfu/apis/domain-stats-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/spyfu/domain-stats-api/revisions/44f0aff08ed0/schema)
