Keyword Rank Forecaster

Spot which keywords are trending up, going stale, or falling out of the SERP — before it costs you traffic.

Where to get the CSV

Needs daily position per keyword over time. Position semantics: lower is better (position 1 = top). A Prophet model is fit per keyword; keywords with fewer than 20 data points are skipped automatically.

Data Source

  • Rank trackers: SEMrush, Ahrefs, AccuRanker, Serpstat, Wincher, SE Ranking, Nightwatch (export with keyword × date × position)
  • Google Search Console via API, Looker Studio or BigQuery (dimensions: date + query, metric: position)
  • Any custom script/CSV following the formats below (e.g. SerpAPI, DataForSEO, ValueSERP outputs)

Not compatible

  • GSC → Queries CSV (aggregated, has no date axis)
  • Google Analytics 4 (has no keyword position metric)

Long format (recommended)

date, keyword, position [, impressions]

Wide format

date, keyword_a, keyword_b, keyword_c, ...

Ranked by total impressions (if present) or by data volume. Higher = slower.

How to use the Keyword Rank Forecaster

Turn hundreds of keyword position rows into a prioritised list of what is trending up, what is at risk, and what is quietly stable.

1

Export daily positions

From your rank tracker (SEMrush, Ahrefs, AccuRanker, Serpstat, Wincher, SE Ranking, Nightwatch) or from the GSC API / BigQuery / Looker Studio. You need a time series of positions per keyword, not a period aggregate.

2

Upload the CSV

Both long (date, keyword, position) and wide (date, kw_a, kw_b, ...) formats are auto-detected. The tool picks a sensible horizon and models the top N keywords by impressions (or data volume).

3

Comparison Results

Focus first on the "At risk" list — those are keywords quietly slipping. Then look at "Rising" to double down on wins. Use the keyword picker to inspect any individual keyword's full forecast chart.

How the forecast works

One Facebook Prophet model is fit per keyword. For each one we project the position 30 to 730 days forward, then classify it based on trend direction and volatility.

Position semantics

Lower value = better ranking. Position 1 is the top of the SERP. A negative delta means the keyword is climbing (position number decreasing).

Weekly seasonality disabled

Positions are noisy day-to-day (SERP fluctuations, personalisation, small ranking swaps). Weekly seasonality here is more noise than signal, so we turn it off to keep the trend clean.

Selection by impressions

If your CSV has an impressions column, keywords are ranked by total impressions and only the top N (10 to 100, configurable) are modelled. This focuses compute on the keywords that actually matter for traffic.

Minimum data per keyword

Keywords with fewer than 20 valid data points are skipped automatically. The count of skipped keywords is shown in the response so you know how much coverage you got.

The four classifications

Improving

Trend line drops by at least 1 position across the forecast horizon. The keyword is on track to rank higher — protect the page that ranks for it.

At risk

Trend line rises by at least 1 position (worsening) across the horizon. Investigate competitors, freshness, technical issues, or content decay before the drop translates into lost traffic.

Stable

Movement smaller than 1 position and volatility within acceptable range. The keyword sits comfortably where it is — low priority unless the current position is far from where you want it.

Volatile

Residual noise exceeds 5 absolute positions or 35 percent of the mean position. The keyword is swinging too much for a reliable trend read — either the SERP is unstable (fresh news, low-authority queries) or you have data quality issues.

Interpreting the output

Class counters

Quick portfolio view: how many keywords fall into each of the four classifications. A healthy site should have improving ≥ at risk. If at-risk dominates, treat the report as a priority list.

Top at-risk / rising lists

The 10 keywords with the strongest projected change in each direction. Numbers show current 7-day average position and the position expected at the end of the horizon, with the delta.

Inspect a keyword chart

Interactive chart with inverted Y axis (position 1 at the top). Four traces: full history, forecast with confidence band, and the underlying trend line. Hover any point to see the exact predicted position and range.

All-keywords table

Every modelled keyword with its classification, current and forecast position, trend delta and volatility score. Sort or copy to a spreadsheet for reporting.

Where to get the data

Rank trackers

SEMrush (Position Tracking → Export), Ahrefs (Rank Tracker → Overview → Export), AccuRanker (History export), Serpstat, Wincher, SE Ranking, Nightwatch, Mangools SERPWatcher — all export a keyword × date × position table that works out of the box.

Coverage typically 6 months to 5 years depending on how long the campaign has been tracked and the plan.

Google Search Console (indirect)

The GSC UI export gives aggregated Queries only, without a date axis. To get date × query × position, use the Search Console API, the BigQuery bulk export, or a Looker Studio connector — then download the resulting table as CSV.

Max lookback: 16 months via API/UI, unlimited (forward) via BigQuery.

Custom scripts (SerpAPI, DataForSEO, ValueSERP)

If you scrape SERPs on a schedule, output a CSV in long format (date, keyword, position) and upload directly. Add an impressions column if you want the tool to prioritise which keywords to model.

Not compatible

  • GSC UI → Queries.csv (aggregated over the period, no date axis)
  • Google Analytics 4 (does not track keyword-level position)
  • CSVs without a date column or without a query/position column

Frequently asked questions

Can I use the GSC "Queries" CSV export directly?
No. The Queries.csv exported from the GSC UI has one row per keyword with totals over the whole period — there is no date axis, so there is nothing to forecast. You need the GSC API, BigQuery export or Looker Studio to get date × query × position.
How many domains can I compare at once?
Up to 100 per run (configurable in the form: 10, 20, 50, 100). Each keyword takes 1–5 seconds to fit, so 100 keywords ≈ 2–8 minutes. Ranking by impressions ensures the most-trafficked keywords are always covered even at lower caps.
Why is weekly seasonality disabled here but not in the traffic forecaster?
Traffic (clicks, sessions) has real weekly patterns driven by user behaviour. Rankings do not — a keyword sits at position 8 on Monday and position 8 on Sunday, with intra-day SERP noise on top. Adding weekly seasonality would fit noise, not signal, and produce misleading forecasts.
A keyword had a huge drop because of a site redesign. Does that ruin the forecast?
Prophet detects changepoints automatically and adjusts, but a large one-off shock still biases the trend. If you know the exact date of the redesign, trim the CSV to include only data from that date forward before uploading — the forecast will reflect the new regime cleanly.
Should I trust the forecast position number exactly (e.g., "will be at 3.4")?
No. Rankings are inherently discrete and noisy. Treat the point forecast as directional (going up, going down) and the confidence interval as the meaningful range. A prediction of 3.4 with a confidence band of 2 to 6 really means "somewhere in the top-6 SERP page, tilted toward top-3".
What if a keyword only started ranking recently?
If it has fewer than 20 data points, it will be skipped and counted under "keywords skipped" in the response. For newly-ranking keywords, give them 4–8 weeks before trying to forecast — otherwise the trend is dominated by the initial ramp and unrealistic.
A keyword is showing "Volatile" — what does that mean I should do?
It means the model cannot commit to a trend because the position swings too widely. Either the query itself is SERP-unstable (fresh news, low-authority niche, multiple close competitors) or your data has quality problems (missing days filled with 100/nothing, keyword-page mismatch). Investigate the underlying data before acting.
Does horizon length affect classification?
Yes. Classifications compare trend at the first vs last day of the forecast, so a longer horizon can amplify small drifts into "improving" or "at risk" verdicts. If you switch from 90 to 365 days and suddenly everything is at risk, take a step back — the underlying rate of change per day has not changed.
Is my data stored anywhere?
No. The CSV is processed in memory and discarded once the response is sent. No login, no persistence, no third-party sharing.