What a paid rank tracker measures
What we are solving
Section titled “What we are solving”I run a Telegram bot. I ran Semrush over its site and waited for a list of things to fix, and what came back was a table of positions.
One row said position 20 for a phrase people really do type. The product was getting nothing out of that phrase.
So my question was which of these numbers I could act on, and a day later I pulled the same query out of my own Search Console. It came back at 43.3.
A Semrush position and a Search Console position are not even the same kind of number. Working that out took the second half of this page.
What these services are for, and which of them read Yandex, is one section earlier. What the paid panels actually measure.

Semrush Domain Overview for the bot’s site, subdomain view, worldwide, read on 2026-08-11. The domain is blacked out.
I read the whole panel in one pass first, and only then let myself look at a single row — a row on its own describes a better site than I have.
| Panel field | What it said | What it is worth |
|---|---|---|
| Authority Score | 2, flagged “Lacks organic traffic” | A summary of the links, not a lever of its own |
| Organic Traffic | 0 | The outcome every position in the table is supposed to produce |
| Paid Traffic | 0 | Confirms nothing is being bought to cover the gap |
| Referring domains, Backlinks | 10 and 61 | Few sources, several links each. Sources are what counts |
| Organic Keywords | 11 | The pages are indexed and matched to real phrases |
| AI Visibility, Mentions | 0 and 0 | No answer in the tool’s sample named the product |
| Cited Pages | 4, all under ChatGPT | Something was fetched and quoted somewhere. Nothing says where |
| Top Cited Sources | “We have no data to show” | The panel above it has no supporting detail |
| Key Topics | “No topics found. Domain is too small or relatively new.” | The tool needs a footprint it can read. There is none |
The keyword table under it, worldwide, on the same day:
| Keyword | Position | Monthly volume |
|---|---|---|
| войс бот телеграм | 20 | 90 |
| бот который озвучивает текст | 47 | 170 |
| войс бот телеграм | 48 | 90 |
| бот говорит текст | 72 | 90 |
| бот для озвучки текста | 83 | 140 |
Which number I should have read first
Section titled “Which number I should have read first”Organic Traffic, and it was 0. Positions stacked on top of zero traffic describe a site nobody reaches, and I went straight into the rows anyway.
Then put the keyword count next to that zero: 11 keywords matched, the best row at position 20, traffic 0 — and matched keywords sitting on zero traffic are the diagnosis.
My pages exist. Google has them indexed and matched to phrases real people type, and nothing outside the site points at any of them.
Why the same phrase sits in two rows
Section titled “Why the same phrase sits in two rows”войс бот телеграм shows up twice in one export on one day, position 20 in one row and position 48 in the other. I had quoted the better one.
Next to the table sits the scope — subdomain or root domain, worldwide or a single country tab — and beside that sits the date of the database behind it. Change any one of those settings and every figure in the panel moves.
So a row is not a verdict about the site: it is a reading taken under settings I never checked.
What I saw when I ran the query myself
Section titled “What I saw when I ran the query myself”Pin the country and the language, then run the query by hand. It costs a minute:
https://www.google.com/search?q=<query>&gl=ru&hl=ruTen domains came back. Mine was not among them.
Position 20 is the second page, so the panel is not contradicted. I could not confirm it either.
I asked for num=30 to see further down and exactly ten results came back: Google no longer honours that parameter, so page two is a click now, not a string in the URL.
What was on page one turned out to matter more than my position on page two:
t.me botstat.io voicee.ru teamlogs.ru telegram.meyagla.ru help.cloud.just-ai.com cybervoice.io github.com lumendatabase.orgbotstat.io and yagla.ru are listings. cybervoice.io is a competitor’s product.
A product my size gets onto that page by being listed on it, not by outranking the directories that are already there, so that is a distribution job and not a writing one.
Which engine the table is even about
Section titled “Which engine the table is even about”Semrush reports Google, these queries are Russian, and Yandex serves a large share of that demand across the CIS, but there is not one row about Yandex anywhere in the panel.
The panel does not warn you about that either. A tool cannot report on an index it does not read, and I had been reading its silence as an absence of competitors.
What the AI Search block is actually claiming
Section titled “What the AI Search block is actually claiming”For a while I read that block as one fact, but it carries two: Mentions 0, and Cited Pages 4, all four under ChatGPT.
So something of mine was fetched and quoted inside the tool’s own sample, and no answer in that sample named the product. Which pages, and on which prompts, the panel does not say.
What my own property says about the same query
Section titled “What my own property says about the same query”Semrush estimates a position from the outside. Search Console counts the impressions Google actually served. So I pulled the property itself through the Search Console API — dimension query, 2026-05-12 to 2026-08-12, three months.
curl -sS -X POST \ 'https://searchconsole.googleapis.com/webmasters/v3/sites/sc-domain:example.com/searchAnalytics/query' \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{"startDate":"2026-05-12","endDate":"2026-08-12","dimensions":["query"],"rowLimit":100}'| Query | Clicks | Impressions | CTR | Position |
|---|---|---|---|---|
| озвучка детским голосом бот телеграм | 1 | 1 | 100% | 49.0 |
| telegram text to speech | 0 | 24 | 0% | 20.5 |
| bot voice | 0 | 12 | 0% | 41.0 |
| smolevich | 0 | 8 | 0% | 15.4 |
| telegram voice | 0 | 6 | 0% | 51.5 |
| stt модели | 0 | 1 | 0% | 1.0 |
| best stt models 2026 | 0 | 1 | 0% | 10.0 |
| telegram premium voice message transcription | 0 | 1 | 0% | 9.0 |
| moonshine vs parakeet | 0 | 1 | 0% | 11.0 |
| войс бот телеграм | 0 | 6 | 0% | 43.3 |
That is the head of the table, and over the whole period it comes to 74 queries, 278 impressions and 1 click — every figure there is what the API returned.
An earlier version of this table had a dash where the 6 now sits, and I quoted the 43.3 without it.
What an average of six impressions is worth
Section titled “What an average of six impressions is worth”Here are both readings of the one query, side by side:
| Query | The panel said | My Search Console said | Measured |
|---|---|---|---|
войс бот телеграм | position 20, monthly volume 90 | position 43.3, on 6 impressions and 0 clicks | 2026-08-11 panel, 2026-08-12 property |
These are different quantities. Semrush estimates a position on one day out of its own database, and Search Console averages the positions of the impressions it really served.
Then I filtered the same pull to that one query and asked for the days and the pages behind it. That is where the row falls apart:
curl -sS -X POST \ 'https://searchconsole.googleapis.com/webmasters/v3/sites/sc-domain:example.com/searchAnalytics/query' \ -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: application/json' \ -d '{"startDate":"2026-05-12","endDate":"2026-08-12", "dimensions":["date","page"], "dimensionFilterGroups":[{"filters":[ {"dimension":"query","operator":"equals","expression":"войс бот телеграм"}]}]}'Six impressions, on three days out of eighty-nine: two on 23 June at position 53, three on 28 July at 43.3, and one on 31 July at position 24.
Two different pages answered the query as well: /ru took four impressions at position 38, and one article took two at position 54.
So 43.3 is the mean of six impressions, spread over positions 24 to 53 and two pages, and the API will print such a number for any query it showed at all.
The panel’s 20 lands four places from the best of those days and thirty-three from the worst — from this row I cannot say which instrument was closer to the truth.
Pull impressions with position, always. My first version of this page compared two positions, and little of that comparison survived.
The query produced six impressions and no clicks in three months. No reading of the panel changes that.
Which position brought a click and which did not
Section titled “Which position brought a click and which did not”telegram text to speech sat at position 20.5 with 24 impressions and 0 clicks, so two dozen people were shown my result on page two. Not one of them clicked.
That is what page two is worth on a query like this.
The one click of the whole quarter came from position 49, on a single impression, and the query was озвучка детским голосом бот телеграм — the bottom of page five.
The phrase was long and specific, and my page matched it exactly. A long, specific phrase beat a good position here, and no title rewrite would have covered that distance.
Is position 1.0 a fact about demand or about me
Section titled “Is position 1.0 a fact about demand or about me”stt модели came back at position 1.0 with 1 impression and 0 clicks, on 9 August, and I first read that as a phrase nobody types.
Impressions count how often Google showed my result, not how often somebody typed the phrase, so the row is a fact about my page and says nothing about demand.
So I went and checked the phrase itself. Yandex Wordstat gives 56 requests, all regions, 10 July to 8 August 2026.
The conclusion held. The evidence for it is the 56, not the 1: the words people type and whether they pay.
Whether the subscription is still worth paying for
Section titled “Whether the subscription is still worth paying for”Mine reports zeros and a page of directories. I knew about the zeros and the directories already, but the work it points at is off-site, and no subscription does that work for me.
So I publish the totals with the zeros in them: 74 queries, 278 impressions, 1 click over three months. That is what a small project in search really looks like, and I would rather have read someone else’s numbers before I read my own.
What did not work
Section titled “What did not work”- Acting on the reported position 20. I searched for
войс бот телеграмwithgl=ruandhl=ru, ten domains came back without mine, and position 20 is the second page, so the report is unverified rather than disproved. Either way the user sees nothing. - Asking for a deeper result page to settle it.
num=30returned ten results. The parameter that made hand-checking cheap is gone, so every check past ten results now costs me a click. - Reading one panel as “the search market”. Semrush reports Google, my phrases are Russian, and Yandex serves that demand too, yet not one row in the panel is about Yandex, and the panel does not say so anywhere.
- Treating Authority Score as a target. Score 2 sits on 61 backlinks from 10 domains, the score is a summary of those links, and chasing it means buying links, a route that ends badly.
- Reading Cited Pages 4 as visibility. Mentions were 0 and Top Cited Sources was empty, though four pages were cited somewhere in ChatGPT’s sample. That is the whole of what the panel claims.
- Waiting for the tool to say what to write. Key Topics answered “No topics found. Domain is too small or relatively new.” A tool that reads an existing footprint cannot create the first one for me.
- Buying the subscription before the off-site work. It bought me a keyword list and a competitor’s name, and I could have found the list and the name by hand in an evening. Neither changed what I had to do next.
- Leaving the reported position unchecked against my own property. The hand-check could not disprove position 20, so I let it stand, and then one API call brought back what Google had actually served. That was the pull worth making first.
- Publishing 43.3 with a dash where the impressions go. I quoted an average and dropped the one field that says whether it means anything: six impressions on three days, positions 24 to 53. With the 6 in the row, nobody would have read it the way I wrote it.
- Calling a one-day panel estimate and a ninety-day property average a comparison of positions. The panel and the property aggregate differently, and a gap between them is what you get when both instruments work fine. I published that gap as a finding about the panel.
- Reading one impression as a statement about demand.
stt моделиcame back at position 1.0 and I wrote that nobody types it. Search Console counts how often my result was shown, which is a fact about me. Wordstat counts the query and says 56 a month. - Expecting a decent position to produce clicks on its own. Position 20.5, 24 impressions, 0 clicks. I spent an evening hunting for a title and snippet fix that does not exist on page two.
Verify
Section titled “Verify”- Run the query yourself, in a clean profile, with the country and the language pinned, then count the domains and look for your own.
- Ask for more than ten results and count what actually comes back.
- Before you quote anything out of the panel, check the scope it is showing, and check the date of the database behind it too.
- Run the same query by hand on the second engine of your market, because no panel in this tool covers it.
- Next month, put the tool’s Organic Traffic estimate next to clicks in Search Console — an estimate of 0 is the one figure that needs no trust.
- Pull the same query from your own property, over a period long enough to hold impressions, then put both positions in one row.
- Read impressions and clicks next to every position you quote. A position with no clicks under it is not a result yet.
The zeros above are an off-site problem, and that has its own page: where the first external links come from. Inside Telegram the index is a separate one: search inside the platform. What each tool is for: what to run and when.
