Top Google Ads keywords by domain — search volume, CPC
spyfu.google.domain.paid_keywordsA domain's best-performing Google Ads keywords, with volume, CPC and monthly cost
- Price
- $0.002/resultAt provider cost
- Success rate
- 99.9%Last 30 days · 1,955 calls
- Latency p50
- 232 msp95 679 ms
- Last verified
- —Not verified yet
GEThttps://toolswitch.dev/v1/tools/spyfu.google.domain.paid_keywordsPreview- Uses platform quota
- Synchronous response
- Reads public data
Parameters
rows carry keyword, searchVolume, liveSearchVolume, rankingDifficulty, totalMonthlyClicks, broad/phrase/exactCostPerClick, broad/phrase/exactMonthlyCost, paidCompetitors, distinctCompetitors and serpFeaturesCsv. Note the path segment is `keyword_api`, unlike the other PPC endpoints which live under `serp_api`.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| Query parameters | ||||
query | string | Required | the advertiser — a domain, subdomain, URL or path. Note this family uses `query`, not `domain` | spyfu.com |
sortBy | string | Optional | default SearchVolume | |
pageSize | integer | Optional | COST DIAL — rows to return, 1 to 10,000, DEFAULT 5. Every row is billed at the $2.00 PPC CPM | 10 |
sortOrder | string | Optional | Ascending | Descending; default Descending | |
isQuestion | boolean | Optional | restrict to question keywords | |
adultFilter | boolean | Optional | default true — filters adult keywords out | |
countryCode | string | Optional | default US | US |
startingRow | integer | Optional | 1-based row offset; default 1 | |
excludeTerms | string | Optional | drop keywords containing these terms | |
includeTerms | string | Optional | only keywords containing these terms | |
searchVolume.min | integer | Optional | range filters use this dotted form; also searchVolume.max, liveSearchVolume.min/max, costPerClick.min/max, monthlyCost.min/max, adCount.min/max, keywordDifficulty.min/max | |
isTransactionalIntent | boolean | Optional | restrict to transactional-intent keywords | |
- Query parameters
querystringRequiredthe advertiser — a domain, subdomain, URL or path. Note this family uses `query`, not `domain`
Example:
spyfu.comsortBystringOptionaldefault SearchVolume
pageSizeintegerOptionalCOST DIAL — rows to return, 1 to 10,000, DEFAULT 5. Every row is billed at the $2.00 PPC CPM
Example:
10sortOrderstringOptionalAscending | Descending; default Descending
isQuestionbooleanOptionalrestrict to question keywords
adultFilterbooleanOptionaldefault true — filters adult keywords out
countryCodestringOptionaldefault US
Example:
USstartingRowintegerOptional1-based row offset; default 1
excludeTermsstringOptionaldrop keywords containing these terms
includeTermsstringOptionalonly keywords containing these terms
searchVolume.minintegerOptionalrange filters use this dotted form; also searchVolume.max, liveSearchVolume.min/max, costPerClick.min/max, monthlyCost.min/max, adCount.min/max, keywordDifficulty.min/max
isTransactionalIntentbooleanOptionalrestrict to transactional-intent keywords
Code samples
Replace $TOOLSWITCH_KEY with the key you created in the console.
curl -X GET 'https://toolswitch.dev/v1/tools/spyfu.google.domain.paid_keywords' \
-H "X-Toolswitch-Key: $TOOLSWITCH_KEY"import os
import requests
response = requests.request(
"GET",
"https://toolswitch.dev/v1/tools/spyfu.google.domain.paid_keywords",
headers={"X-Toolswitch-Key": os.environ["TOOLSWITCH_KEY"]},
)
response.raise_for_status()
print(response.text)const response = await fetch("https://toolswitch.dev/v1/tools/spyfu.google.domain.paid_keywords", {
method: "GET",
headers: {
"X-Toolswitch-Key": process.env.TOOLSWITCH_KEY ?? "",
},
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
console.log(await response.text());This gateway API is in preview; its URL and authentication may change. The example parameters are sample data. Calls are billed at $0.002/result, including the service fee.