SEO TOOLSAI

SERP Rank Tracker - Google Search Position Monitor

Track where your website ranks in Google search results for any keyword. SERP Rank Tracker checks your domain's position across multiple keywords, locations, and devices in a single run. Get ranking positions, page titles, snippets, People Also Ask questions, and related searches — all the SERP intelligence you need to monitor your SEO performance over time.

Try on Apify Store
$0.003per event
2
Users (30d)
64
Runs (30d)
90
Actively maintained
Maintenance Pulse
$0.003
Per event

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

keyword-trackeds
Estimated cost:$0.30

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
keyword-trackedCharged per keyword SERP ranking result tracked.$0.003

Example: 100 events = $0.30 · 1,000 events = $3.00

Documentation

Track where your website ranks in Google search results for any keyword. SERP Rank Tracker checks your domain's position across multiple keywords, locations, and devices in a single run. Get ranking positions, page titles, snippets, People Also Ask questions, and related searches — all the SERP intelligence you need to monitor your SEO performance over time.

Powered by the Serper.dev API, which includes 2,500 free searches when you sign up. No credit card required to get started.

Why Use SERP Rank Tracker?

Most rank-tracking tools charge $50–$300/month and lock you into their dashboards. This actor gives you the same data — live Google positions, SERP features, and competitor visibility — at a fraction of the cost, with full control over scheduling and data export. You own the raw data and can pipe it anywhere: Google Sheets, Slack alerts, or your own database.

Features

  • Bulk keyword rank checking — track hundreds of keywords in a single run, with your domain's exact position reported for each one
  • Domain position tracking — specify a target domain and instantly see whether it appears in the top results, plus its exact ranking position and matched URL
  • Multi-location SERP data — check rankings from 15+ countries including United States, United Kingdom, Canada, Australia, Germany, France, Japan, Brazil, India, and more
  • Desktop and mobile rankings — compare how your site ranks on desktop versus mobile devices, since Google uses different algorithms for each
  • SERP feature extraction — captures featured snippets, People Also Ask questions, and related searches alongside organic rankings
  • Top competitor visibility — every result includes the top 3 ranking URLs (or all results when enabled), so you can see exactly who outranks you
  • Subdomain matching — automatically detects your domain across subdomains (e.g., tracking example.com also matches blog.example.com)
  • Structured JSON output — clean, consistent output format ready for spreadsheets, dashboards, and automated reporting pipelines
  • Free tier friendly — works with Serper.dev's free plan (2,500 searches), making it accessible for small sites and personal projects

How to Use

  1. Get a Serper.dev API key — Sign up at serper.dev for a free account that includes 2,500 searches. Copy your API key from the dashboard.

  2. Configure your input — Enter your API key, add the keywords you want to track (one per line), and optionally specify your target domain (e.g., example.com). Choose a search location, language, and device type.

  3. Run the actor — Click "Start" on Apify or trigger via API/scheduler. The actor queries Google for each keyword and finds your domain's position in the results.

  4. Review the results — Open the dataset to see ranking positions, matched URLs, snippets, People Also Ask questions, and related searches for every keyword.

  5. Schedule for ongoing tracking — Set up a daily or weekly schedule on Apify to build a historical record of your rankings. Export to Google Sheets, webhook, or API for trend analysis.

Input Parameters

FieldTypeRequiredDefaultDescription
apiKeyStringNo*Your Serper.dev API key. Free tier includes 2,500 searches. Get one at serper.dev. *Without a key, the actor runs in dry-run mode with setup instructions.
keywordsString[]YesKeywords to track rankings for. Add one keyword per line. Example: "best coffee maker", "organic dog food".
domainStringNo""Target domain to find in search results (e.g., example.com). Leave empty to get all results without domain matching.
locationStringNo"United States"Country or region for localized results. Supported: United States, United Kingdom, Canada, Australia, Germany, France, Spain, Italy, Brazil, India, Japan, Mexico, Netherlands, Sweden, Switzerland.
languageStringNo"en"Language code for search results (e.g., en, es, de, fr, ja).
numResultsIntegerNo10Number of search results to check per keyword. Range: 10–100. Higher values find domains ranking further down but use more API credits.
deviceStringNo"desktop"Device perspective for the search. Choose desktop or mobile. Google returns different rankings for each device type.
includeAllResultsBooleanNofalseWhen enabled, includes all organic search results in output (not just top 3). Useful for full SERP analysis.

Input Examples

Basic rank check — track your domain for a few keywords:

{
    "apiKey": "YOUR_SERPER_API_KEY",
    "keywords": ["best coffee maker", "top rated drip coffee machine"],
    "domain": "wirecutter.com"
}

Multi-market comparison — mobile rankings in Germany:

{
    "apiKey": "YOUR_SERPER_API_KEY",
    "keywords": ["beste kaffeemaschine", "kaffeevollautomat test"],
    "domain": "example.de",
    "location": "Germany",
    "language": "de",
    "device": "mobile"
}

Full SERP audit — deep scan without a target domain:

{
    "apiKey": "YOUR_SERPER_API_KEY",
    "keywords": ["project management software", "best CRM for small business"],
    "numResults": 50,
    "includeAllResults": true
}

Input Tips

  • Use domain without www. — the actor strips www. automatically during comparison, so example.com matches www.example.com, blog.example.com, etc.
  • Use numResults: 100 if your site typically ranks on page 2–5; the default 10 only scans the first page.
  • Leave domain empty for pure SERP analysis — you'll get top results and SERP features without domain-specific tracking.

Output

Each keyword produces one result object in the dataset:

{
    "keyword": "best coffee maker",
    "domain": "wirecutter.com",
    "position": 3,
    "url": "https://www.nytimes.com/wirecutter/reviews/best-coffee-maker/",
    "title": "The 7 Best Coffee Makers of 2025 | Reviews by Wirecutter",
    "snippet": "After testing 65 drip coffee makers since 2015, we think the OXO Brew 9-Cup is the best drip coffee maker for most people.",
    "searchEngine": "google",
    "location": "United States",
    "language": "en",
    "device": "desktop",
    "totalResults": 1420000000,
    "found": true,
    "topResults": [
        {
            "position": 1,
            "title": "Best Coffee Makers 2025 - Forbes Vetted",
            "url": "https://www.forbes.com/sites/forbes-personal-shopper/article/best-coffee-makers/",
            "snippet": "We tested over 40 coffee makers..."
        },
        {
            "position": 2,
            "title": "The Best Coffee Makers for 2025 | PCMag",
            "url": "https://www.pcmag.com/picks/the-best-coffee-makers",
            "snippet": "Whether you prefer drip, single-serve, or espresso..."
        },
        {
            "position": 3,
            "title": "The 7 Best Coffee Makers of 2025 | Reviews by Wirecutter",
            "url": "https://www.nytimes.com/wirecutter/reviews/best-coffee-maker/",
            "snippet": "After testing 65 drip coffee makers since 2015..."
        }
    ],
    "featuredSnippet": null,
    "peopleAlsoAsk": [
        "What coffee maker does Consumer Reports recommend?",
        "What is the best coffee maker for home use?",
        "Is it worth buying an expensive coffee maker?",
        "What coffee maker makes the hottest coffee?"
    ],
    "relatedSearches": [
        "best coffee maker with grinder",
        "best coffee maker 2025",
        "best drip coffee maker",
        "best single serve coffee maker"
    ],
    "checkedAt": "2025-06-15T14:32:18.456Z"
}

When the target domain is not found in the results, position is null and found is false — you still get the top competing results and SERP features.

Output Fields

FieldTypeDescription
keywordStringThe search query that was tracked
domainStringThe target domain you specified (empty string if none)
positionInteger / nullYour domain's ranking position (1-based), or null if not found
urlString / nullThe exact URL from your domain that ranked, or null if not found
titleString / nullThe page title shown in the SERP for your domain's result
snippetString / nullThe meta description or snippet shown for your domain's result
searchEngineStringAlways "google"
locationStringThe country/region used for the search
languageStringThe language code used
deviceString"desktop" or "mobile"
totalResultsInteger / nullGoogle's estimated total result count for this query
foundBooleantrue if your domain appeared in the results, false otherwise
topResultsArrayTop 3 organic results (or all results when includeAllResults is enabled). Each has position, title, url, snippet.
featuredSnippetString / nullKnowledge Graph description if present
peopleAlsoAskString[]Questions from Google's "People Also Ask" box
relatedSearchesString[]Queries from Google's "Related Searches" section
checkedAtStringISO 8601 timestamp of when the check was performed

Use Cases

  • SEO managers monitoring daily or weekly keyword positions across client portfolios to detect ranking gains, drops, and new opportunities before competitors do
  • Content marketers validating whether newly published articles are ranking for target keywords, and tracking how positions improve over the first 30–90 days after publication
  • E-commerce store owners tracking product-related keywords like "best wireless headphones" or "organic dog food" to ensure product pages maintain visibility
  • Digital agencies running bulk rank checks across dozens of client domains and keywords, then exporting structured data into client reporting dashboards
  • Competitive analysts benchmarking their site against competitors by checking shared keywords and comparing who holds top positions across geographies
  • Freelance SEO consultants generating rank tracking reports for clients without expensive enterprise SEO tools, using the Serper.dev free tier for cost-effective monitoring

How to Use the API

You can call SERP Rank Tracker programmatically from any language. Here are complete examples:

Python

import requests
import time

# Start the actor run
run = requests.post(
    "https://api.apify.com/v2/acts/ryanclinton~serp-rank-tracker/runs",
    params={"token": "YOUR_APIFY_TOKEN"},
    json={
        "apiKey": "YOUR_SERPER_API_KEY",
        "keywords": ["best coffee maker", "organic dog food", "project management software"],
        "domain": "wirecutter.com",
        "location": "United States",
        "device": "desktop",
        "numResults": 20
    },
    timeout=30,
).json()

# Wait for completion
run_id = run["data"]["id"]
while True:
    status = requests.get(
        f"https://api.apify.com/v2/actor-runs/{run_id}",
        params={"token": "YOUR_APIFY_TOKEN"},
        timeout=10,
    ).json()
    if status["data"]["status"] in ("SUCCEEDED", "FAILED", "ABORTED"):
        break
    time.sleep(3)

# Get results
dataset_id = status["data"]["defaultDatasetId"]
items = requests.get(
    f"https://api.apify.com/v2/datasets/{dataset_id}/items",
    params={"token": "YOUR_APIFY_TOKEN"},
    timeout=30,
).json()

for item in items:
    pos = item["position"] or "Not found"
    print(f"  {item['keyword']}: position {pos}")

JavaScript

const response = await fetch(
    "https://api.apify.com/v2/acts/ryanclinton~serp-rank-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN",
    {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
            apiKey: "YOUR_SERPER_API_KEY",
            keywords: ["best coffee maker", "organic dog food"],
            domain: "wirecutter.com",
            numResults: 20,
        }),
    }
);

const results = await response.json();
results.forEach((r) => {
    console.log(`${r.keyword}: position ${r.position ?? "not found"} (${r.found ? "found" : "missing"})`);
});

cURL

curl -X POST "https://api.apify.com/v2/acts/ryanclinton~serp-rank-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_SERPER_API_KEY",
    "keywords": ["best coffee maker", "organic dog food"],
    "domain": "wirecutter.com",
    "numResults": 20
  }'

How It Works

Input (keywords, domain, location, device)
  │
  ▼
┌─────────────────────────────────────────────┐
│  For each keyword (sequential)              │
│                                             │
│  1. Build search request                    │
│     • Map location → country code (gl)      │
│     • Set language (hl), num results, query  │
│                                             │
│  2. Call Serper.dev API                      │
│     POST https://google.serper.dev/search   │
│     • X-API-KEY header for authentication   │
│     • Returns organic results, knowledge    │
│       graph, PAA, related searches          │
│                                             │
│  3. Domain matching                         │
│     • Strip www. from both target & results │
│     • Match exact domain OR subdomain       │
│     • e.g., "example.com" matches           │
│       "blog.example.com"                    │
│                                             │
│  4. Build output record                     │
│     • Position + URL if domain found        │
│     • Top 3 (or all) organic results        │
│     • SERP features (PAA, related searches) │
│     • Knowledge graph → featured snippet    │
└─────────────────────────────────────────────┘
  │
  ▼
Dataset (one row per keyword)

Country Code Mapping

The actor maps location names to ISO country codes for the Serper.dev API:

LocationCodeLocationCode
United StatesusJapanjp
United KingdomgbMexicomx
CanadacaNetherlandsnl
AustraliaauSwedense
GermanydeSwitzerlandch
FrancefrBrazilbr
SpainesIndiain
Italyit

If the location doesn't match a known name, the first two characters are used as a fallback code.

Domain Matching Logic

The actor normalizes both the target domain and each result URL before comparison:

  1. Strips www. prefix from both the target domain and result hostnames
  2. Exact matchexample.com matches example.com
  3. Subdomain matchexample.com also matches blog.example.com, shop.example.com, etc. (uses .endsWith('.' + domain))
  4. Case-insensitive — all comparisons are lowercase

This means tracking example.com will find your site whether Google surfaces the root domain, a blog subdomain, or any other subdomain.

Dry-Run Mode

When no API key is provided, the actor enters dry-run mode:

  • No Serper.dev API calls are made
  • Returns a single dataset item with instructions on how to get a free API key
  • No errors are thrown — safe to test the actor without credentials

How Much Does It Cost?

SERP Rank Tracker runs on Apify's cloud platform and uses the Serper.dev API. Here is a breakdown of both costs:

Apify Platform Cost

UsageKeywordsEstimated Apify Cost
Quick check10 keywords~$0.001 (free tier covers this)
Weekly audit50 keywords~$0.005
Daily monitoring100 keywords~$0.01 per run
Large portfolio500 keywords~$0.05 per run

The actor uses only 256 MB of memory and completes quickly (typically under 30 seconds for 50 keywords), making it one of the cheapest actors to run on Apify.

Serper.dev API Cost

PlanSearches/MonthPrice
Free2,500$0
Hobby50,000$50/mo
Standard250,000$150/mo

Each keyword = 1 API search. The free tier is enough to track 50 keywords daily for an entire month (50 × 30 = 1,500 searches).

Tips

  • Start with the free tier — Serper.dev gives you 2,500 free searches, enough to test extensively and run daily checks on a small keyword set before committing to a paid plan.
  • Use numResults: 100 for deep checks — If your domain typically ranks between positions 20–50, increase the results count to 100 so the actor can find it. Default of 10 only scans the first page.
  • Track desktop and mobile separately — Google serves different results for desktop and mobile. Run the actor twice with different device settings to see how rankings differ across devices.
  • Schedule weekly runs — Set up a recurring Apify schedule to build historical ranking data. Export to Google Sheets to create trend charts showing position changes over time.
  • Leave domain empty for SERP audits — Skip the domain field to get a pure SERP analysis for any keyword, showing who ranks in the top positions, what SERP features appear, and what related questions people ask.
  • Use related searches for keyword expansion — The relatedSearches output reveals keyword opportunities. Feed these back into the actor as new keywords to discover untapped rankings.
  • Chain with other actors — Combine with Company Deep Research to investigate domains that outrank you, or use Brand Protection Monitor to check for brand-related keyword abuse.

Limitations

  • Google only — currently supports Google search via Serper.dev. No Bing, Yahoo, DuckDuckGo, or other search engines.
  • Sequential processing — keywords are processed one at a time. Very large keyword lists (500+) may take several minutes.
  • No historical tracking built in — each run returns current positions only. To track changes over time, schedule recurring runs and compare datasets externally (e.g., Google Sheets).
  • Position accuracy depends on numResults — if your domain ranks at position 35 but numResults is set to 10, it will show as "not found". Increase numResults to scan deeper.
  • Location granularity — the actor maps to country-level codes. City-level SERP variations (e.g., "restaurants near me" for specific cities) may not reflect your local results exactly.
  • Knowledge Graph as featured snippet — the featuredSnippet field uses the Knowledge Graph description, which may not exactly match Google's featured snippet box for all queries.
  • API key required for real data — without a Serper.dev API key, the actor returns setup instructions only (dry-run mode). Serper.dev requires registration, though the free tier needs no credit card.

Responsible Use

  • Respect Serper.dev rate limits — do not exceed your plan's monthly quota. The actor makes one API call per keyword.
  • Avoid excessive scheduling — daily checks are reasonable for active campaigns; more frequent runs waste API credits with minimal additional insight.
  • Do not scrape competitors to spam or manipulate — use ranking data for legitimate SEO analysis, not to reverse-engineer or attack competitor strategies maliciously.
  • Comply with terms of service — ensure your use of ranking data complies with both Apify's and Serper.dev's terms of service.

FAQ

Do I need a paid Serper.dev account? No. Serper.dev offers a free tier with 2,500 searches per month. Sign up at serper.dev — no credit card required. Each keyword tracked counts as one search.

What happens if I run the actor without an API key? The actor enters dry-run mode and returns instructions on how to get a free Serper.dev API key. No errors are thrown, and no API calls are made.

Can I track rankings in countries other than the US? Yes. Set the location field to any supported country such as United Kingdom, Canada, Australia, Germany, France, Spain, Italy, Brazil, India, Japan, Mexico, Netherlands, Sweden, or Switzerland.

How often should I check rankings? For most sites, weekly checks strike a good balance between freshness and API usage. If you are monitoring a fast-moving niche or running a time-sensitive campaign, daily checks may be worthwhile.

What does found: false mean? It means your target domain was not found in the top N results for that keyword (where N is determined by numResults). Try increasing numResults to 50 or 100 to check deeper in the results.

Does this track Google only? Currently, yes. The actor uses Google search via the Serper.dev API. The searchEngine field in the output is always set to google.

Can I track hundreds of keywords at once? Yes. Pass as many keywords as you need in the keywords array. Each keyword is processed sequentially, with one API call per keyword. Be mindful of your Serper.dev API quota.

Is the data real-time? Yes. Each run queries Google's live search results through Serper.dev, so positions reflect the current state of the SERP at the time of the check.

What are People Also Ask and related searches? These are SERP features that Google displays alongside organic results. "People Also Ask" shows questions related to the query, while "Related Searches" shows alternative queries. Both are valuable for keyword research and content planning.

Does subdomain matching work? Yes. If you set domain to example.com, the actor will find matches on www.example.com, blog.example.com, shop.example.com, and any other subdomain.

Integrations

SERP Rank Tracker works with all standard Apify integrations, letting you feed ranking data into your existing workflows:

  • Google Sheets — Automatically export ranking results to a spreadsheet after every run. Build trend charts to visualize position changes over time.
  • Zapier — Trigger Zaps when rankings change. For example, send a Slack notification when a keyword drops out of the top 10 or enters the top 3.
  • Make (Integromat) — Build multi-step automation flows that combine rank tracking with other data sources for comprehensive SEO dashboards.
  • Webhooks — Receive ranking data at any HTTP endpoint for custom processing, alerting, or storage in your own database.
  • Apify API — Call the actor programmatically from any language. Start runs, retrieve datasets, and integrate ranking data into custom applications and reporting tools.
  • Slack / Email — Configure Apify notifications to get alerts when runs complete or when specific ranking thresholds are crossed.
  • Datasets & Key-Value Store — Access structured ranking data through the Apify platform for downstream processing by other actors or external systems.

Related Actors

If you find SERP Rank Tracker useful, check out these complementary actors from the same publisher:

ActorWhat it doesUse with SERP Rank Tracker
Brand Protection MonitorMonitors brand mentions and impersonation across the webDetect competitors bidding on your brand keywords
Website Tech Stack DetectorIdentifies technologies used by any websiteAnalyze tech stacks of domains that outrank you
Website Change MonitorTracks changes on websites over timeCorrelate competitor content changes with ranking shifts
SaaS Competitive IntelligenceGathers competitive intelligence on SaaS productsCompare features and positioning of SaaS competitors found in SERPs
Company Deep Research AgentDeep research on companiesInvestigate companies ranking above you for target keywords
WHOIS Domain LookupDomain registration detailsLook up domain info for sites discovered in your SERP results

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try SERP Rank Tracker - Google Search Position Monitor?

Start for free on Apify. No credit card required.

Open on Apify Store