Back to Blog

Compare Google Search Results Across Countries and Languages

Michael Lee
Michael Lee

Expert Network Defense Engineer

11-Sep-2026

TL;DR:

  • Country and language answer different research questions. Keep both in every international SERP analysis record.
  • Separate a fixed-query experiment from a localized-query comparison. Translating a phrase changes the input and may change intent.
  • Review the market matrix before collection. Preserve query wording, context, observation state, and the reasoning behind each comparison.

A translated keyword can describe a different buying decision. A country setting can change the search context without translating the query at all. International SERP analysis becomes useful when those choices are visible in the dataset.

Scrapeless Google Search API exposes country and language controls alongside the query. The hard part is designing a comparison that means what the report says it means. This workflow separates experimental controls from localization decisions and produces a request matrix your regional team can review before any API calls are made.

Choose the Comparison You Actually Need

A fixed-query comparison keeps the exact search phrase and language setting unchanged while varying country. It asks how the captured results differ under those country settings. It does not describe all local-language demand in either market.

A localized-query comparison uses a phrase chosen for each audience. It asks which pages and domains appear for locally relevant searches around the same business topic. Since both wording and context may differ, the outcome cannot isolate the effect of country alone.

A language-setting comparison keeps the phrase and country fixed while changing hl. That is a separate experiment. Name the design in the matrix so that an analyst does not combine the results with a localized-query study later.

The same project may contain all of these designs. Give each a distinct label and compare within that label before writing a broader interpretation.

Understand the Country and Language Controls

The Google Search parameter model defines gl as country context and hl as the search language. It also provides cr for country restrictions and lr for language restrictions. Context settings and restrictions should not be treated as interchangeable.

Setting hl does not establish that every returned page will be written in that language. Google describes several signals involved in search-result language selection. If page language is part of the analysis, inspect the destination content and record its language separately.

google_domain selects the Google domain. location and uule describe location input and cannot be supplied together. A country-level study should avoid silently adding a city restriction to one market only. If local intent is the research question, make the city part of every relevant comparison group.

The outer proxy.country setting is also distinct from input.gl. Save it if your request uses it. Record the complete submitted request so a later reader can see whether country settings were aligned, omitted, or deliberately different.

Full-URL mode needs its own discipline: when url is supplied, other input parameters are ignored. The workflow below uses parameter mode so the reviewed matrix is the input that will be submitted.

Review Query Meaning With a Local Reader

A topic label groups related research questions without claiming that the phrases are identical. Keep both the topic and the exact query in the plan.

Ask a reviewer familiar with the market to check spelling, everyday vocabulary, ambiguity, and likely intent. An English term can be used locally without being the most natural buying phrase. A literal translation can also introduce a meaning that the original topic did not intend.

Record review status and a short explanation for accepted wording. If a phrase is changed, create a new matrix revision. Do not edit the query text on old observations; those records describe the input that was actually sent.

Language identifiers themselves deserve care. The language-tag model distinguishes language from regional variants, while this API documents its own parameter syntax. A prose locale such as Brazilian Portuguese is not a substitute for checking accepted values in an API field.

Generate a Reviewable Request Matrix

The following Python program writes local planning data. It uses the country and language examples shown in the current parameter reference. The French wording is an illustrative candidate awaiting local review, not a claim about measured search demand.

Use Python and save the code as market_matrix.py; no third-party package or API key is needed for this local step. Run python3 market_matrix.py in a writable directory. The program creates or replaces market-matrix.json and sends no network requests.

python Copy
import json
from pathlib import Path

plans = [
    {"topic": "coffee", "design": "fixed-query-country", "q": "coffee", "gl": "us", "hl": "en"},
    {"topic": "coffee", "design": "fixed-query-country", "q": "coffee", "gl": "fr", "hl": "en"},
    {"topic": "coffee", "design": "localized-query", "q": "café", "gl": "fr", "hl": "fr"},
]
records = []
for item in plans:
    request = {
        "actor": "scraper.google.search",
        "input": {"q": item["q"], "gl": item["gl"], "hl": item["hl"],
                  "google_domain": "google.com", "start": 0, "device": "desktop"},
    }
    records.append({"topic": item["topic"], "design": item["design"],
                    "review_status": "needs_local_review", "request": request})
path = Path("market-matrix.json")
path.write_text(json.dumps(records, ensure_ascii=False, indent=2), encoding="utf-8")
print(f"Wrote {len(records)} planned requests to {path}; no requests sent.")

The first pair changes country while holding coffee and hl=en fixed. The last row proposes a localized French query and belongs to a different design. Comparing that last row directly with the English row changes several inputs at once.

The topic, design, and review_status fields are application metadata. Send only the nested request object to the API after review. Python's Unicode JSON serialization preserves accented query text in the planning file.

Start Scraping with Scrapeless

Power up your web scraping and automation workflow with Scrapeless!
Sign up today and get $5 in free creditno credit card required.

Claim your free credit now in the Scrapeless Dashboard.

Collect Observations Without Mixing Contexts

Once the wording is approved, use the Google Search request interface to submit each request with an API key in x-api-token. The endpoint is POST https://api.scrapeless.com/api/v1/scraper/request, and the actor is scraper.google.search.

Authenticated collection needs your account key and has not been run for this article. The local matrix is a validated planning artifact, not a set of captured Google results. Before running a larger batch, inspect an actual account response and confirm how your chosen settings are reflected in the output.

Store the exact request, matrix revision, client timestamps, and raw response. HTTP 200 carries task data; HTTP 201 indicates a pending task. Keep that pending state out of completed-result comparisons until the task result has been retrieved through a verified workflow.

Collect the compared requests within a defined observation window and record the actual times. Sequential calls are not simultaneous. A report should disclose the window rather than suggesting every market was captured at one instant.

Read Differences at the Page and Domain Levels

Start with organic results and maintain separate comparisons for exact URLs and hostnames. URL overlap shows whether the same pages appeared; hostname overlap can show common publishers even when they serve different localized paths.

Choose and document a hostname grouping policy. Treating every subdomain separately preserves detail; combining selected subdomains can support a business-level view. A substring check is unsafe because a hostname containing a familiar word may belong to a different owner.

Keep returned position separate from language and content classification. A page's appearance in a market does not prove local ownership, local popularity, or suitability for that audience. Review the page before labeling its language, commercial intent, or relevance.

If an organic array is empty, missing, or unavailable because collection failed, record those conditions separately. A missing observation should never create an artificial “no competitors” market.

Turn the Comparison Into an Editorial Decision

An international comparison should end with a question your team can investigate. A local publisher appearing repeatedly may suggest that market-specific examples deserve attention. Different page types may suggest that the query wording captures different intent.

Those are hypotheses. Open the pages, inspect their content, and ask a local reviewer whether the interpretation fits. Search-result snippets provide limited context and can differ from the current page text.

Keep a decision log beside the dataset: comparison design, observations used, interpretation, supporting page review, and proposed action. If the team changes a landing page or localization brief, record that as a separate event. The original observation remains intact.

Conclusion

Build the comparison around a question before choosing parameters. Keep country, language, and query wording explicit, then have local reviewers approve the matrix. The resulting dataset can support international SEO decisions without treating a translation as an equivalent experiment.

If the project extends to Google Images, keep its module mapping separate from this organic web-result comparison.

Configure Google Search API around the questions your team needs to answer. Check Scrapeless pricing before setting collection frequency. The Google Search parameter model explains the context controls used in this workflow.

Discuss your implementation with the community on Discord or Telegram.

FAQ

Q: Does Portuguese mean the search is configured for Brazil?

No. Language and country are separate choices. Confirm the accepted country and language values before collecting a Brazilian-market observation; this article does not claim a live Brazilian result.

Q: Does hl guarantee the language of every result page?

No. Treat the language setting and the observed page language as separate fields. Inspect page content when that distinction matters.

Q: Can translated keywords be compared as if only country changed?

No. Changing wording changes the input. Use a localized-query design and explain that the phrases represent a reviewed topic rather than an identical query.

Q: Should location and uule be combined?

No. The parameter reference makes them mutually exclusive. Choose the appropriate location method and preserve it in the request record.

Q: Does the matrix program call Google Search API?

No. It produces a local planning file. Authenticated collection is a separate step requiring an API key and inspection of real account output.

At Scrapeless, we only access publicly available data while strictly complying with applicable laws, regulations, and website privacy policies. The content in this blog is for demonstration purposes only and does not involve any illegal or infringing activities. We make no guarantees and disclaim all liability for the use of information from this blog or third-party links. Before engaging in any scraping activities, consult your legal advisor and review the target website's terms of service or obtain the necessary permissions.

Most Popular Articles

Catalogue