Google Rank Tracker API: Daily Keyword Positions
Pricing
from $2.25 / 1,000 rank check (top 10)s
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
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
| Field | Default | Notes |
|---|---|---|
target | Domain (example.com, any page counts) or full URL (only that exact page counts) | |
keywords | One per line, up to 2,000 per run. Duplicates are removed. Search operators such as site: aren't supported | |
location | United States | Country name or ISO code, a city/region such as Chicago,Illinois,United States, a location code, or GPS lat,lng,radius |
language | English | Name or code (es, de, pt-BR) |
device | desktop | desktop or mobile |
depth | 10 | 10, 30 or 100 organic results. Deeper checks cost more because Google serves 10 results per page |
queueMode | standard | standard (cheapest; typically under a minute for top 10, ~4 min for top 30, ~15 min for top 100), priority (faster), live (seconds) |
competitors | Up to 10 domains to track alongside yours | |
trackerId | auto | Name of the tracking project. Runs with the same Tracker ID are compared. If empty, one is built from target + location + language + device |
includeSubdomains | true | Count blog.example.com, shop.example.com etc. as your site |
loadAiOverview | false | Load AI Overviews that Google shows asynchronously, to check if your site is cited |
maxWaitMinutes | 60 | How 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):
| keyword | position | rankingUrl | changeStatus | serpFeatures | top competitor |
|---|---|---|---|---|---|
| scrape amazon prices | 1 | apify.com/junglee/free-amazon-product-scraper | up (+2) | ai_overview, video | youtube.com |
| instagram scraper | 5 | apify.com/apify/instagram-reel-scraper | up (+1) | ai_overview, video | igleads.ai |
| web scraping api | not in top 10 | not_ranked | ai_overview, people_also_ask | scrapingbee.com |
Output
One row per keyword (dataset views: Overview, SERP features, Competitors):
| Field | Example | Notes |
|---|---|---|
keyword | google maps scraper | |
status | ok | ok, error, timeout, skipped. Only ok rows are charged |
found | true | Your site is in the checked results |
position | 2 | Organic rank (1–100), null if not found |
absolutePosition | 4 | Position counting every SERP element (AI Overview, ads, Local Pack...) |
rankingUrl / rankingTitle | https://example.com/page | Best-ranking page of yours |
otherRankingUrls | [{"position": 7, "url": …}] | Other pages of yours on the SERP |
positionChange | 3 | Positive = moved up since the previous run |
changeStatus | up | first_check, up, down, same, new, lost, not_ranked, not_comparable (depth changed) |
previousPosition, previousRankingUrl, rankingUrlChanged | From 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, … | true | Easy filters |
targetInSerpFeatures | ["ai_overview"] | Features where your site appears |
aiOverviewCited | true | Your 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 |
checkUrl | Google URL for the same search, to verify by hand | |
serpCheckedAt | 2026-10-27T14:27:07Z | When 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:
| Event | Price |
|---|---|
| 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 Actor | Monthly rank-tracking SaaS | General Google SERP scrapers | |
|---|---|---|---|
| Cost model | Per keyword checked, no subscription | Fixed monthly plan, often with keyword caps | Per 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 them | Usually ✅ | Varies |
| Competitor positions | ✅ top 3 + up to 10 named | ✅ | Raw results only |
| API, webhooks, schedules | ✅ Apify platform | Often on higher plans | ✅ |
| Dashboards and reports UI | Use 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
priorityorlivewhen 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
- Keyword Search Volume: find the keywords worth tracking: Google search volume, CPC, competition and a 12-month trend for up to 10,000 keywords per run.
- Bulk Domain Rank & Traffic Checker: domain rank, backlinks, referring domains, spam score and estimated Google traffic for your site and the competitors you see in the SERPs.
- Backlink Checker API: New and Lost Link Monitor: who links to the pages that outrank you: backlinks, referring domains, anchors and dofollow status, plus a new and lost link monitor.
- AI Visibility & Share of Voice Tracker: see whether ChatGPT and Perplexity mention, rank and cite your brand versus your competitors.
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