rank-math/get-analytics-rows returns paginated analytics rows: per-post search performance, the rank-tracker keyword table, or the keywords overview with its position graph.
Each row carries clicks, impressions, CTR and average position for the requested period.
At a glance
| Ability | rank-math/get-analytics-rows |
| Toolset | Rank Math — toolset/rank-math |
| Group | Rank Math › Analytics |
| Requires | Rank Math SEO, active on the site |
| Capability | manage_options |
| Safety | Read-only — changes nothing |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
How it works
The four metrics together are more informative than any of them alone, and the combinations are the interesting part. High impressions with low CTR is a page ranking for things it does not satisfy, or a title that does not earn the click. High CTR with low impressions is a page that works and nobody sees.
Average position is the one to read most carefully. It is an average across queries and across days, so a page averaging position eleven might be at four for its main query and thirty for a dozen incidental ones.
The rank-tracker table covers keywords somebody chose to track, which is a different population from the keywords a page actually ranks for. Both are useful; they answer different questions.
This needs a connected Google Search Console. Without one the ability says so rather than returning empty data — an empty result that reads as zero traffic is worse than an error, because it looks like an answer.
Paginated because these tables are large. A site with a few thousand posts has a few thousand rows.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
type | string | Yes | Which table: per-post performance, the rank-tracker keywords, or the keywords overview. |
from | string | No | Start date. |
to | string | No | End date. |
page | integer | No | 1-based page number. |
per_page | integer | No | Rows per page. |
What comes back
| Name | Type | What it is |
|---|---|---|
rows | array | Each row with clicks, impressions, CTR and average position. |
total | integer | How many rows exist. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Which pages get impressions but no clicks?
It resolves to one call:
{
"ability": "rank-math/get-analytics-rows",
"parameters": {
"type": "posts",
"from": "2026-08-01",
"to": "2026-08-31",
"per_page": 100
}
}Worth knowing
- High impressions and low CTR is a title or intent problem, not a ranking one.
- Average position averages across queries and days. Treat it loosely.
- Tracked keywords are not the same population as ranking keywords.
- Needs a connected Search Console.
Related abilities
- Get Rank Math Analytics Summary — the rollup
- Audit Rank Math Content SEO — act on what the rows show
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category