Google SERP in Ukraine: rank tracking when people search in Ukrainian and Russian

In Ukraine one intent often arrives as two keywords: "купити ноутбук" in Ukrainian and "купить ноутбук" in Russian. We ran both, and two more pairs, as live Google searches from Kyiv. The top 10 overlapped by half to two thirds, and the language of the Google interface moved the results again. Here is the data and what it means for a rank tracker.

Published: Updated:
Google SERP in Ukraine: rank tracking when people search in Ukrainian and Russian
On this page
01

One market, two search languages

Google dominates search in Ukraine: StatCounter puts it at about 91% of search referrals in August 2026. Yandex and Mail.ru were blocked in Ukraine in May 2017 by a presidential decree on sanctions.

People in Ukraine search in Ukrainian and in Russian, and websites answer in both. Since 16 July 2022 Article 27 of the law on the state language requires the sites of businesses that sell in Ukraine to load their Ukrainian version by default; other language versions are allowed, and many shops and services keep one in Russian.

For rank tracking this means that one product keyword is really two keywords, and the interface language of the person searching is a third variable. The measurements below show how much each of them changes the top 10.

02

What we measured

On 16 October 2026, between 08:41 and 08:44 UTC, we sent nine requests to the Serper.live API with country set to UA and asked for the top 10 organic results, on desktop unless noted. The Ukrainian market searches from a browser profile in Kyiv with the uk-UA locale; without the language parameter Google receives hl=uk.

Search Interface Shared with its pair Russian titles
купити ноутбук (Ukrainian) hl=uk — 0 of 10
купить ноутбук (Russian) hl=uk 6 of 10 domains 0 of 10
купить ноутбук (Russian) hl=ru 5 of 10 domains 6 of 10
як оформити ФОП (Ukrainian) hl=uk — 0 of 10
как оформить ФОП (Russian) hl=uk 7 of 8 domains 0 of 10
как оформить ФОП (Russian) hl=ru 6 of 8 domains 2 of 10
ремонт телефонів київ (Ukrainian) hl=uk — 0 of 10
ремонт телефонов киев (Russian) hl=uk 5 of 10 domains 8 of 10
купити ноутбук on mobile hl=uk 6 of 10 domains 0 of 10

Each Russian search under hl=uk is compared with the Ukrainian search above it, each hl=ru search with the same query under hl=uk, and the mobile search with the desktop one. The ФОП results hold eight distinct domains because YouTube takes three places. A title counts as Russian when it is written in Russian; titles that read the same in both languages, such as "Ноутбуки", count as neither.

03

Ukrainian and Russian keywords rank differently

Shopping searches overlap the most. For "купити ноутбук" and "купить ноутбук" six of ten domains are the same, and five of them hold exactly the same position. Still, four shops in each top 10 do not appear in the other one at all.

Informational searches keep the same sites in a different order. For how to register as a sole proprietor (ФОП), seven of eight domains repeat, but diia.gov.ua drops from #1 for the Ukrainian query to #5 for the Russian one, while privatbank.ua climbs from #7 to #1.

Local services split the most. For phone repair in Kyiv only five domains repeat, restore.com.ua moves from #7 to #1, and eight of the ten results for the Russian query carry Russian titles. In this sample shops answered the Russian query with Ukrainian pages, while service businesses answered it with Russian ones.

04

The interface language moves results again

The hl parameter is the language of the Google interface, not of the query. Switching it from uk to ru for the same Russian laptop query kept only five domains, turned six titles Russian and put aligator.com.ua, absent under hl=uk, at #1. rozetka.com.ua appeared twice, at #2 with a Ukrainian title and at #5 with a Russian one.

For the ФОП query the switch brought two Russian-language guides, from dilovod.ua and fop.freelancehunt.com, into the top 10 and returned diia.gov.ua to #1.

Which interface language your audience uses depends on their browser and Google settings, and no API can see it. If you are not sure, track both: it costs one more check per keyword.

05

Mobile is a separate ranking

On mobile, "купити ноутбук" shared six domains with desktop. rozetka.com.ua took #1 and #2, kvshop.com.ua fell from #3 to #7, and three shops appeared only on mobile. If most of your visitors come from phones, a desktop position is the wrong number to report.

06

Setting up rank tracking for Ukraine

  1. List every intent in both languages and store the variants as separate keywords: "купити ноутбук" and "купить ноутбук" are two rows, not one.
  2. Send country UA and set language explicitly, uk or ru, instead of relying on the default. Store it with every position, so that later checks compare like with like.
  3. Check desktop and mobile separately when the split of your traffic matters.
  4. Match results on domain. A bilingual site can appear twice in one top 10, so keep every position, or at least the best one and the count.
  5. Repeat the checks on a schedule and report the trend rather than a single result: Google varies results between checks.
curl
curl -s -X POST https://api.serper.live/v1/search \
  -H "Authorization: Bearer sl_live_YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"купить ноутбук","country":"UA","language":"ru"}' \
  | jq '[.organic[] | select(.domain == "example.com.ua") | .position]'
JavaScript
const checks = [
    { query: 'купити ноутбук', language: 'uk' },
    { query: 'купить ноутбук', language: 'uk' },
    { query: 'купить ноутбук', language: 'ru' },
];

for (const check of checks) {
    const response = await fetch('https://api.serper.live/v1/search', {
        method: 'POST',
        headers: {
            Authorization: 'Bearer sl_live_YOUR_TOKEN',
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ ...check, country: 'UA', device: 'desktop' }),
        signal: AbortSignal.timeout(100000),
    });
    const { organic } = await response.json();
    const positions = organic.filter(row => row.domain === 'example.com.ua').map(row => row.position);

    console.log(check.query, check.language, positions);
}
Python
import requests

CHECKS = [
    ("купити ноутбук", "uk"),
    ("купить ноутбук", "uk"),
    ("купить ноутбук", "ru"),
]

for query, language in CHECKS:
    response = requests.post(
        "https://api.serper.live/v1/search",
        headers={"Authorization": "Bearer sl_live_YOUR_TOKEN"},
        json={"query": query, "country": "UA", "language": language, "device": "desktop"},
        timeout=100,
    )
    organic = response.json()["organic"]
    positions = [row["position"] for row in organic if row["domain"] == "example.com.ua"]
    print(query, language, positions)

In Ukraine a check of the top 10 costs $0.01; the JavaScript and Python examples run three checks. The pricing page lists every market. The rank tracking guide covers scheduling and storage.

07

What this data does not show

  • One snapshot per search. Google varies results between checks and over time, so repeat a check before drawing conclusions from a single position.
  • Country, not city. The Ukrainian profile searches from Kyiv, and the API selects the country, language and device, not the city. A local query for Lviv or Odesa may rank differently there.
  • Organic results only. Ads, the map pack and other Google features are not part of organic[], so a position is counted among organic results.
  • Titles are chosen by Google. The language of a title shows which version of a page Google decided to display, not everything the site offers.
FAQ

Questions about Google rankings in Ukraine

Should I track Ukrainian and Russian keywords separately?

Yes. In our measurements the two languages shared five to seven domains of the top 10 and moved shared sites by several positions. One combined keyword would hide those differences.

Which language parameter should I use for Ukraine?

Without language Serper.live sends hl=uk, the default of the Ukrainian market. Set language to ru to see the results for people whose Google interface is in Russian, and store the value with every check.

Can I check rankings for a specific Ukrainian city?

Not at the moment. Searches for UA run from a browser profile in Kyiv, and the API selects the country, language and device, not the city. Results for local queries elsewhere in Ukraine may differ.

Is Google the main search engine in Ukraine?

Yes. StatCounter puts Google at about 91% of search referrals in Ukraine in August 2026. Yandex was blocked in Ukraine by a presidential decree on sanctions in May 2017.

How much does a rank check in Ukraine cost?

$0.01 per request for the top 10, with no subscription. Every started block of 10 results costs the same, so a check of the top 30 costs three times as much.

Start with a few dollars of credit.

No subscription and no minimum contract. Create a Serper.live account, add USDT or USDC and send your first live request in minutes.