v1

latestOpenAPI 3.1.02026-07-24490622.0 KB
Ranking History API

Get Domain Ranking History

Returns historical organic ranking data for a domain across multiple keywords within a specified date range. Track position changes, click gains/losses, and ranking trends over time to analyze SEO performance.

Visualize this API live on SpyFu (TODO – verify)

get/v2/historic/getHistoricRankingsForDomain

Query parameters

domainstring required
Example:example.com

Domain to analyze ranking history for.

queryType'MostValuable' | 'FellFromTop10' | 'MadeTheTop10' | 'NewKeywords' | 'NoLongerRanks' | 'GainedRanks' | 'LostRanks' | 'GainedClicks' | 'LostClicks'
Example:MostValuable

Type of ranking analysis to perform.

startDatestring date-time
Example:2025-01

Beginning date for range

endDatestring date-time
Example:2025-07

Ending date for range

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).

startRank.minnumber float

Filter to keywords where the domain/URL starting rank position is ≥ this value for the selected date range (1 = best/top organic result).

startRank.maxnumber float

Filter to keywords where the domain/URL starting rank position is ≤ this value for the selected date range (1 = best/top organic result).

endRank.minnumber float

Filter to keywords where the domain/URL ending rank position is ≥ this value for the selected date range (1 = best/top organic result).

endRank.maxnumber float

Filter to keywords where the domain/URL ending rank position is ≤ this value for the selected date range (1 = best/top organic result).

endRankChange.minnumber float

Filter to keywords where the rank improved by at least this many positions between the start and end of the date range (end_rank_change ≥ value). Positive values mean moved up; negative values mean moved down.

endRankChange.maxnumber float

Filter to keywords where the rank change was at most this many positions between the start and end of the date range (end_rank_change ≤ value). Positive values mean moved up; negative values mean moved down.

seoClicks.minnumber float

Filter to keywords where estimated monthly organic clicks (SEO clicks) to the domain/url are ≥ this value.

seoClicks.maxnumber float

Filter to keywords where estimated monthly organic clicks (SEO clicks) to the domain/url are ≤ this value.

seoClicksChange.minnumber float

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.

seoClicksChange.maxnumber float

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.

searchVolume.minnumber float

Filter to keywords where monthly search volume (Google) is ≥ this value.

searchVolume.maxnumber float

Filter to keywords where monthly search volume (Google) is ≤ this value.

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'ClicksChange' | 'EndClicks' | 'StartRank' | 'EndRank' | 'RankChange'

Field to sort by

pageSizeinteger
Example:5

The maximum number of rows returned.

startingRowinteger
Example:1

Row number to start the results with.

sortOrder'Ascending' | 'Descending'

Order to sort by

Response

Successfully retrieved domain ranking history data

resultCountinteger

Number of results returned

totalVolumeinteger
totalClicksinteger
totalClicksChangeinteger
totalRankChangeinteger
rankAveragenumber double
rankAverageChangenumber double
totalMatchingResultsinteger

Example response

{
  "resultCount": 100
}