v1

latestOpenAPI 3.1.02026-07-24490622.0 KB
Keyword Research API

Get Related Keywords

Returns thematically related keywords that share similar categories and themes with your seed keyword. This endpoint helps expand your keyword reach with relevant, competitive terms to broaden your content strategy and advertising opportunities.

Visualize this API live on SpyFu

get/v2/related/getRelatedKeywords

Query parameters

querystring required
Example:running shoes

Seed keyword to find thematically related keywords for.

includeTermsstring
Example:hosting,domain,website

Comma-separated list of terms that must be present in the keyword.

includeAnyTermboolean

Used with includeTerms. If true: match any term (OR). If false: require all terms (AND).

excludeTermsstring
Example:free,cheap,discount

Comma-separated list of terms to exclude from results (e.g., branded or irrelevant terms).

searchVolume.minnumber float

Filter by the number of searches done this past month on Google.

searchVolume.maxnumber float

Filter by the number of searches done this past month on Google.

liveSearchVolume.minnumber float

Filter by the number of searches done this past month on Google. This value is refreshed each month.

liveSearchVolume.maxnumber float

Filter by the number of searches done this past month on Google. This value is refreshed each month.

keywordDifficulty.minnumber float

Filter by how difficult it is to rank on this keyword. This can also be called Ranking Difficulty.

keywordDifficulty.maxnumber float

Filter by how difficult it is to rank on this keyword. This can also be called Ranking Difficulty.

costPerClick.minnumber float

Filter by the average cost per click. This will use the keyword matching option selected in costPerClickOption

costPerClick.maxnumber float

Filter by the average cost per click. This will use the keyword matching option selected in costPerClickOption

costPerClickOption'Broad' | 'Exact' | 'Phrase'
Example:Broad

Cost per click keyword matching option to filter results by.

wordCount.minnumber float

Filter by the number of words in the keyword.

wordCount.maxnumber float

Filter by the number of words in the keyword.

clicks.minnumber float

Filter by the number of total monthly clicks on the SERP for this keyword--organic and paid.

clicks.maxnumber float

Filter by the number of total monthly clicks on the SERP for this keyword--organic and paid.

isQuestionboolean

Filter on if the keyword is a question.

isTransactionalIntentboolean

Filter on if the keyword has transactional intent.

serpFirstResultstring
Example:example.com

Filter to keywords where this specific domain ranks #1 in organic search results. Useful for identifying keywords where a particular competitor dominates.

mobileSearchesPercentage.minnumber float

Filter by the percentage of searches that are done on mobile devices.

mobileSearchesPercentage.maxnumber float

Filter by the percentage of searches that are done on mobile devices.

desktopSearchesPercentage.minnumber float

Filter by the percentage of searches that are done on desktop devices.

desktopSearchesPercentage.maxnumber float

Filter by the percentage of searches that are done on desktop devices.

notClickedSearchesPercentage.minnumber float

Filter by the percentage of searches that are not clicked. Some keyword searches supply clear information in a featured snippet or similar displays. They don't require a click to get the information. Those will have higher percentages in this metric.

notClickedSearchesPercentage.maxnumber float

Filter by the percentage of searches that are not clicked. Some keyword searches supply clear information in a featured snippet or similar displays. They don't require a click to get the information. Those will have higher percentages in this metric.

paidClickSearchPercentage.minnumber float

Filter by the percentage of clicks that go to ads.

paidClickSearchPercentage.maxnumber float

Filter by the percentage of clicks that go to ads.

organicClicksSearchPercentage.minnumber float

Filter by the percentage of clicks that go to organic results, not ads.

organicClicksSearchPercentage.maxnumber float

Filter by the percentage of clicks that go to organic results, not ads.

monthlyCost.minnumber float

Filter by the monthly cost of the keyword. This will use the keyword matching option selected in monthlyCostOption

monthlyCost.maxnumber float

Filter by the monthly cost of the keyword. This will use the keyword matching option selected in monthlyCostOption

monthlyCostOption'Broad' | 'Exact' | 'Phrase'
Example:Broad

Monthly Cost keyword matching option to filter results by.

rankingHomepages.minnumber float

Homepages on the SERP range to filter results by.

rankingHomepages.maxnumber float

Homepages on the SERP range to filter results by.

adCount.minnumber float

Filter by the number of total advertisers

adCount.maxnumber float

Filter by the number of total advertisers

pageSizeinteger
Example:5

The maximum number of rows returned.

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'
Example:US

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>

sortBy'SearchVolume' | 'LiveSearchVolume' | 'RankingDifficulty' | 'TotalMonthlyClicks' | 'PercentMobileSearches' | 'PercentDesktopSearches' | 'PercentSearchesNotClicked' | 'PercentPaidClicks' | 'PercentOrganicClicks' | 'BroadCostPerClick' | 'PhraseCostPerClick' | 'ExactCostPerClick' | 'BroadMonthlyClicks' | 'PhraseMonthlyClicks' | 'ExactMonthlyClicks' | 'BroadMonthlyCost' | 'PhraseMonthlyCost' | 'ExactMonthlyCost' | 'PaidCompetitors' | 'RankingHomepages'
Example:SearchVolume

Column to sort by.

sortOrder'Ascending' | 'Descending'
Example:Descending

Order to sort the results.

startingRowinteger
Example:1

Row number to start the results with.

adultFilterboolean
Example:true

Exclude adult keywords considered unsafe for work.

onlyAdultKeywordsboolean

Only include adult keywords considered unsafe for work.

Response

Successfully retrieved related keywords. Returns keyword data for thematically similar terms that share categories and themes, perfect for expanding content reach and competitive keyword targeting.

resultCountinteger

Number of results returned

totalMatchingResultsinteger

The total number of results available that matches the query including items that might not be included in the returned results/page.

Example response

{
  "resultCount": 100,
  "results": [
    {
      "keyword": "red shoes",
      "searchVolume": 266000,
      "liveSearchVolume": 82000,
      "rankingDifficulty": 98,
      "totalMonthlyClicks": 219000,
      "percentMobileSearches": 0.52009505,
      "percentDesktopSearches": 0.47990492,
      "percentSearchesNotClicked": 0.1792681,
      "percentPaidClicks": 0.52188635,
      "percentOrganicClicks": 0.47811362,
      "broadCostPerClick": 0.73,
      "phraseCostPerClick": 0.67,
      "exactCostPerClick": 0.65,
      "broadMonthlyClicks": 57019.8,
      "phraseMonthlyClicks": 42150.3,
      "exactMonthlyClicks": 29094.6,
      "broadMonthlyCost": 41604.9,
      "phraseMonthlyCost": 25542,
      "exactMonthlyCost": 19041.6,
      "paidCompetitors": 15,
      "rankingHomepages": 8,
      "serpFeaturesCsv": "Images,Maps",
      "serpFirstResult": "example.com"
    }
  ]
}