Google Rank Tracker: Positions, Competitors & AI Overviews avatar

Google Rank Tracker: Positions, Competitors & AI Overviews

Pricing

from $12.80 / 1,000 checked keywords

Go to Apify Store
Google Rank Tracker: Positions, Competitors & AI Overviews

Google Rank Tracker: Positions, Competitors & AI Overviews

Track keyword positions for your site and competitors across countries, cities and devices. Get ranking changes, SERP features, AI Overview citations, ads, share of voice and a client-ready HTML report. Named stores keep comparable history.

Pricing

from $12.80 / 1,000 checked keywords

Rating

0.0

(0)

Developer

Zaiq

Zaiq

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 minutes ago

Last modified

Categories

Share

Google Rank Tracker: keyword positions, competitors and AI Overview citations

Google Rank Tracker: Positions, Competitors & AI Overviews

Get one verdict per keyword: your site’s position, its change since the previous comparable check, AI Overview citations and the leading tracked competitor. Start with one keyword and your domain. $0.016 per keyword for the first page; $0.012 for each additional successfully checked page of up to 10 results.

Use a named tracking store to follow the same keywords every week. Each run includes domain rankings, SERP features and a standalone REPORT.html with share of voice, average positions, gains, losses and competitors entering the top 10. No AI model account is needed.

What you get

FieldWhat it holds
Keyword verdictA plain sentence before the detailed fields. Complete, partial, unverified and unsuccessful checks are distinguished.
Domain positionsBest organic position, exact URL when readable, all observed ranking URLs, previous position, movement and subdomain rules.
SERP featuresAI Overview citations, featured snippet owner, People also ask, local pack and target matches, top stories, videos, shopping, images, sitelinks and knowledge panel. Features describe page one.
AdsAbove, below and inline ad counts and advertiser domains. Page-by-page ad totals are also available. Ad links are never clicked.
Organic resultsTop 10 plus every extracted organic result through the requested depth. A reported total is included only when Google provides it.
SUMMARY and REPORT.htmlCoverage, comparable changes, domain visibility, share of voice, top-3/10/20 counts, AI presence and citation rates, and an HTML report with no external assets.
Verification and retriesPer-page query-word evidence, observed city labels, attempt outcomes and retry counts. Suspect pages remain visible with an unverified status.

What people use it for

  • Weekly SEO reporting: Keep the same keywords and tracking store on a schedule; export the results and share the HTML report.
  • Competitor monitoring: See which tracked sites rank ahead of yours and which domains have entered the top 10.
  • City and device comparisons: Run separate city, country and device configurations without mixing their history.
  • AI and organic visibility: Check whether a site ranks organically and whether the same first page cites it in an AI Overview.

How to use it

  1. Enter one or more keywords and target domains. Put your site first.
  2. Choose country, device and depth. Optionally enter a canonical city and a tracking store name.
  3. Start the run, open the Rankings table, then open REPORT.html from the Output tab.
  4. For repeat tracking, schedule the same input with the same store name. Keep runs using one store from overlapping.

Input

FieldExampleNotes
keywords["best crm software"]1–1,000 unique phrases, at most 300 characters each.
targetDomains["example.com", "competitor.example"]1–20 domains. First is your site. Use hostnames without paths or ports.
countryUSTwo-letter supported country code. Use GB for the United Kingdom. This is a country preference, not GPS.
languageenBlank uses the country’s usual language.
cityCity,Region,CountryOptional Google canonical location name. Country must match. Syntax and country are validated; the result reports the observed location.
devicedesktopdesktop or mobile; histories stay separate.
depth1010, 20, 30, 50 or 100. Each page holds up to ten standalone organic links.
includeSubdomainsonexample.com includes blog.example.com. Off means exact host. www is always folded into its parent. A subdomain never matches its parent.
trackingStoreweekly-rank-checkOptional name of 1–63 letters, numbers and hyphens. Reuse it across runs.
checkAiOverviewonReads the overview already on the page; no model call and no extra event.
maxConcurrency61–8 concurrent keyword checks. Pages within each keyword stay in order; concurrency does not change comparison history.

Output

Each result is one row in the run's dataset (download it as JSON, CSV, Excel, XML or HTML, or read it through the API). An example row (values shortened):

{
"verdict": "#4 for best crm software · US desktop · new baseline · cited in the AI Overview · leader competitor-a.example #1",
"keyword": "best crm software",
"country": "US",
"city": null,
"device": "desktop",
"depth": 30,
"checkedAt": "2026-10-26T10:01:29Z",
"status": "complete",
"targets": [
{
"domain": "example.com",
"bestPosition": 4,
"rankingUrl": null,
"rankingUrlStatus": "redirect-unresolved",
"previousPosition": null,
"change": "new",
"positionChange": null
},
{
"domain": "competitor-a.example",
"bestPosition": 1,
"rankingUrl": null,
"previousPosition": null,
"change": "new",
"positionChange": null
}
],
"serpFeatures": {
"aiOverview": {
"status": "ok",
"present": true,
"citedTargetDomains": [
"example.com"
]
},
"peopleAlsoAsk": {
"present": true
},
"videos": {
"present": true
}
},
"resultCount": null,
"resultsReturned": 27,
"pagesChecked": 3,
"verification": {
"status": "verified"
},
"requestStats": {
"attempts": 3,
"retries": 0
}
}

This example comes from an offline replay of real results pages captured on 26 October 2026. Names, handles and site addresses were replaced where present; fields were shortened. The 27 unique results are what the three saved pages actually contained, after two repeated links were removed. Exact URLs remain null where the saved page contained only an opaque redirect. SUMMARY records coverage, event counts and notes; REPORT.html is a standalone client report.

Pricing

  • $0.016 per checked keyword for the first successful results page.
  • $0.012 per additional successful page of up to ten organic results. Top 30 costs up to $0.04 per keyword; top 100 costs up to $0.124.
  • The same price on every Apify plan. No separate charge for competitors, history, the report or reading an AI Overview.
  • Blocked, failed, repeated, unrecognized or unverified pages are free. Retries do not add a charge. An explicit zero-results page is charged when its query and any requested city pass verification. Partial keywords pay only for verified pages.
  • Apify’s $0.00005 start charge counts towards the buyer’s Maximum cost per run.

What typical jobs cost at the list price:

JobCost
One keyword, top 10$0.01605 including start
100 keywords, top 10$1.60005 including start
100 keywords, top 30Up to $4.00005 including start
1,000 keywords, top 10Up to $16.00005 including start
One keyword, top 100Up to $0.12405 including start

Set Maximum cost per run. The Actor reserves the full affordable depth before starting each concurrent keyword and checks room before every request. Unused reservations return to the budget. Last affordable pages are delivered, followed by free notes. Billing is serialized, and restarted runs skip delivered rows and reconcile additional-page events.

Tips

  • Use a small keyword list first to confirm country, city and device.
  • Keep the same depth across scheduled runs so movement is comparable. A change of scope starts a new baseline.
  • Use a canonical city for local intent. The gl country parameter alone can still return local results from another place.
  • Watch the coverage count alongside average rank. Failed and unverified checks are excluded from aggregate visibility, and the average rank includes only ranked keywords.
  • Share of voice uses fixed illustrative CTR weights, not search volume or measured clicks. The formula and denominators are shown in the report.

Use it through the API

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zaiq/google-rank-tracker").call(run_input={"keywords": ["best crm software"], "targetDomains": ["example.com", "competitor.example"], "country": "US", "depth": "10", "trackingStore": "weekly-rank-check"})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zaiq/google-rank-tracker').call({"keywords": ["best crm software"], "targetDomains": ["example.com", "competitor.example"], "country": "US", "depth": "10", "trackingStore": "weekly-rank-check"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

HTTP (one call, results back)

curl -X POST 'https://api.apify.com/v2/acts/zaiq~google-rank-tracker/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{"keywords": ["best crm software"], "targetDomains": ["example.com", "competitor.example"], "country": "US", "depth": "10", "trackingStore": "weekly-rank-check"}'

Integrations and schedules

  • Schedules: run it every hour, day or week from the Apify Console (Schedules) and keep a history of results.
  • Make, Zapier, n8n, Google Sheets, Slack, Airtable: connect it through Apify's integrations, or send each finished run to a webhook.
  • Datasets: results stay in the run's dataset; export them or read them by API whenever you need them.

Use it with AI agents (MCP)

Add Apify's MCP server (https://mcp.apify.com) to Claude, ChatGPT, Cursor, VS Code or any MCP client. The agent can find this Actor and run it for you: ask it for "track these keywords for example.com and competitor.example each week and show changes". AI agents can also pay for runs directly through Apify's agentic payments.

Limits

  • Public signed-out search results only. No login, CAPTCHA solving or challenge bypass. A check is reported as a failure when the page cannot be read.
  • Google may return fewer than ten organic links on a page. Positions use the requested start offset plus the organic order. Repeated results are removed without closing gaps or moving later positions.
  • Standalone video links count as organic positions. Ads, carousels, local cards and sitelinks have separate fields and do not consume an organic position.
  • Google can rewrite a query, ignore a location or return an incomplete page. The Actor checks the search field and distinctive query words in the first five organic titles, domains and URLs. A weak match, missing city label or different city gets one fresh-session retry. Persistent uncertainty is marked unverified, free and excluded from history and aggregate rankings. The word check is a heuristic: synonyms or unusual titles may be unverified, and a plausible but incorrect page can still pass.
  • A local-pack domain match is unknown when its website link cannot be resolved. Business names are not guessed to belong to a target domain.
  • Full URLs can require a read of Google’s ordinary redirect. An unresolved URL is null; its displayed domain and redirect are retained. Publisher pages and ad destinations are never fetched.
  • Some AI Overviews load after the results page. They are unknown, not absent. Turning the AI check off records not-checked.
  • History compares the same country, language, city, device, depth, matching rules and parser version. A missing previous record is new, never up. Complete checks survive later failed runs.
  • History keeps up to 5,000 keyword snapshots per scope. Do not overlap jobs using the same tracking store; detected concurrent updates are not overwritten.
  • Up to six keywords run concurrently by default (maxConcurrency 1–8). Each page allows 150 seconds and two retries for timeouts or server errors, with backoff. Query/city verification can add one retry. Large or slow runs may take hours. Divide large deep-tracking lists into separate tracking stores when needed.

FAQ

Does a missing rank mean the site disappeared from Google?

No. It means the domain was not found in the successfully checked depth. An incomplete check leaves missing positions unknown.

How is share of voice calculated?

Best positions get fixed illustrative CTR weights: 30%, 16%, 10%, 7.5%, 5.5%, 4%, 3%, 2.5%, 2%, 1.5% for ranks 1–10, then 1.5% × (10 / rank)^1.5. Each domain’s weight is divided by the total for tracked domains. No search-volume forecast is implied.

Can I track a subdomain separately?

Yes. Enter that subdomain as a target. With includeSubdomains on, only that host and its children match.

Can I compare desktop with mobile?

Run each configuration separately. Their results can be compared in your own analysis; automatic ranking changes never mix the two.

Does the Actor promise a local pack in my selected city?

No. It sends the canonical location as uule and checks the observed city label. Missing or different city labels get one retry. If the label still cannot be verified, that page is free and cannot replace your ranking history.

Do AI Overviews incur an AI fee?

No. The Actor reads the overview text and citations in the results page without calling a model.

What happens on a restart?

Rows have stable IDs. Delivered keywords are skipped. Additional-page event counts are reconciled from delivered receipts before more work starts.

Which countries are supported?

US, GB, CA, AU, NZ, IE, IN, ZA, DE, AT, CH, FR, BE, NL, ES, PT, IT, SE, NO, DK, FI, PL, CZ, RO, GR, HU, TR, UA, IL, AE, SA, EG, NG, KE, JP, KR, TW, HK, SG, MY, ID, PH, TH, VN, PK, BR, MX, AR, CL and CO.

Do retries cost extra?

No. Timeouts and server errors get up to two retries. Wrong-query or unverified-city responses get one verification retry. Only verified delivered pages create paid events; SUMMARY shows retry counts.

Will older tracking history still compare?

This version uses a new verification scope. Existing older snapshots remain in the store, but the first verified check starts a new baseline so previously unverified results cannot create false movements.

Support

Questions, a site that changed, or a field you need? Open an issue on this Actor's Issues tab: we answer there, usually within a day.


Also found as: google rank tracker, keyword rank checker, google rank checker, keyword position tracker, serp tracker, competitor rank tracking, AI Overview citation tracker.