Google keywords a domain ranks for — clicks, search volume
spyfu.google.domain.ranked_keywordsGoogle organic keywords driving the most clicks to a domain, with rank and volume
- Price
- $0.005/resultAt provider cost
- Success rate
- 100%Last 30 days · 283 calls
- Latency p50
- 275 msp95 1.7 s
- Last verified
- —Not verified yet
GEThttps://toolswitch.dev/v1/tools/spyfu.google.domain.ranked_keywordsPreview- Uses platform quota
- Synchronous response
- Reads public data
Parameters
SpyFu has NO `/apis/keyword_api/v2/seo/getMostSuccessful` — that path does not exist; this is the organic counterpart of the PPC getMostSuccessful endpoint. Rows carry keyword, topRankedUrl, rank, rankChange, searchVolume, keywordDifficulty, seoClicks, seoClicksChange, the CPC triple and paidCompetitors. `/apis/serp_api/v2/seo/getSeoKeywords` is the generic form of the same report, with a REQUIRED `searchType` (MostValuable, GainedClicks, LostRanks, NewlyRanked …).
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| Query parameters | ||||
query | string | Required | a domain, subdomain, URL or path | spyfu.com |
sortBy | string | Optional | default SearchVolume | |
pageSize | integer | Optional | COST DIAL — rows to return, 1 to 10,000, DEFAULT 5 | 10 |
rank.max | integer | Optional | range filters use this dotted form; also rank.min, searchVolume.min/max, keywordDifficulty.min/max, seoClicks.min/max, rankChange.min/max, costPerClick.min/max | |
sortOrder | string | Optional | Ascending | Descending; default Descending | |
exactMatch | boolean | Optional | ||
adultFilter | boolean | Optional | default true | |
countryCode | string | Optional | default US | US |
startingRow | integer | Optional | 1-based; default 1 | |
excludeTerms | string | Optional | ||
includeTerms | string | Optional | ||
compareDomain | string | Optional | a second domain — adds yourRank, yourRankChange and yourUrl to every row, turning this into a gap report | |
excludeHomepageKeywords | boolean | Optional | drop keywords whose ranking URL is the homepage | |
- Query parameters
querystringRequireda domain, subdomain, URL or path
Example:
spyfu.comsortBystringOptionaldefault SearchVolume
pageSizeintegerOptionalCOST DIAL — rows to return, 1 to 10,000, DEFAULT 5
Example:
10rank.maxintegerOptionalrange filters use this dotted form; also rank.min, searchVolume.min/max, keywordDifficulty.min/max, seoClicks.min/max, rankChange.min/max, costPerClick.min/max
sortOrderstringOptionalAscending | Descending; default Descending
exactMatchbooleanOptionaladultFilterbooleanOptionaldefault true
countryCodestringOptionaldefault US
Example:
USstartingRowintegerOptional1-based; default 1
excludeTermsstringOptionalincludeTermsstringOptionalcompareDomainstringOptionala second domain — adds yourRank, yourRankChange and yourUrl to every row, turning this into a gap report
excludeHomepageKeywordsbooleanOptionaldrop keywords whose ranking URL is the homepage
Code samples
Replace $TOOLSWITCH_KEY with the key you created in the console.
curl -X GET 'https://toolswitch.dev/v1/tools/spyfu.google.domain.ranked_keywords' \
-H "X-Toolswitch-Key: $TOOLSWITCH_KEY"import os
import requests
response = requests.request(
"GET",
"https://toolswitch.dev/v1/tools/spyfu.google.domain.ranked_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.ranked_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.005/result, including the service fee.