Skip to content
CrawlerData
Menu
Guides

Google search results by country: 10 searches in 5 markets compared

We ran the same 10 Google searches in the US, UK, Australia, Canada and India. The UK shared half a domain with the US results. Data and code inside.

CrawlerData teamPublished 7 min read

Contents

“What does Google show for this search?” has no single answer. It depends on who is asking, and the first thing it depends on is the country. If you track rankings, sell in more than one market or build anything on search results, that gap decides whether your numbers mean anything.

To measure it, we ran the same 10 searches in five English-language markets and compared the results. This guide has the numbers, a function that does the comparison for any search, and what it means for tracking. Everything comes from requests we ran on 16 October 2026 with the Google Search API. Results change over time, so yours will differ.

How we ran it

We used 10 searches: how to learn python, best laptop 2026, what is inflation, best vpn, how to start a podcast, project management software, how to lower blood pressure, best credit card, noise cancelling headphones and how does a vpn work. We ran each in five countries, us, gb, au, ca and in, on desktop, in English. That is 50 searches and 50 credits.

Keeping the language fixed on purpose means the differences below come from the market, not from translation. The sample is small and picked by us, so the figures are descriptive, not an estimate of Google in general.

How different the results were

For each country we compared its organic results with the US results for the same search:

Country Domains shared with the US results (average, of about 8) First result on the same domain as the US AI Overview shown (of 10)
us (baseline) (baseline) 10
gb 0.5 2 of 10 9
au 0.7 0 of 10 9
ca 1.3 0 of 10 8
in 1.2 0 of 10 9

On average, a UK result page shared half a domain with the US page for the same search. Australia shared 0.7, Canada 1.3 and India 1.2. Across all four, the first result was on the same domain as the US first result in 2 of 40 comparisons. Overall, the 50 result pages held 417 results from 263 different domains.

A single search shows what that looks like. For what is inflation, these are the first domains on each page:

us  federalreserve.gov, imf.org, equifax.com, fidelity.com, clevelandfed.org, congress.gov, ecb.europa.eu
gb  pimco.com, britannica.com, bbc.co.uk, tutor2u.net, youtube.com, dspim.com, snhu.edu, xero.com
au  youtube.com, britannica.com, cutcher.com.au, jubilacion.com.au, dictionary.cambridge.org, rba.gov.au, public.com
ca  rosenbergresearch.com, woodgundyadvisors.cibc.com, youtube.com, niesr.ac.uk, britannica.com, rateinflation.com
in  tathastuics.com, drishtiias.com, umeschandracollege.ac.in, youtube.com, merriam-webster.com, public.com

The US page was mostly central banks, government and finance sites. The UK page had the BBC and a tutoring site, Australia’s had the Reserve Bank of Australia, and India’s had education sites. The US and UK pages for this search had no domain in common.

Two sites turned up almost everywhere. YouTube was in the results for 29 of the 50 country and search combinations, and Reddit for 15.

AI Overviews differ too, but less

An AI Overview showed in 45 of the 50 combinations: 10 in the US, 9 in the UK, 9 in Australia, 8 in Canada and 9 in India. The gaps follow no pattern we could name. how to learn python had an overview only in the US and Canada, and best laptop 2026 and noise cancelling headphones had none in Canada.

The sources the overviews cited were more alike across countries than the organic results were. For each of the four countries, between 27% and 29% of the domains cited in either its overview or the US one were cited in both. For the organic results the same measure was between 3% and 10%. An overview may lean more on the same well-known pages whichever market it serves, while the organic results favour local ones. We did not test why.

What this means if you track rankings

  • A rank belongs to a country. A page can sit in the top 3 in one market and be absent from another. Storing the country with every check is not optional.
  • Track each market you sell in. One average across countries hides all of this.
  • Local sites show up in their own market. In our sample, the UK page had UK sites and Australia’s had Australian ones.
  • Pick the market for your audience, not for convenience. Checking only the US because it is easy would tell a UK business almost nothing.

The rank tracking guide has the function that finds your domain’s position, and it takes a country argument for exactly this.

The code

Put your key in an environment variable:

export CRAWLERDATA_API_KEY="YOUR_API_KEY"

This function runs one search in several countries and compares each with a baseline:

import os
import time
from concurrent.futures import ThreadPoolExecutor
from urllib.parse import urlparse

import requests

API_URL = "https://api.crawlerdata.com/v1/jobs"
HEADERS = {"Authorization": f"Bearer {os.environ['CRAWLERDATA_API_KEY']}"}


def google_search(query, country="us", device="desktop", retries=4):
    body = {
        "endpoint": "google-search",
        "params": {"query": query, "country": country, "device": device},
        "queue": "live",
    }
    for attempt in range(retries):
        resp = requests.post(API_URL, json=body, headers=HEADERS, timeout=180)
        if resp.status_code == 429:  # rate limited: wait as long as the API asks, then retry
            time.sleep(int(resp.headers.get("retry-after", 10)))
            continue
        resp.raise_for_status()
        data = resp.json()
        if data["job"]["status"] == "completed":
            return data["result"]
        if "retry" in (data["job"]["error"] or "").lower():  # transient ("busy", "temporarily blocked"): back off and retry
            time.sleep(5 * (attempt + 1))
            continue
        raise RuntimeError(data["job"]["error"])
    raise RuntimeError("Search failed after retries")


def domain(link):
    return (urlparse(link).hostname or "").removeprefix("www.")


def compare_countries(query, countries=("us", "gb", "au", "ca", "in"), baseline="us"):
    """Run one search in several countries and compare each with the baseline country."""
    with ThreadPoolExecutor(3) as pool:
        results = dict(zip(countries, pool.map(lambda c: google_search(query, country=c), countries)))
    base = [domain(r["link"]) for r in results[baseline]["organic_results"]]
    report = {}
    for country, result in results.items():
        domains = [domain(r["link"]) for r in result["organic_results"]]
        report[country] = {
            "top3": domains[:3],
            "shared_with_baseline": len(set(domains) & set(base)),
            "same_first_result": bool(domains) and domains[0] == base[0],
            "ai_overview": result["ai_overview"] is not None,
        }
    return report

The retry loop is there because a live request can fail transiently. During our testing one request came back with The service is busy. Please retry shortly. and another with Google temporarily blocked the request. Please retry. Failed requests are not charged, and the loop waits and tries again, up to four times.

For how to lower blood pressure it printed:

us {'top3': ['mayoclinic.org', 'healthcare.utah.edu', 'mplsheart.org'], 'shared_with_baseline': 7, 'same_first_result': True, 'ai_overview': True}
gb {'top3': ['chemistdirect.co.uk', 'prevention.com', 'youtube.com'], 'shared_with_baseline': 0, 'same_first_result': False, 'ai_overview': True}
au {'top3': ['betterhealth.vic.gov.au', 'nm.org', 'nuffieldhealth.com'], 'shared_with_baseline': 1, 'same_first_result': False, 'ai_overview': True}
ca {'top3': ['heart.org', 'mayoclinichealthsystem.org', 'nm.org'], 'shared_with_baseline': 3, 'same_first_result': False, 'ai_overview': True}
in {'top3': ['youtube.com', 'nm.org', 'healthpartners.com'], 'shared_with_baseline': 0, 'same_first_result': False, 'ai_overview': True}

The baseline compares with itself, so its shared_with_baseline is simply the number of distinct domains on its page.

What it costs

Every search is 1 credit, in every country, on every queue. Starter is $1.00 per 1,000 requests and the largest pack is $0.30 per 1,000, see pricing.

What you run Searches At $1.00 per 1,000 At $0.30 per 1,000
This study, once 50 $0.05 $0.015
100 keywords, 5 countries, daily for a month 15,000 $15.00 $4.50
100 keywords, 5 countries, weekly for a year 26,000 $26.00 $7.80

Failed requests are not charged.

Going down to a city

country sets the market. To go further, add location, a Google location name that ends with a country, such as Austin,Texas,United States:

{ "query": "pizza near me", "country": "us", "location": "Austin,Texas,United States" }

For pizza near me, the local pack with Austin,Texas,United States was Home Slice Pizza, The Onion and Hoboken Pie. With Brooklyn,New York,United States it was Brooklyn Pizza Crew, Rocco Pizza III and La Flor Pizza. Same query, same country, different cities. Valid names come from the public GET https://api.crawlerdata.com/public/locations?q=austin lookup, which needs no key, and a name that is not valid is rejected with a 400.

Check one search for free

To see what a searcher in a given city sees before you build anything, our free Google results by city checker runs without an account.

Next steps

You now have numbers on how far Google’s results move between five English-language markets, a function that compares any search across countries and a reason to store the country with every rank. Desktop vs mobile Google results covers the other axis, and which sites AI Overviews cite looks at the sources. The Google Search API page lists every parameter with a full example response.

Frequently asked questions

Do Google search results differ by country?
Yes, a lot. In our October 2026 test of 10 English-language searches, the UK results shared on average 0.5 domains with the US results out of about 8, Australia 0.7, Canada 1.3 and India 1.2. The first result was on the same domain as the US in only 2 of 50 comparisons.
How do I get Google results for another country?
Set country on the request, for example gb, au, ca, in or de. The CrawlerData google-search endpoint accepts 31 two-letter country codes and a two-letter language, and every country costs the same 1 credit per request.
Do AI Overviews also differ by country?
They appeared in 45 of the 50 country and search combinations in our test, and the cited sources differed too, though less than the organic results did. Between 27% and 29% of the domains cited in a country's overview or in the US one were cited in both, against 3% to 10% for the organic results.
Do I need to track rankings in every country separately?
If you sell in more than one market, yes. A page that ranks well in the US may not appear at all in the UK. Store the country with every rank check and request each market on its own.
Can I target a city instead of a country?
Yes. Add location, a Google location name that ends with a country, such as Austin,Texas,United States. For pizza near me, Austin and Brooklyn gave different local packs. Look valid names up with the public GET /public/locations?q=austin lookup.
Is the country the same as the language?
No. country decides which market Google serves, and language decides the language. Our test used English in all five countries, so it measured the market effect on its own.
How much does it cost to compare countries?
1 credit per search per country. Our 10 searches in 5 countries cost 50 credits, $0.05 at the Starter rate of $1.00 per 1,000 requests. Tracking 100 keywords daily in 5 countries is 15,000 credits a month, $15 at Starter and less on larger packs.
  • Google results by country
  • Geo-targeted SERP
  • Rank tracking
  • AI Overviews
  • Python
  • Data