Use-case guide · SEO & Search

Track keyword rankings, news and SERP features on Google

Check where your site ranks for every keyword, in every country you sell in, on your own schedule. Get organic results, related searches and news coverage as clean JSON, without fighting CAPTCHAs.

Rank tracker

example.com · United States

vs last week
KeywordRankChange
trail running shoes#23
waterproof hiking boots#51
running socks#8
best trail shoes 2026#112
Related searches: trail running shoes for beginners, wide trail shoes

The challenge

Why this is hard to do yourself

Building it in-house

  • Google shows CAPTCHAs and blocks to repeated automated searches, so homemade rank checkers stop working.
  • Results change by country and language, which means running checks from many locations.
  • Search result pages mix ads, AI overviews, images and videos, so finding the real organic rank is fiddly.
  • Commercial rank trackers charge per keyword per month, even for keywords you only check weekly.

With DataGuru

  • One request per keyword returns organic results with their rank, title, link and snippet.
  • Set `country` and `language` per request to see local results.
  • Organic results, related searches, AI overviews and pagination come back as separate fields.
  • Pay per successful search, so you decide how many keywords to track and how often.

How it works

Set it up in 4 steps

  1. 1

    Pick your keywords

    List the keywords you want to rank for and the countries that matter to you.

  2. 2

    Schedule searches

    Run a daily or weekly job that sends each keyword and country to the Google Search API.

  3. 3

    Record positions

    Find your domain in `organic_results` and save its `rank` with the date.

  4. 4

    Report and alert

    Chart ranking trends, flag big drops and see which competitors moved above you.

Example

A daily keyword rank tracker in Python

This script searches each keyword, finds the first result from your domain and saves its position. Keywords where you don't appear in the results are saved with no rank.

import csv
import datetime
import requests

API_URL = "https://api.dataguru.cc/api/v1/google/search"
HEADERS = {"Authorization": "Api-Key YOUR_API_KEY"}

MY_DOMAIN = "example.com"
KEYWORDS = ["trail running shoes", "waterproof hiking boots"]
COUNTRY = "us"


def position(keyword):
    res = requests.post(
        API_URL,
        headers=HEADERS,
        json={"query": keyword, "country": COUNTRY, "num_results": "50"},
        timeout=60,
    )
    res.raise_for_status()
    for result in res.json().get("organic_results", []):
        if MY_DOMAIN in result.get("link", ""):
            return result["rank"], result["link"]
    return None, None


with open("rankings.csv", "a", newline="") as f:
    writer = csv.writer(f)
    today = datetime.date.today().isoformat()
    for keyword in KEYWORDS:
        rank, url = position(keyword)
        writer.writerow([today, COUNTRY, keyword, rank, url])
Response · 200 OK
{
  "search_information": {
    "total_results": 48200000,
    "query_displayed": "trail running shoes"
  },
  "organic_results": [
    {
      "rank": 1,
      "title": "The Best Trail Running Shoes, Tested",
      "link": "https://www.example-reviews.com/trail-running-shoes",
      "displayed_link": "example-reviews.com › gear",
      "snippet": "We ran hundreds of miles to find the best shoes for grip and comfort."
    },
    {
      "rank": 2,
      "title": "Trail Running Shoes for Men & Women",
      "link": "https://www.example.com/trail-running-shoes",
      "displayed_link": "example.com › shoes › trail",
      "snippet": "Shop lightweight trail runners with free returns."
    }
  ],
  "related_searches": [
    {
      "query": "best trail running shoes for beginners"
    }
  ]
}

Example response trimmed to the fields used above. Values are illustrative.

What you get

What you can do with the data

Daily rank tracking

Store the rank of your pages for every keyword and see exactly when they move.

Competitor visibility

See which domains rank above you in organic_results and how that changes over time.

Local SEO checks

Compare rankings across countries and languages with the country and language parameters.

Keyword ideas

Collect related_searches to find new keywords people search for around your topic.

Brand news monitoring

Follow coverage of your brand and competitors with the Google News API.

Image search checks

Use the Google Images API to see where your product images show up.

What it costs

Tracking 100 keywords in one country, once a day:

$6.60 / month

3,000 requests × $0.0022 / req on the Google Search API. No subscription or minimum; you only pay for successful requests.

See all pricing

Who it's for

Built for teams like yours

  • SEO teams
  • Marketing agencies
  • Content teams
  • E-commerce brands
  • PR and comms teams
  • Founders tracking their market

FAQ

Frequently asked questions

The Google Search API returns up to 50 organic results per request through num_results, which covers the first five pages.

Start building today

Create an account and get $1.00 of free balance to try every API in this guide. No credit card required.