---
title: "Keyword rank tracking report | SEO Skill"
description: "Track exact organic positions for a saved keyword set by location and device. Compare ranking changes with local history, coverage and provider cost."
canonical: "https://seoskill.dev/docs/reports/rank-tracking"
language: "en"
---

# Keyword rank tracking report

Track the same saved keywords in a fixed market and device, then compare each exact snapshot with the prior compatible run. Results stay on your machine, including queued task state, cost and history.

## Install and run the monitor

Install the CLI once, then run `seo start` to connect your site and Google data. After setup you can run this monitor yourself or ask your agent to run it.

Install the SEO CLI globally.

```
npm i -g seo
```

Run setup after installation.

```
seo start
```

Collect or resume one exact rank run for a saved keyword set.

```
seo reports run rank-tracking --params '{"projectId":"example","set":"Priority","targetDomain":"example.com","devices":["desktop"],"collectionMethod":"queued","cadence":"weekly"}' --json
```

## What the monitor records

Collect exact organic positions for a saved keyword set, then compare compatible local snapshots with coverage, task state, and cost kept visible.

Best for

A saved keyword set needs repeatable position checks for one fixed market and device.

Needs

Saved keyword set and target domain

You get

A run summary with tracked keywords, completed, pending and failed snapshots, exact position changes, ranking URL changes, and prior-run coverage.

Use next

Inspect live search results

## What you need before you run it

This monitor uses A local saved keyword set, target domain, fixed search market, separate device configuration, provider task evidence, exact retained positions, requested depth, coverage, cost, and prior compatible runs.

### Saved keyword set and target domain

Select up to 50 keywords for live collection or 1,000 for queued collection, with an optional saved tag filter.

### Fixed search market and device

Uses the saved country, language, location, and one or two explicit device configurations without blending their positions.

### Connected exact-rank provider

Posts or collects bounded search snapshots with task ids, exact ranks, requested depth, coverage, warnings, and cost.

## How the report finds the opportunity

The report uses existing search and page evidence to build a limited review list. An opportunity is a reason to inspect a page, not a promise of more traffic.

01

Creates or resumes one local run for the exact keyword set, target domain, market, device, provider, depth, collection method, and cadence.

02

Records observed, not observed within depth, pending, and failed states separately for every keyword and device pair.

03

Compares the latest completed evidence with the prior compatible run for new, lost, improved, declined, unchanged, and ranking URL changes.

04

Retains bounded local history and caps report output without hiding omitted counts.

## Check the evidence behind each opportunity

Start with the query, page and date range behind each suggestion. Thin or partial evidence belongs in the review pile, not the implementation queue.

| Read first | Why it matters |
| --- | --- |
| Result | A run summary with tracked keywords, completed, pending and failed snapshots, exact position changes, ranking URL changes, and prior-run coverage. |
| More detail | A bounded item list with current and previous evidence plus fixed market, device, depth, provider task, local retention, cost, warning, and caveat context. |
| Read it with | Read market, device, depth, run state, coverage, and cost before the change list. Add Search Console evidence when clicks, impressions, or average position matter to the decision. |

## What the result cannot prove

Not observed within depth does not prove that the domain has no ranking. Search results can change between checks, and exact snapshots answer a different question from Search Console average position. Pending or failed tasks cannot support a loss. A ranking change alone cannot establish cause, traffic impact, or future performance.

Read market, device, depth, run state, coverage, and cost before the change list. Add Search Console evidence when clicks, impressions, or average position matter to the decision. Run a Search Console opportunity report before prioritising work from position movement alone.

Run the local collector daily so queued tasks are picked up before the provider ready list expires. The saved cadence controls when a new weekly or monthly run starts, while each poll resumes the same unfinished run.

## Use a different report for these jobs

You need clicks, impressions, or average position from Search Console. You only need to inspect one current result page with no saved history.

[

### You need clicks, impressions, CTR, or average position from searches associated with the site.

Use a Search Console opportunity report for first-party performance evidence. Exact rank snapshots do not contain clicks or impressions and should not replace average position.

SEO quick wins report

](https://seoskill.dev/docs/reports/quick-wins)[

### You need to inspect one current result page but do not need saved history.

Run live search results for that query and market. It returns the retained result page and features without creating a recurring tracking configuration.

Live SERP results report

](https://seoskill.dev/docs/reports/serp-results)

### You need proof that a ranking change caused a traffic change.

No rank tracker can establish that from position movement alone. Compare complete Search Console periods, inspect the live page and result set, and keep other releases or demand changes visible.

Needs more evidence

## Use the monitor with an agent or in code

The command above is enough for most work. These options let an agent, script or application run the same monitor with explicit input and structured output.

### CLI

Use the report catalog when an agent, script or CI job needs predictable JSON instead of the normal terminal output. Check the current input first, then run the monitor with the validated parameters.

Check the current input before the agent or script runs the monitor.

```
seo reports describe rank-tracking --json
```

Once the input is valid, run the monitor through the report catalog.

```
seo reports run rank-tracking --params '{"projectId":"example","set":"Priority","targetDomain":"example.com","devices":["desktop"],"collectionMethod":"queued","cadence":"weekly","depth":100}' --json
```

### MCP

An MCP agent follows the same two-step flow. It inspects the current schema, fills the required fields and only then runs the monitor.

Ask the MCP server for the current monitor input.

```
{
  "id": "rank-tracking"
}
```

Run the monitor after the agent has checked and filled the input.

```
{
  "id": "rank-tracking",
  "params": {
    "projectId": "example",
    "set": "Priority",
    "targetDomain": "example.com",
    "devices": [
      "desktop"
    ],
    "collectionMethod": "queued",
    "cadence": "weekly",
    "depth": 100
  }
}
```

### TypeScript

Install the package in a Node 22 project when your application needs to run the monitor directly. The result includes the same evidence, warnings and limits returned through the CLI and MCP server.

Add the SEO package to your project.

```
npm install seo
```

Run the monitor from your TypeScript application.

```
import { executeReport } from 'seo/mcp'

const result = await executeReport(
  'rank-tracking',
  {
  "projectId": "example",
  "set": "Priority",
  "targetDomain": "example.com",
  "devices": [
    "desktop"
  ],
  "collectionMethod": "queued",
  "cadence": "weekly",
  "depth": 100
},
)

console.log(result)
```

## What to do next

Check market, device, depth, coverage and cost before reading the position changes. Inspect changed ranking URLs and add Search Console evidence before deciding that a movement deserves work.

1.  01Inspect the current result page and ranking URL when a change could reflect intent drift or a competing template.
2.  02Run a Search Console opportunity report before prioritising work from position movement alone.

## Related reports

[

Inspect one bounded search snapshot with exact retained organic ranks, market context, result features, provider coverage, cache status, and request cost.

Live SERP results report

](https://seoskill.dev/docs/reports/serp-results)[

Open one local project keyword set and check metric freshness, research tags, page mappings, and view coverage before choosing the next investigation.

Saved keyword set report

](https://seoskill.dev/docs/reports/saved-keywords)[

Find page-one rankings with weak CTR where title or snippet work may earn more clicks.

SEO quick wins report

](https://seoskill.dev/docs/reports/quick-wins)[

Group position 11 to 20 Search Console queries into practical actions.

Striking distance SEO report

](https://seoskill.dev/docs/reports/striking-distance)

## Sources used by this monitor

These primary sources define the provider data or search controls used by the result.

-   [DataForSEO live Google SERP API reference](https://docs.dataforseo.com/v3/serp-google-organic-live-advanced/)
