Docs
Rank Tracker
Track where a site stands in Google and Bing, in the local pack and on Google Maps, on your own DataForSEO account or a monthly Rank Tracker budget.
What the Rank Tracker measures
The Rank Tracker, found in the main menu under Intelligence → Rank Tracker, lists every client of your workspace; open a client to see its keywords. It records where the client's site stands for the keywords you choose: in Google and Bing, on desktop and on mobile, from a country, a city or a postcode, and in Google's local results. Competitors are read from the same results, so you see who stands above the client without paying for a second search.
Every position is one real search, made from one place at one moment, and kept with the results list it was read from. That is the difference to a number on its own: you can open any position and see the list behind it.
The searches run on your own DataForSEO account. CrunchJunkie adds nothing to their price and sets no keyword limit. Without an account of your own, they can run on CrunchJunkie's, paid from a monthly Rank Tracker budget in which each search is charged at twice DataForSEO's price (see below).
Connect your DataForSEO account
The Rank Tracker uses DataForSEO, a search-results provider. To use an account of your own, create one at dataforseo.com, add credit, and open API Access in its dashboard. You need two values from there: the API login and the API password. The API password is not the password you sign in with.
Open Settings → Rank Tracker and enter both. CrunchJunkie checks them against DataForSEO before saving, stores them encrypted and never shows the password again. One account serves every client of your workspace. Any member can connect it; only admins and owners can remove it. Removing it stops the checks and keeps your keywords and history.
If the account has an IP whitelist switched on, DataForSEO refuses our requests. Switch the whitelist off under API Access, then connect again.
Add keywords
Choose Add keywords and enter one keyword per line; up to 2,000 at a time. A line with a search operator such as site: cannot be tracked, a line entered twice is taken once, and the dialog tells you which lines it left out and why.
If the client's Search Console is connected, Show searches lists the searches Search Console reports for the site in the last 90 days that you do not track yet, from the country chosen under Where the search is made from: up to 2,000, the most impressions first. Search Console leaves out searches too rare to report. A filter narrows the list by text, or to searches shown at least 5, 10, 50 or 100 times. Impressions count how often the site was shown, not how often people search: a keyword where the site sits on page nine is shown rarely however popular it is, which is why the list starts at one impression. The position beside each search is Search Console's average over all devices and days in that country. It is there to help you choose, and it is not the position the tracker will measure.
Then choose the place the search is made from, the language, and where to search: Google desktop, Google mobile, Bing desktop, Bing mobile, Google's local list and Google Maps. For Google and Bing you choose how many results to ask for: the top 20, 30, 50 or 100 (Bing: at most 50). Optionally name the page you want to rank for these keywords, and add tags to group them. Tags given in the dialog apply to every keyword of the entry; to tag a single keyword, put its tags after a vertical bar on its line (dentist auckland | Local, Core), or paste two columns from a spreadsheet. Later, select keywords in the table and choose Tag to add or remove tags.
The dialog shows what the choice costs per month before you save it.
Places, and what Bing can do
A place can be a country, a region, a city, a district or a postcode from DataForSEO's list, or coordinates typed as latitude, longitude. The list does not hold every postcode of every country; where one is missing, use the city or coordinates.
Google is searched on the country's own domain (google.co.nz for New Zealand, google.de for Germany) from the place you chose.
Bing can only be pointed at a country or a region. For a keyword with a city or postcode, Bing is searched for the whole country, and every such position carries the note "Whole country". We say so instead of presenting a national Bing position as a local one.
Reading the table
Each row is a keyword, each column a results list. The large number is the position among organic results. The small number beside it is the place among everything on the page, counting ads, the local pack and answer boxes; it tells you how far down the page the result really sits.
Below the position is the change since the previous check. "New" means the site was not in the results before and is now; "Left" means the opposite. A keyword that is not found reads "Not in the 37 results", with the number of results the search engine actually returned, because that is what the search was measured against.
Other states are named, never left blank: "Off" means the list is not switched on for this keyword, "Not checked yet" that no run has reached it, and "Search failed" that the search engine gave no usable answer. A failed search shows the last position that was measured, marked as last known.
The tiles above the table count keywords: how many were checked, how many stand in the top 3 and the top 10, and how many moved. Each count names what it was counted over. The average position is calculated over the keywords that rank and says how many those are.
Changes over a period, and keywords that crossed a line
By default a position is compared with the last earlier check that got the same kind of results page (see below: Google answers the same search with a short or a full page). A check of the other kind in between is skipped. Under "Changes measured against" you can choose 7, 28 or 90 days earlier instead. The tracker then takes the newest such check that is at least that many whole days older. A keyword with no check that old is not compared; a younger check is never used in its place. Hover a change to see the date it is measured against.
Under the tiles for the top 3 and the top 10 you see how many keywords entered and how many left that range between the two checks. Click a number to list them. Outside the range includes "not found". Two checks that came back as different forms of results page are not compared, so they are never counted as a crossing.
When you filter by a tag or by a search text, the tiles, the chart and the views beside the table count the keywords you narrowed to, and a line above the tiles says how many of how many. A view such as Top 10 or Moved does not narrow the tiles.
Pages, found domains and tags
Beside the keyword table there are three more views. None of them sends a search; they read what is already stored and cost nothing.
Pages lists the pages of the site that rank, with how many keywords each ranks for, how many of those are in the top 3 and top 10, and the average position over that page's keywords. Below it are the keywords on which pages take turns: every time the site's first result was a different page than at the ranked check before it, with the date and both positions. Where two pages go back and forth, they compete for the same search.
Found in the results counts the domains in the first ten organic results of your keywords, at the newest check of each: for how many keywords a domain is there, how often it is in the top 3, and for how many it stands ahead of the client's own site. Domains you already track are marked. Choose Track to add one as a competitor; its positions are then read from the results lists that are still stored in full, so the comparison does not start empty. A domain that appears often is not necessarily a competitor: directories and publishers rank for many searches.
Open a domain to see its pages that rank: each page with its title, the keywords it ranks for and its position on each, and next to every keyword where the client's own site is on the same results list (green where the own site is ahead). For a directory or a list article, that page is the one worth being listed on.
When the client has an AI Visibility project, a Cited by AI column counts in how many of the AI answers to its tracked prompts over the last 30 days a page of the domain was cited, and an opened domain marks the exact pages that were cited. Gemini names the site a source came from, never the page, so a Gemini answer counts for the domain and never for a page; a page's count is out of the answers whose engine names pages. The answers are the same ones every AI Visibility figure uses: the latest scan of each day, first answers only, and only sources the answer itself cited, not pages an engine only read. A page that ranks for your keywords and is also cited by AI engines is a strong place to be. The filter Cited by AI narrows the list to those domains. Like the rest of this view, it reads stored data only: no search is sent and nothing is charged.
By tag shows the same figures as the tiles for every tag. A keyword with two tags is counted under both, so the rows do not add up to the total.
Search volume
The column "Searches a month" shows Google Keyword Planner's average monthly searches for the keyword. It is the figure for the whole country of the keyword's place, not for the city, and for the keyword's language where Keyword Planner knows it. Google rounds the figure, so it is shown as a range such as 100 to 1,000. "Under 10" means Google reports fewer than ten searches or none.
The figure says how often a keyword is searched. It does not say how many visits a position brings, and the Rank Tracker does not estimate traffic from it. Looking it up costs nothing, is charged neither to your DataForSEO account nor to a Rank Tracker budget, and is refreshed every 30 days. It is available for 27 countries; elsewhere the column shows a dash.
Why a position can differ from what you see
Three reasons, all of them normal.
A search is answered for one place, one device and one moment. Your own browser adds your location, your sign-in and your history. Open the same search from the evidence panel and you will often see a different order.
Google answers the same search in two forms: a short results page of a few dozen results and a long one of close to a hundred. The two rank differently. In our tests one site stood 5th in the short form and 24th in the long one, within two hours. The two forms are different result sets, not one list cut short: on 2 Oct 2026 the short form of "ads agentur hamburg" put an SEO agency first and a Facebook-ads agency second, while the long form showed the Google Ads agencies a searcher expects. When a search asked for 60 results or more comes back as the short form, the tracker asks Google once more, ten minutes later, for the long one; the evidence panel says when this happened and how many results the first answer had. The second ask is billed like any check. The tracker stores how many results each check returned, and a change is only measured between checks of the same form. When a keyword has no earlier check of its form, both positions are shown and the difference is not called a change; such keywords appear under Needs attention.
Search engines return fewer results than asked for. Asking for the top 100 does not mean 100 results came back.
Local results: three different lists
Google shows local businesses in three places, and they do not rank the same: the local pack of three inside the results page, the longer list that opens behind it, and Google Maps. The Rank Tracker reads all three and names the list with every position. The local pack is read from the normal Google search at no extra cost; the local list and Google Maps are searches of their own.
A business is recognised by its Google business id. You do not have to know the number: under Set-up and cost, paste the address of the business from Google Maps (open the listing, copy the address from the browser's address bar) and the id is read from it. After the first local check the id is also filled in by itself when exactly one listing links to the site. Without it, a listing is recognised by the website it links to, and a listing without a website cannot be recognised. A business is never matched by its name.
AI Overviews
When Google shows an AI Overview for a keyword, the table says so and says whether the client's site is among its sources: "cited", "not cited", or "sources not read" when Google delivered the overview without its source list. Google often loads an overview after the page; the tracker asks DataForSEO to load those too, which adds $0.0006 to each Google check, so "sources not read" should be rare. The share of citations is counted over the overviews whose sources could be read.
This is one search per week from one place. For how AI engines answer across prompts, engines and repeated runs, use AI Visibility; the two measure different things and are not added together.
Evidence
Click any position. The panel shows when the search ran, on which domain, how many results came back on how many pages, what the check cost, every tracked domain's position in that search, the history of the keyword, and the results list itself with the tracked domains highlighted. A link repeats the same search in your browser.
Results lists are kept in full for eight weeks. After that a list is shortened to the top ten results and the rows of your tracked domains. Positions are kept without a time limit.
Schedule and refresh
Rankings are checked once a week, on the weekday and hour you set for each client under Set-up and cost, in the client's own timezone. The weekly run uses DataForSEO's standard queue, whose results normally arrive within the hour.
Refresh now checks all keywords, or the ones you selected, straight away. It uses the high-priority queue, which answers in about a minute and costs twice as much per page. The dialog shows the most it can cost, and nothing is spent until you confirm. A search that Google answers with the short results page is asked once more ten minutes later, so a refresh can take a quarter of an hour to finish. The most a check can cost includes that second ask and the AI Overview sources.
Alerts, the weekly digest and client digests
The Rank Tracker raises signals in the Signals inbox, next to the AI-visibility ones. They come only from the weekly scheduled check, compared with the scheduled check before it; a manual refresh never raises one.
One check is one sample: Google can answer the same search differently minutes apart (in our own test one keyword read 5, 24, 24, 24 and 1 within two hours). So when the scheduled check would raise a signal, those keywords are checked a second time within the hour, and the signal is raised only if both readings agree. The second reading is charged like any check to your DataForSEO account or your Rank Tracker budget (a few cents for a handful of keywords), appears as Confirmation re-checks in the cost ledger, and never changes a position, a chart or a report.
What it raises: keywords that left or entered the top 10 or the top 3; a tracked competitor that moved above the client on the first page; a different page of the site ranking for a keyword (a warning when the page you set as the target stops ranking); Google's AI Overview starting or stopping to cite the site, only where both checks could read the overview's sources. There is one signal per client and kind each week, listing the keywords with both positions and how many positions were compared. Two conditions are reported as well and clear by themselves: a scheduled run that stopped (no funds, a rejected login) or lost a fifth of its checks, and a DataForSEO balance that will not last three more weeks at your recent spend, or cannot cover the next scheduled checks. On a Rank Tracker budget, that warning is about the budget instead: it is raised when the budget left will not cover the next scheduled checks, or not all the weekly runs until the period ends.
Automations can act on any of these; four ready-made ones are under Search rankings, including "AI Overview citation lost", which drafts an action plan for your approval. The Monday digest adds a Rankings section per client: top 10 and top 3 over the keywords checked, and moves against a week earlier. A client digest can carry the rankings too: switch it on in the client's digest settings. Because that changes what the client receives, the digest needs your approval again.
What it costs
On your own account, DataForSEO charges in US dollars per page of results: USD 0.0006 per page on the standard queue and USD 0.0012 on the high-priority queue. A page holds ten organic results, so the ten pages of Google's top 100 cost at most USD 0.006 per keyword, device and week. Two things come on top for Google: USD 0.0006 for loading the AI Overview's sources, and, when Google answers with its short results page, a second ask for the full one, which can add up to six pages and another USD 0.0006. The most a Google check can cost is therefore USD 0.0108 on the standard queue; most cost far less. Bing has neither. The local list and Google Maps cost one to two pages per check.
You are charged for the pages a search engine returns, which is often fewer than you asked for, so the real cost usually lies below the maximum. Every amount CrunchJunkie shows before a run is that maximum and is labelled "up to". What was really charged is shown under Set-up and cost, for the last 28 days.
A search that fails on the search engine's side can still be billed by DataForSEO. A failed search is tried again at most twice.
Competitors cost nothing extra. A check reads every tracked domain from the same results list.
Without a DataForSEO account: a Rank Tracker budget
If you would rather not open a DataForSEO account, choose a Rank Tracker budget under Billing. The searches then run on CrunchJunkie's DataForSEO account, and each search is charged to the budget at twice what DataForSEO charges for it, in your billing currency, rounded up to the cent. Budgets are monthly: €25, €50, €100, €250 (US$29, US$55, US$109, US$275), VAT excluded.
A run starts only when the budget left covers the most it can cost. While it runs, that maximum is held back, and each search is charged at what it really cost once DataForSEO reports it. So a run never stops half way. A search counts from the moment it is sent, because that is when DataForSEO takes the money for it. If its result has not come back by the end of the run (DataForSEO did not answer within six hours, the run was stopped, or you deleted its keyword or its client while the run was going), the most that search can cost stays held back until DataForSEO reports what it cost. We check once a day, so this hold is brief, usually a day or two, and it is released when the search is settled: the search is then charged like any other, from what DataForSEO charged for it. If DataForSEO never reports a cost for it (it answered without one, the search failed with an error DataForSEO does not bill, or there was no result within three days), it is not charged; Billing lists such searches as not charged. If a fault on our side sends a search a second time (we lost track of the first one after sending it), you are charged for one search; the other is ours. A scheduled run that the budget cannot cover does not start: the page says so and a signal is raised. A signal also warns when the budget will not last until the end of the period.
A budget bought part way through a billing period is charged and granted for the part that remains. An upgrade adds the difference for the rest of the period; a downgrade applies from the next period; a cancelled budget can be used until the end of the period paid for. Unused budget does not carry over. Searches already run stay charged to the period when you later delete their keyword or their client. During a trial, up to €5 of it can be used, and nothing is charged before the first invoice.
Under Billing you see what the budget was charged, by client, results list, day and how the search was started, and how many keywords each budget covers at your settings at the most. Your own DataForSEO account, when connected, always comes first: the budget is then not used.
Competitors
The client's own site is taken from the website in the client's settings. Positions are read for that domain, its www form and its subdomains; a subdomain such as shop.example.com counts only for itself and below, never for example.com. When the website in the client's settings changes, the own site follows it, unless another own site was chosen under Set-up and cost, or the new website is a subdomain of the own site (example.com to shop.example.com: results on example.com and its other subdomains would stop counting). Then Set-up says that the two differ and offers to read positions for the client's website instead, in one click. Change, under Set-up and cost, sets another own site on purpose.
A position is a statement about a domain, so the own site is never renamed when it moves. The old domain keeps the positions measured for it and stays listed as a previous own site, outside the ten competitors; choose it under "Positions of" above the table to see them. A previous own site is still read from every search, at no extra cost, up to three of them. When the own site moves once more, the oldest previous own site stops being read: it stays listed, with the positions measured until then, and the move goes ahead (a change of the website in the client's settings included). The new domain's positions are read from the results lists already stored, at no cost: every list still kept in full, which is the last eight weeks. While some are not read yet, Set-up says how many, with Read on. A check whose list could not be read for the new domain shows as not checked for it, never as not found, and no change is measured against it. A domain added or an own site moved while a run is going is read from that run's lists when the run ends.
Under Set-up and cost, add up to ten competitor domains per client; you can paste a full link, only the domain is kept. "Compare with competitors" in the table shows their positions beside the client's for the chosen results list, and marks a competitor that stands above the client.
A competitor added today appears in checks from today on. Older results lists that were already shortened hold the competitor only where it stood in the top ten.
Rankings in reports
Rank Tracking is a data source in the report builder for every client that tracks keywords; it needs no further connection. Its widgets show the keywords checked and how many stand in the top 3, 10 and 20, the average position, keywords in the top results per weekly run, positions by bucket, a table of keyword positions, the biggest movers, and a comparison with competitors.
Numbers in reports are counts of keywords and name their base ("of 24 keywords"). A metric without a prefix is about the client's main results list, normally Google desktop; "Bing desktop: Top 10" names its list. For the report's period, each keyword counts with its last check inside the period. The average position is shown as a figure and is not charted.
Charts of Google desktop and mobile positions, in reports and on the Rank Tracker page, mark Google's ranking updates: a band from the day a rollout began to the day Google said it was complete, dated from Google's Search Status Dashboard and named under the chart. Each run is one moment, so an update that began between two weekly runs starts between them. The band shows timing only, not a cause: it says an update was running, not that it moved a keyword. Charts of Bing, Google's local list and Google Maps get none, and so does a chart that mixes one of them with a Google line. A widget's Show Google ranking updates switch hides them.
With an assistant (MCP)
The connector gives an assistant ten ranking tools. Four read: get_rank_tracking_setup, find_rank_location, get_rankings and get_ranking_evidence. Five change the set-up and show a preview before anything is saved: add_rank_keywords, update_rank_keywords, remove_rank_keywords, manage_rank_competitors and set_rank_schedule. One spends on your DataForSEO account or your Rank Tracker budget: refresh_rankings. It needs the switch "Allow actions that spend AI" under Settings → Connect AI assistants (MCP), shows the most it can cost, and runs only after you confirm.
Limits
What the Rank Tracker does not do today: daily checks (the schedule is weekly, with manual refresh in between), search engines other than Google and Bing, and Bing positions for a city or postcode. It reports positions in search results; it does not measure clicks or traffic, which Search Console and Google Analytics report.
Getting started Reporting Report templates Filtering, dimensions & comparisons Sharing & delivering reports White-label & branding Metrics glossary AI visibility Your own AI API keys Perception AI Shopping Visibility GEO Audit AI crawlers & crawlability AI traffic from GA4 Monitoring Signals & Automations Integrations Looker Studio Connect to Claude & ChatGPT (MCP) REST API Webhooks Single sign-on (SSO) Account & billing Data, privacy & security The Crunch assistant Refer a friend FAQ