Google Rank Tracker API: Daily Keyword Positions avatar

Google Rank Tracker API: Daily Keyword Positions

Pricing

from $2.25 / 1,000 rank check (top 10)s

Go to Apify Store
Google Rank Tracker API: Daily Keyword Positions

Google Rank Tracker API: Daily Keyword Positions

Track your Google rankings for a keyword list: position, ranking URL, top 10/30/100, any country or city, desktop or mobile. Shows AI Overview, Local Pack, People Also Ask and shopping features, top 3 competitors, and changes since the last run.

Pricing

from $2.25 / 1,000 rank check (top 10)s

Rating

0.0

(0)

Developer

SteadyScrape

SteadyScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

📈 Google Rank Tracker: SERP Positions, AI Overview & Changes

Track where your website ranks on Google for a list of keywords, in any country, city, language and device. For every keyword you get your position and ranking URL, the SERP features on the page (AI Overview, Local Pack, People Also Ask, shopping, videos and more), the top 3 competitors, and the change since your last run. Built for SEO agencies, in-house marketers, founders and developers who want daily rank tracking without a monthly subscription. Price: $0.003 per keyword checked in the top 10 ($3 per 1,000 keywords), $0.007 for top 30 and $0.025 for top 100, plus $0.015 per run. 100 keywords checked daily cost about $9.45 a month.

  • 🎯 Positions you can trust: organic position (1–100) and absolute position on the page, the exact ranking URL, and any other URLs of yours that rank
  • 🔁 Change tracking built in: give your project a Tracker ID and every run is compared with the previous one: up, down, same, new, lost, plus ranking-URL changes (cannibalization alerts)
  • 🧩 SERP features: AI Overview, Local Pack, People Also Ask, featured snippet, shopping, videos, top stories, forums, images and knowledge graph, and whether your site appears inside them
  • 🤖 AI Overview citations (optional): see whether Google's AI Overview cites your site
  • 🥊 Competitors: the top 3 domains above or around you on every SERP, plus the positions of up to 10 competitors you name, with their changes too
  • 🌍 Any market: 200+ countries, cities and regions (or GPS coordinates for local SEO), 40+ languages, desktop or mobile
  • 💸 Fair billing: you pay only for keywords that were checked successfully. Errors, invalid keywords and checks that time out are free

Use cases

  • Agency client reporting: one Tracker ID per client and market, scheduled daily, exported to Google Sheets or Looker Studio. Show clients what moved up or down without paying per-seat SaaS fees.
  • Local SEO: track "dentist near me" style keywords from a city or GPS point and see whether you're in the Local Pack, for each of your locations.
  • Content and launch monitoring: watch a new page climb for its target keywords, and get alerted when a different URL of yours starts ranking instead (cannibalization).
  • Competitor watch: track up to 10 competitor domains on the same keywords and see who gained or lost positions since the last run.
  • AI Overview visibility: see which of your keywords trigger a Google AI Overview and whether your site is cited in it.
  • SEO tools and AI agents: call it from your own app, a workflow tool or an AI agent to get structured ranking data on demand.

Quick start

{
"target": "apify.com",
"keywords": ["scrape amazon prices", "instagram scraper", "web scraping api"],
"location": "United States",
"depth": "10",
"trackerId": "apify-us-desktop"
}

This run checks 3 keywords in the top 10 and costs $0.015 + 3 × $0.003 = $0.024. Run it again with the same trackerId (or set a schedule) and every row shows positionChange and changeStatus.

Track one exact page in the top 30 on mobile in Germany, against two competitors:

{
"target": "https://www.example.com/pricing",
"keywords": ["project management software", "kanban tool"],
"location": "Germany",
"language": "German",
"device": "mobile",
"depth": "30",
"competitors": ["competitor-one.com", "competitor-two.com"],
"trackerId": "pricing-page-de-mobile"
}

Local SEO for a city:

{
"target": "my-dental-clinic.com",
"keywords": ["dentist near me", "emergency dentist", "teeth whitening"],
"location": "Austin,Texas,United States",
"trackerId": "clinic-austin"
}

Input

FieldDefaultNotes
targetDomain (example.com, any page counts) or full URL (only that exact page counts)
keywordsOne per line, up to 2,000 per run. Duplicates are removed. Search operators such as site: aren't supported
locationUnited StatesCountry name or ISO code, a city/region such as Chicago,Illinois,United States, a location code, or GPS lat,lng,radius
languageEnglishName or code (es, de, pt-BR)
devicedesktopdesktop or mobile
depth1010, 30 or 100 organic results. Deeper checks cost more because Google serves 10 results per page
queueModestandardstandard (cheapest; typically under a minute for top 10, ~4 min for top 30, ~15 min for top 100), priority (faster), live (seconds)
competitorsUp to 10 domains to track alongside yours
trackerIdautoName of the tracking project. Runs with the same Tracker ID are compared. If empty, one is built from target + location + language + device
includeSubdomainstrueCount blog.example.com, shop.example.com etc. as your site
loadAiOverviewfalseLoad AI Overviews that Google shows asynchronously, to check if your site is cited
maxWaitMinutes60How long to wait for queued checks. Checks still queued after that are marked timeout and are free

Output sample

A real top-10 run for apify.com (United States, desktop, second run of the same tracker):

keywordpositionrankingUrlchangeStatusserpFeaturestop competitor
scrape amazon prices1apify.com/junglee/free-amazon-product-scraperup (+2)ai_overview, videoyoutube.com
instagram scraper5apify.com/apify/instagram-reel-scraperup (+1)ai_overview, videoigleads.ai
web scraping apinot in top 10not_rankedai_overview, people_also_askscrapingbee.com

Output

One row per keyword (dataset views: Overview, SERP features, Competitors):

FieldExampleNotes
keywordgoogle maps scraper
statusokok, error, timeout, skipped. Only ok rows are charged
foundtrueYour site is in the checked results
position2Organic rank (1–100), null if not found
absolutePosition4Position counting every SERP element (AI Overview, ads, Local Pack...)
rankingUrl / rankingTitlehttps://example.com/pageBest-ranking page of yours
otherRankingUrls[{"position": 7, "url": …}]Other pages of yours on the SERP
positionChange3Positive = moved up since the previous run
changeStatusupfirst_check, up, down, same, new, lost, not_ranked, not_comparable (depth changed)
previousPosition, previousRankingUrl, rankingUrlChangedFrom the previous run of the same tracker
serpFeatures["ai_overview", "people_also_ask", "local_pack"]Features on the first page
hasAiOverview, hasLocalPack, hasPeopleAlsoAsk, hasFeaturedSnippet, hasShopping, hasVideos, hasTopStories, …trueEasy filters
targetInSerpFeatures["ai_overview"]Features where your site appears
aiOverviewCitedtrueYour site is a source in the AI Overview
topCompetitors[{"domain": "rival.com", "position": 1, "url": …}]Top 3 other domains
competitors[{"domain": …, "position": 5, "positionChange": -1}]The competitors you listed
checkUrlGoogle URL for the same search, to verify by hand
serpCheckedAt2026-10-27T14:27:07ZWhen Google was checked

The run's OUTPUT record in the key-value store has a summary: keywords checked, average position, how many ranked in the top 3/10, how many improved, declined, were lost or are new, and how often each SERP feature appeared.

How change tracking works

Previous results are saved in a named key-value store in your Apify account (serp-rank-tracker-state), one record per Tracker ID. Each keyword is compared with the last successful check of the same keyword, location, language and device. Use a different Tracker ID for each site, market or device you track. To start a project again from scratch, use a new Tracker ID.

Pricing

Pay per event. You pay only for keywords that were checked successfully:

EventPrice
Run start (once per run, only if at least one keyword was checked)$0.015
Rank check, top 10 (per keyword)$0.003
Rank check, top 30 (per keyword)$0.007
Rank check, top 100 (per keyword)$0.025
Priority queue surcharge (per 10 results checked)$0.0015
Live mode surcharge (per 10 results checked)$0.003
AI Overview citations (per keyword where an AI Overview was loaded)$0.002

Apify also charges its standard tiny Actor start fee ($0.00005 per run at the default memory).

Worked examples:

  • 100 keywords, top 10, standard queue, daily: $0.015 + 100 × $0.003 = $0.315 per run, about $9.45 a month.
  • 1,000 keywords, top 10, weekly: $0.015 + 1,000 × $0.003 = $3.02 per run, about $13 a month.
  • 50 keywords, top 100: $0.015 + 50 × $0.025 = $1.27 per run.
  • 100 keywords, top 10, priority queue: $0.315 + 100 × $0.0015 = $0.47 per run.
  • 20 keywords, top 30, live mode: $0.015 + 20 × ($0.007 + 3 × $0.003) = $0.335 per run.

Errors, invalid keywords, timeouts and keywords that were skipped because of your spending limit are never charged. The run stops checking once it reaches your maximum cost per run, so you can never spend more than you set.

How it compares

This ActorMonthly rank-tracking SaaSGeneral Google SERP scrapers
Cost modelPer keyword checked, no subscriptionFixed monthly plan, often with keyword capsPer page or per result
Change since last run✅ built in✅❌ you build it yourself
SERP features and AI Overview✅ incl. whether your site is inside themUsually ✅Varies
Competitor positions✅ top 3 + up to 10 named✅Raw results only
API, webhooks, schedules✅ Apify platformOften on higher plans✅
Dashboards and reports UIUse Sheets / Looker Studio✅ built in❌

If you need a polished reporting dashboard for many users, a SaaS tool may suit you better. If you want raw, cheap, scheduled rank data you can pipe anywhere, this Actor is built for that.

Tips

  • 🗓️ Schedule it: rankings move daily. A daily or weekly schedule with a fixed Tracker ID gives you a ranking history in your datasets.
  • 🐢 Standard queue is the cheapest: in our tests top-10 checks came back in under a minute, top 30 in about 4 minutes and top 100 in about 15 minutes. It can take longer at busy times. All keywords in a run are queued together, so 500 keywords take about as long as 5. Use priority or live when you need answers right away.
  • 🔎 Top 10 is usually enough: track top 30 or 100 only for keywords where you are still climbing.
  • 📍 Local rankings depend on location: for "near me" keywords, use a city or GPS location.

Integrations

  • Schedules: run it daily or weekly with an Apify schedule and a fixed Tracker ID to build a ranking history.
  • API: start runs and fetch results from any language with the Apify API or the Python and JavaScript clients.
  • Make, Zapier and n8n: use the Apify app or node to run the Actor on a schedule and push rows to Google Sheets, Airtable, Slack or email, for example "alert me in Slack when a keyword drops out of the top 10".
  • Webhooks: trigger your own endpoint when a run finishes.
  • AI agents (MCP): connect it through the Apify MCP server so Claude, ChatGPT, Cursor or your own agent can check rankings on demand.
  • Google Sheets / Looker Studio: export the dataset or use the Google Sheets integration for client dashboards.

FAQ

Where does the data come from? From a licensed SERP data provider that checks real Google results for the location, language and device you choose. The Actor doesn't scrape Google from Apify's IPs, so runs don't get blocked by captchas.

Why does my position differ from what I see in my browser? Google personalizes results by your history, exact location and device. This Actor checks a clean, non-personalized search for the chosen location. Use checkUrl to see a comparable search.

Does Google still show 100 results per page? No. Google now serves 10 results per page, so a top-100 check loads 10 pages, which is why deeper checks cost more.

How much does it cost to track 100 keywords every day? About $9.45 a month in the top 10 ($0.315 per run). Top 30 is about $21.45 a month and top 100 about $75.45 a month.

How fast is it? In our tests, standard top-10 checks came back in under a minute, top 30 in about 4 minutes and top 100 in about 15 minutes. All keywords in a run are queued together, so 500 keywords take about as long as 5. Priority and Live modes are faster for a small surcharge.

Am I charged if a keyword fails or times out? No. Only keywords with status ok are charged, and the run start fee is only charged after the first successful check.

Can I see rank history over time? Yes. Every run's dataset is kept in your account, and each row includes the previous position and change. Schedule it with the same Tracker ID and export the datasets, or append rows to a Google Sheet with an integration.

Can I track several sites or markets? Yes. Use one Tracker ID per site, market and device, either as separate tasks or schedules.

Can I track Bing, YouTube or Google Maps rankings? Not yet. This Actor tracks Google web search (organic results, plus the SERP features on the page). For YouTube search rankings, use our YouTube Search API.

Is it legal? It reads publicly available search results through a licensed data provider. You are responsible for how you use the data.

More from SteadyScrape

See every SteadyScrape (steady-scrape) Actor on our Apify profile.

Questions or a feature request? Open an issue on the Issues tab.

Acceptable use

You may not use results from this service to build or operate a search engine, or any product or service that competes with or harms the business of search engine providers.

— SteadyScrape