All articles

· 6 min read

How to Check Keyword Rankings Accurately in Any Country

"Where do we rank for this keyword?" sounds like a question with one answer. In practice the answer depends on who is searching, from where, in which language and on which day. Two people on the same team can search the same phrase and see your page at position 3 and position 11. This guide explains why rankings vary, how to check them by hand without fooling yourself, and how to automate checks for a fixed market with an API so the numbers you report are consistent.

Why there is no single "true" ranking

Search engines tailor results to the person searching. The main factors that move a page up or down for the same query:

  • Country. Each market has its own index priorities, local sites and language variants. A UK retailer can rank on page one in Great Britain and nowhere in the US.
  • Language. The interface language influences which pages are considered relevant, especially in multilingual countries such as Switzerland, Belgium or Canada.
  • Location within a country. Queries with local intent ("dentist", "pizza near me", "hardware store") change from city to city.
  • Personalization. Signed-in sessions, search history and previously visited sites can nudge results for the person searching.
  • Device. Mobile and desktop result pages often differ in layout and sometimes in order.
  • Time. Rankings shift daily as pages are recrawled, competitors publish and ranking systems are updated.

The practical conclusion: a ranking only means something together with its settings. "Position 4 for best running shoes, US, English, checked on 18 September" is a useful data point. "We rank 4th" is not.

How to check rankings manually

A manual check is fine for a handful of keywords, as long as you control the variables that change results.

  1. Use a private window. An incognito or private window keeps your account history and cookies from influencing the results. It does not hide your location, which still comes from your IP address.
  2. Pin the market. If you are checking a country you are not in, use the search engine's region and language settings rather than relying on your connection. A VPN works too, but you get the results for wherever its exit node is, which may be a different city than your customers.
  3. Count only organic results. Skip ads, answer boxes, image and video carousels, map packs and question blocks, unless you deliberately track them separately.
  4. Page through carefully. Result pages do not always contain exactly 10 organic results, so count positions across pages rather than multiplying page numbers.
  5. Record the settings. Write down the country, language, device and date with each position so later checks are comparable.

Pitfalls that produce wrong numbers

  • Checking your own site too often. Repeatedly searching for and clicking your own pages can make them look stronger to you than to everyone else.
  • Inconsistent counting. Different people count features differently. Agree on one rule (organic links only) and stick to it.
  • Pagination drift. Results can shift between page loads, so a result you saw at position 10 may reappear at 11 on the next page.
  • Sample size of one. A single check is a snapshot. Rankings fluctuate, so track trends over weeks instead of reacting to one reading.
  • Ignoring the ranking URL. If a different page of yours starts ranking for the keyword, the position may look stable while the traffic and conversions change.

What search console data can and cannot tell you

The webmaster dashboards that search engines offer site owners are free and worth setting up. Their performance reports show clicks, impressions and an average position per query and page. Two limitations matter for rank tracking:

  • Average position is an aggregate. It blends many searches across locations, devices and personalized sessions, so it rarely matches what any one person sees.
  • It only covers your own site. You will not learn who outranks you, which pages hold the top spots, or what the result page looks like today.

Use those dashboards for trends in clicks and impressions, and use direct rank checks for exact positions and competitor visibility.

Automating rank checks with an API

Once you track more than a dozen keywords, several countries or competitor positions, manual checking stops being practical. A rank-check API runs a clean, non-personalized search for a fixed market, scans the results and returns where a target domain appears.

With serpfast, the /api/v1/rank endpoint takes a query, a target domain, a country (gl), an optional language (hl) and an optional depth (how many results to scan, 10 to 100, default 50):

curl "https://serpfast.com/api/v1/rank?q=best+running+shoes&target=runnersworld.com&gl=US&hl=en&depth=30" \
  -H "Authorization: Bearer $SERPFAST_API_KEY"

A trimmed response looks like this:

{
  "search_metadata": {
    "id": "srch_3b91d0c4",
    "status": "success",
    "endpoint": "rank",
    "credits_used": 3,
    "credits_remaining": 4997,
    "created_at": "2026-09-18T08:00:00.000Z"
  },
  "rank": {
    "position": 4,
    "title": "The Best Running Shoes, Tested by Our Editors",
    "link": "https://www.runnersworld.com/gear/a19663621/best-running-shoes/"
  },
  "matches": [
    {
      "position": 4,
      "title": "The Best Running Shoes, Tested by Our Editors",
      "link": "https://www.runnersworld.com/gear/a19663621/best-running-shoes/"
    },
    {
      "position": 17,
      "title": "Running Shoe Reviews",
      "link": "https://www.runnersworld.com/running-shoes/"
    }
  ],
  "scanned": 30,
  "top_results": [
    { "position": 1, "title": "...", "link": "..." },
    { "position": 2, "title": "...", "link": "..." },
    { "position": 3, "title": "...", "link": "..." }
  ]
}

The fields map directly to what you would record by hand:

FieldMeaning
rankThe best (highest) position where the target domain appears, with its title and URL. It is null when the domain is not found within the scanned results.
matchesEvery result from the target domain, useful for spotting cannibalization between two of your pages.
scannedHow many results were checked, so a missing rank means "not in the top N", not "not ranking at all".
top_resultsThe pages ranking at the top, so you can see who you are competing with.

Credits are counted per 10 results scanned: depth=30 costs 3 credits and the default depth=50 costs 5. Most teams scan the top 20 or 30 for tracked keywords and go deeper only for keywords they are actively pushing. Failed requests are refunded.

A simple tracking routine

  1. Pick your keyword list and one market per list (for example, US English and UK English as separate lists).
  2. Run the rank check on a fixed schedule: daily for priority terms, weekly for the long tail.
  3. Store rank.position, the ranking URL, scanned, the market and the date.
  4. Alert on moves larger than a few positions, and on changes to the ranking URL, which often signal cannibalization or a canonical problem.
  5. Compare against your search console click data monthly to confirm that position changes show up in traffic.

Try it

For a quick one-off check, the free Rank Checker runs the same lookup in your browser. To see the full result page for a query in a given country, use the SERP Checker. When you are ready to automate, sign in with Google to get 5,000 free credits (no credit card needed), then read the API docs and compare plans on the pricing page.

Need this data in your app?

The same results are available from the API with 5,000 free credits.

Get a free API key