v1
latestOpenAPI 3.1.02026-07-24490622.0 KBGet SEO Keywords
Unified endpoint for SEO keyword analyses. Select an analysis via searchType to return gains/losses in clicks, rank movers, page-one entries/exits, newly ranked terms, or top-value keywords -- without switching endpoints.
Query parameters
Domain, URL, subdomain, or path to analyze. Accepts full domains (example.com), complete URLs (https://example.com/blog), subdomains (blog.example.com), specific paths (example.com/products/), or individual pages.
Type of SEO keyword analysis to perform. Each type provides different insights into keyword performance and ranking changes.
Domain to compare against when evaluating where it outranks you and where you outrank it.
Comma-separated list of terms that must be present in the keyword.
Used with includeTerms. If true: match any term (OR). If false: require all terms (AND).
Comma-separated list of terms to exclude from results (e.g., branded or irrelevant terms).
If true, exclude keywords where the domain/URL's homepage (root domain, e.g., example.com) ranks; if false, include all.
Filter to keywords where monthly search volume (Google) is ≥ this value.
Filter to keywords where monthly search volume (Google) is ≤ this value.
Filter to keywords where the keyword difficulty score is ≥ this value (0-100; higher = harder to rank).
Filter to keywords where the keyword difficulty score is ≤ this value (0-100; higher = harder to rank).
Filter to keywords where the domain/URL rank position is ≥ this value (1 = best/top organic result).
Filter to keywords where the domain/URL rank position is ≤ this value (1 = best/top organic result).
Filter to keywords where the domain/URL improved by at least this many positions vs. the previous month (rank_change ≥ value). Positive values mean moved up; negative values mean moved down.
Filter to keywords where the month-over-month rank change is at most this many positions (rank_change ≤ value). Positive values mean moved up; negative values mean moved down.
Filter to keywords where the average cost per click (CPC) is ≥ this value.
Filter to keywords where the average cost per click (CPC) is ≤ this value.
Match type for CPC filtering. Broad = includes variations/related terms; Exact = exact keyword only; Phrase = contains the keyword phrase in order (with additional words allowed).
Filter to keywords where estimated monthly organic clicks (SEO clicks) are ≥ this value.
Filter to keywords where estimated monthly organic clicks (SEO clicks) are ≤ this value.
Filter to keywords where the month-over-month change in estimated organic clicks is ≥ this value. Positive values indicate click gains; negative values indicate click losses.
Filter to keywords where the month-over-month change in estimated organic clicks is ≤ this value. Positive values indicate click gains; negative values indicate click losses.
Filter to keywords where the mobile search share (%) is ≥ this value (range 0-100).
Filter to keywords where the mobile search share (%) is ≤ this value (range 0-100).
Filter to keywords where the desktop search share (%) is ≥ this value (range 0-100).
Filter to keywords where the desktop search share (%) is ≤ this value (range 0-100).
Filter to keywords where the percentage of searches with no click is ≥ this value (range 0-100).
Filter to keywords where the percentage of searches with no click is ≤ this value (range 0-100).
Filter to keywords where the share of SERP clicks going to paid ads (%) is ≥ this value (range 0-100).
Filter to keywords where the share of SERP clicks going to paid ads (%) is ≤ this value (range 0-100).
Filter to keywords where the share of SERP clicks going to organic results (%) is ≥ this value (range 0-100).
Filter to keywords where the share of SERP clicks going to organic results (%) is ≤ this value (range 0-100).
Filter to keywords where the estimated monthly advertising cost is ≥ this value.
Filter to keywords where the estimated monthly advertising cost is ≤ this value.
Match type for monthly cost filtering. Broad = includes variations/related terms; Exact = exact keyword only; Phrase = contains the keyword phrase in order (with additional words allowed).
Filter to keywords where the number of distinct advertisers observed over the last 6 months is ≥ this value.
Filter to keywords where the number of distinct advertisers observed over the last 6 months is ≤ this value.
Filter to keywords where the number of homepage/root-domain URLs in the top 100 results is ≥ this value.
Filter to keywords where the number of homepage/root-domain URLs in the top 100 results is ≤ this value.
Filter to keywords where total monthly SERP clicks (all domains) are ≥ this value. Independent of rank; includes both organic and paid clicks.
Filter to keywords where total monthly SERP clicks (all domains) are ≤ this value. Includes both organic and paid clicks.
Filter to keywords where the number of distinct advertisers observed over the last 6 months is ≥ this value.
Filter to keywords where the number of distinct advertisers observed over the last 6 months is ≤ this value.
The maximum number of rows returned.
Country market to search. Specifically, this maps to the Google domain version to query against (e.g., google.com for US, google.de for Germany, etc.). <a href='https://developer.spyfu.com/reference/adhistoryapi_getdomainadhistory_get#/'>All Countries</a>
Column to sort by.
Order to sort the results.
Row number to start the results with.
Exclude adult keywords considered unsafe for work.
Only include adult keywords considered unsafe for work.
Indicates whether to apply exact match filtering for the query. This parameter will result in only exact matches, meaning protocols (http/https) and trailing slashes must be included. For example, a query of "https://example.com/blog" will not match
- "example.com/blog"
- "https://example.com/blog/"
Response
OK
Example response
{
"resultCount": 100,
"results": [
{
"keyword": "running shoes",
"topRankedUrl": "https://example.com/best-running-shoes",
"rank": 7,
"rankChange": -3,
"searchVolume": 700000,
"keywordDifficulty": 69,
"broadCostPerClick": 0.28,
"phraseCostPerClick": 0.28,
"exactCostPerClick": 0.28,
"seoClicks": 3000,
"seoClicksChange": -600,
"totalMonthlyClicks": 647000,
"percentMobileSearches": 0.4,
"percentDesktopSearches": 0.6,
"percentNotClicked": 0.075,
"percentPaidClicks": 0.079,
"percentOrganicClicks": 0.921,
"broadMonthlyCost": 6043.5,
"phraseMonthlyCost": 5695.5,
"exactMonthlyCost": 5392.5,
"rankingHomepages": 10,
"yourRank": 5,
"yourRankChange": -3,
"yourUrl": "https://comparedomain.com/blog"
}
],
"totalMatchingResults": 75000
}