Google Keyword Rank Tracker API avatar

Google Keyword Rank Tracker API

Pricing

from $3.50 / 1,000 rank checks

Go to Apify Store
Google Keyword Rank Tracker API

Google Keyword Rank Tracker API

Track Google organic positions for your domain across keywords. Get rank position, ranking URL, title, top 3 competitor URLs, date-stamped rows, and exports via Apify API, datasets, webhooks, CSV, Excel, or Google Sheets.

Pricing

from $3.50 / 1,000 rank checks

Rating

0.0

(0)

Developer

Tugelbay Konabayev

Tugelbay Konabayev

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

5

Monthly active users

2 days ago

Last modified

Share

Google Keyword Rank Tracker API — Daily SERP Position Monitoring

Track Google organic positions by keyword — enter a domain and keywords, get current rank, ranking URL, title, top 3 competitors, and date-stamped rows. Built for SEO automation — schedule daily or weekly checks and export to API, CSV, Excel, Google Sheets, webhooks, or MCP workflows. Pay per use — current Store pricing is listed from $3.50 per 1,000 rank checks, depending on your Apify plan tier.

Keyword Rank Tracker overview: daily Google position monitoring and competitor snapshots

Keyword Rank Tracker input and output example Keyword rank tracking dataset preview

Track where your website ranks in Google for target keywords. Monitor ranking positions over time, identify gains and drops, see who is outranking you, and feed rank data into reporting, alerts, and AI SEO workflows.

Best for US-English Google organic rank checks, daily rank monitoring, SEO reporting, competitor snapshots, content performance analysis, and AI-powered SEO workflows.

Track Google Search Rankings Daily

Monitor your website's position for any keyword in Google search results. Detect ranking drops before they impact traffic.

Pay-as-you-go rank tracking API

Use this when you need focused rank checks and exports, not a full SEO suite subscription. You pay per keyword check and can scale schedules up or down from Apify.

Bulk Keyword Position Monitoring

Track multiple keywords and domains in a single run. Perfect for SEO agencies monitoring client rankings.

What does Keyword Rank Tracker do?

This actor checks your domain's position in Google search results for a list of keywords. For each keyword, it searches Google via Apify's SERP proxy and returns:

  • Your position — exact ranking (e.g., position 3, or null if not in top results)
  • Your URL — which page from your domain is ranking for that keyword
  • Your title — the page title Google shows in search results
  • Top 3 competitors — the URLs currently holding positions 1-3
  • Total results count — how many organic results Google returned

Run it daily, weekly, or monthly to build a historical ranking dataset. Compare performance over time, catch ranking drops early, and measure the impact of your SEO efforts.

Why use this instead of alternatives?

NeedThis actorFull SEO suitesDedicated rank trackersManual Google / GSC
Best fitFocused Google organic rank checks in an API workflowResearch, audits, backlinks, dashboardsLocal/mobile/white-label rank reportingFree owned-site signals or spot checks
Pricing modelPay per keyword checkMonthly subscriptionMonthly subscriptionFree, but manual or delayed
API / MCPFull Apify API, datasets, webhooks, MCPVaries by planVaries by planManual exports / Search Console API for owned sites
SchedulingAny Apify scheduleBuilt inBuilt inManual or custom scripts
Competitor snapshotTop 3 organic URLs per keywordBroad competitive toolingRank-focused competitive viewsManual only
Location/device scopeUS-English organic baselineUsually configurableUsually configurableDepends on tool/searcher
SERP featuresOrganic blue links onlyOften broaderOften broaderManual inspection

Key advantage: lightweight pay-per-use automation. Use it when you want current Google organic positions in Apify datasets, API calls, webhooks, Sheets, or AI workflows without buying a broader SEO platform.

Features

  • Multi-keyword tracking — check large keyword lists in scheduled runs
  • Position detection — finds your domain's ranking position within the parsed organic sample
  • Domain matching — handles www / non-www variations automatically
  • Top 3 competitor visibility — see who holds the top positions for each keyword
  • Automatic rate limiting — random 2-5 second delays between keywords to reduce blocking risk
  • Error resilience — individual keyword failures don't stop the entire run
  • Structured output — each keyword produces one clean data row
  • Schedulable — daily, weekly, or monthly via Apify platform scheduler
  • Date-stamped results — every result includes the run date for time-series analysis
  • Export anywhere — JSON, CSV, Excel, Google Sheets, webhook, or Apify API
  • MCP compatible — works with Apify MCP Server for AI agent integration
  • Lightweight — runs on 256MB memory, typically ~2-5 seconds per keyword

Input examples

Track keywords for your domain

{
"domain": "myblog.com",
"keywords": ["best seo tools", "keyword research tool", "content marketing"]
}

Track with deeper result depth

{
"domain": "myshop.com",
"keywords": ["buy running shoes online", "best trail running shoes"],
"maxResults": 50
}

Competitor rank tracking

{
"domain": "competitor.com",
"keywords": [
"project management software",
"task management tool",
"team collaboration app",
"best project management",
"project planning tool"
],
"maxResults": 50
}

US-English organic keyword tracking

{
"domain": "mybusiness.com",
"keywords": [
"emergency plumber",
"best plumbing company",
"water heater repair",
"24 hour plumber"
]
}

Input parameters

ParameterTypeDefaultRequiredDescription
domainStringYesYour domain to track (e.g., myblog.com). Without https://. Handles www variations automatically.
keywordsArrayYesList of keyword strings to track. Each keyword triggers a separate Google search.
maxResultsInteger20NoMaximum number of results to check per keyword (10–100). Higher = finds positions deeper in SERPs, but slower.

Output format

Each keyword produces one row in the dataset:

FieldTypeDescription
dateStringRun date in ISO 8601 format (e.g., 2026-04-04)
keywordStringThe tracked keyword
domainStringYour domain
positionInteger | nullYour ranking position (null if not found in top results)
urlString | nullURL of your ranking page (null if not found)
titleString | nullPage title in search results (null if not found)
totalResultsIntegerTotal organic results parsed for the keyword
top3ArrayTop 3 results: [{pos, url}] — your direct competitors

Example output

[
{
"date": "2026-04-04",
"keyword": "best seo tools",
"domain": "myblog.com",
"position": 7,
"url": "https://myblog.com/best-seo-tools-2026",
"title": "12 Best SEO Tools in 2026 (Tested & Compared) - My Blog",
"totalResults": 48,
"top3": [
{ "pos": 1, "url": "https://ahrefs.com/blog/best-seo-tools/" },
{ "pos": 2, "url": "https://backlinko.com/best-seo-tools" },
{ "pos": 3, "url": "https://moz.com/blog/best-seo-tools" }
]
},
{
"date": "2026-04-04",
"keyword": "keyword research tool",
"domain": "myblog.com",
"position": null,
"url": null,
"title": null,
"totalResults": 50,
"top3": [
{ "pos": 1, "url": "https://ahrefs.com/keyword-research" },
{ "pos": 2, "url": "https://semrush.com/keyword-research/" },
{ "pos": 3, "url": "https://moz.com/keyword-research" }
]
},
{
"date": "2026-04-04",
"keyword": "content marketing",
"domain": "myblog.com",
"position": 3,
"url": "https://myblog.com/content-marketing-guide",
"title": "Content Marketing Guide: Strategy, Tips & Examples - My Blog",
"totalResults": 50,
"top3": [
{
"pos": 1,
"url": "https://contentmarketinginstitute.com/what-is-content-marketing/"
},
{ "pos": 2, "url": "https://hubspot.com/content-marketing" },
{ "pos": 3, "url": "https://myblog.com/content-marketing-guide" }
]
}
]

Integrations

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("tugelbay/keyword-rank-tracker").call(
run_input={
"domain": "myblog.com",
"keywords": ["best seo tools", "keyword research", "content marketing"],
"maxResults": 50
}
)
dataset = client.dataset(run["defaultDatasetId"])
for item in dataset.iterate_items():
pos = item.get("position", "NOT FOUND")
print(f" [{pos}] {item['keyword']}{item.get('url', 'N/A')}")

JavaScript / Node.js

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("tugelbay/keyword-rank-tracker").call({
domain: "myblog.com",
keywords: ["best seo tools", "keyword research", "content marketing"],
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
const pos = item.position ?? "NOT FOUND";
console.log(`[${pos}] ${item.keyword}${item.url ?? "N/A"}`);
}

LangChain / AI Agents

from langchain_community.utilities import ApifyWrapper
apify = ApifyWrapper(apify_api_token="YOUR_API_TOKEN")
loader = apify.call_actor(
actor_id="tugelbay/keyword-rank-tracker",
run_input={
"domain": "myblog.com",
"keywords": ["best seo tools", "content marketing", "link building"]
},
dataset_mapping_function=lambda item: (
f"Keyword: {item['keyword']} | "
f"Position: {item.get('position', 'Not ranked')} | "
f"URL: {item.get('url', 'N/A')} | "
f"Top competitor: {item['top3'][0]['url'] if item.get('top3') else 'N/A'}"
)
)
docs = loader.load()
# Feed into LLM for SEO strategy recommendations

MCP Server (AI Agents)

This actor is compatible with Apify MCP Server, enabling AI agents (Claude, ChatGPT, custom LLM apps) to track keyword rankings programmatically.

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@anthropic/apify-mcp-server"],
"env": {
"APIFY_TOKEN": "YOUR_API_TOKEN"
}
}
}
}

Automated reporting with webhooks

Set up a webhook to trigger when the actor finishes. Use this to:

  • Send ranking reports to Slack or email
  • Update a Google Sheet automatically
  • Trigger alerts when rankings drop below a threshold
  • Feed data into a BI dashboard (Looker, Metabase, Grafana)

Export options

  • JSON — default, structured output via Apify API
  • CSV — export from dataset, compatible with Excel and Google Sheets
  • Excel (.xlsx) — direct download from Apify Console
  • Google Sheets — use Apify's Google Sheets integration for live dashboards
  • Webhook — trigger on run completion for automated workflows
  • API — fetch results programmatically from any language

Use cases

  1. Daily rank monitoring — schedule the actor daily to track position changes. Build a historical dataset and visualize trends in Google Sheets or a BI tool.

  2. SEO campaign measurement — track target keywords before and after SEO work (link building, content updates, technical fixes). Quantify the impact with hard position data.

  3. Content performance tracking — after publishing a new blog post, add its target keywords to the tracker. See how quickly it enters the top 50, top 10, top 3.

  4. Competitor intelligence — track a competitor's domain instead of yours. See which keywords they rank for and at what positions. Identify gaps and opportunities.

  5. Client SEO reporting — agencies can run the tracker weekly for each client, export to CSV/Sheets, and include position data in monthly reports. No manual searching.

  6. Ranking drop alerts — combine with webhooks to get notified when a key ranking drops by 5+ positions. Catch algorithm updates and technical issues early.

  7. US-English baseline tracking — track service and location-intent keywords from a consistent US-English organic search vantage point.

  8. SERP competitor analysis — the top3 field shows who holds positions 1-3 for each keyword. Analyze their content, backlinks, and on-page SEO to learn what's working.

  9. Keyword portfolio management — track 50-100 keywords across different content clusters. Identify which clusters are performing and which need more investment.

  10. AI-powered SEO workflows — feed ranking data into LLMs via MCP Server. Let AI agents analyze trends, suggest content updates, and prioritize SEO tasks automatically.

Cost estimation

This actor uses Pay-Per-Event (PPE) pricing. You pay for each keyword rank check. Current Store pricing is tiered by Apify plan and listed from $3.50 to $5.00 per 1,000 rank checks, plus a tiny actor-start event.

What counts as an eventCost
One keyword rank check1 primary event

Example costs:

ScenarioKeywordsFrequencyMonthly eventsEstimated cost
Small blog, 10 keywords10Daily300~$1.05-$1.50
Business site, 25 keywords25Weekly100~$0.35-$0.50
Agency, 5 clients x 20 keywords100Weekly400~$1.40-$2.00
Power user, 50 keywords50Daily1,500~$5.25-$7.50
Enterprise, 200 keywords200Daily6,000~$21-$30

Your exact cost depends on your Apify plan tier and run frequency.

Comparison with SEO tool subscriptions:

  • Full SEO suites are useful when you need keyword research, backlinks, audits, and dashboards in one product.
  • Dedicated rank trackers are stronger when you need local/mobile rank grids, SERP features, and client-facing reports.
  • This actor is for focused rank-check automation: schedule keyword checks, export structured rows, and wire results into your own reporting or AI workflows.

FAQ

Is this a replacement for Ahrefs, Semrush, or AccuRanker?

No. Use full SEO suites when you need keyword research, backlinks, audits, SERP features, and polished dashboards in one place. Use this actor when you need a focused Google organic rank check API with Apify scheduling, datasets, webhooks, and exports.

How accurate are the rankings?

The actor queries Google's live search results via Apify's SERP proxy with hl=en&gl=us. Rankings can vary by location, device, personalization, and time of day. Treat the output as a consistent US-English organic baseline, not an exact match for every searcher.

Why does my position show as null?

null means your domain wasn't found in the top results for that keyword. Common reasons:

  • Your site doesn't rank in the top 50/100 for that keyword (increase maxResults to 100)
  • Google shows a different URL variation (e.g., www.domain.com vs domain.com) — the actor handles common variations, but edge cases exist
  • The page is new and hasn't been indexed yet

Can I track hundreds of keywords?

Yes. The actor processes keywords sequentially with random 2-5 second delays to reduce blocking risk. One run is capped at 100 keywords. For very large lists, split them into multiple scheduled runs.

How often should I track rankings?

  • Volatile keywords (news, trending): daily
  • Competitive keywords (money keywords): 2-3 times per week
  • Long-tail keywords (informational): weekly
  • Brand keywords: weekly or monthly

Can I track rankings for different countries?

Currently, the actor searches Google with hl=en&gl=us (English, US). It does not yet expose custom country, language, city, or device inputs.

Not currently. The actor tracks organic blue-link positions only.

Does it use Google Search Console?

No. Google Search Console is the authoritative source for owned-property impressions, clicks, and average position, but it is delayed and limited to sites you control. This actor samples live public Google results for any domain you choose.

Export datasets to Google Sheets using Apify's integration, or fetch via API and load into any BI tool (Looker, Metabase, Grafana). Each run is date-stamped, so you can build time-series charts by keyword.

What's the difference between this and Google SERP Checker?

  • Keyword Rank Tracker (this actor): checks where your domain ranks for specific keywords
  • Google SERP & Index Checker: checks which of your sitemap pages are indexed in Google

Use both together for comprehensive SEO monitoring.

Can I use this for competitor analysis?

Yes. Set domain to your competitor's domain and provide the keywords you want to track. You'll see parsed positions within the requested result depth and which pages are ranking.

Troubleshooting

Some keywords return 0 total results

Cause: Google may have blocked the specific proxy request, or the keyword triggered a CAPTCHA.

Fix: Run the actor again — Apify's SERP proxy rotates IPs automatically. If the issue persists for specific keywords, they may be triggering Google's abuse detection. Try simpler keyword variations.

Run takes too long

Cause: Each keyword takes 2-5 seconds (delay between requests). 100 keywords = ~4-8 minutes.

Fix: This is by design to reduce Google blocking risk. For faster results, split keywords into multiple parallel runs (each with a subset). Or reduce maxResults — checking top 20 is faster than top 100.

Position doesn't match what I see in Google

Cause: Google personalizes results based on location, search history, device, and other factors. The actor searches from US-based proxies with no personalization.

Fix: For a fair comparison, search Google in an incognito/private window with no Google account logged in. Results should be closer to what the actor returns.

"Error for keyword" messages in logs

Cause: Individual keyword searches can fail due to temporary proxy issues or Google rate limiting.

Fix: The actor continues processing remaining keywords even if one fails. Failed keywords get an error field in the output. Re-run the actor to retry failed keywords, or increase the delay between runs.

Domain not found but I know it ranks

Cause: Domain matching compares the result URLs against your input domain. Subdomains (blog.domain.com vs domain.com), path-based variations, or AMP URLs may not match.

Fix: Ensure the domain input matches exactly what Google shows in search results. Check the top3 field to see which URLs are actually ranking — this can reveal mismatches.

Limitations

  • US-English results only — searches use hl=en&gl=us. Localized rankings may differ.
  • Organic positions only — does not track ads, featured snippets, People Also Ask, or local pack.
  • Sequential processing — keywords are checked one at a time with delays. Large keyword lists take proportionally longer.
  • Maximum 100 results per keyword — if your site ranks beyond position 100, the actor won't find it.
  • No historical comparison — the actor returns current positions only. You build history by running it repeatedly and storing/comparing datasets.
  • Google rate limiting — very frequent runs (every few minutes) for the same keywords may trigger temporary blocks. Space runs at least 30 minutes apart.

Changelog

v1.0 (2026-04-04)

  • Fixed Actor.logconsole.log for Apify platform compatibility
  • Pinned cheerio to 1.0.0-rc.12 for stable HTML parsing
  • Fixed HTML parsing for Google SERP results
  • Better domain matching (handles www variations)
  • Improved error handling and timeouts
  • Random delay between keywords (2-5 seconds) to avoid blocking
  • Initial release with full rank tracking functionality

See all actors: apify.com/tugelbay