nastroje📅 1. 4. 2026⏱️ 14 min

Rozhraní Search Console: Automatizujte SEO reporty bez ruční práce

Každý týden strávíte hodinu stahováním dat z Google Search Console. Kopírujete čísla do Excelu. Tvoříte grafy. A pak zjistíte, že jste udělala chybu ve filtru a musíte začít znovu.

Tohle znám. A proto jsem se před lety naučila používat rozhraní GSC (GSC API).

GSC API (Search Console API) je programové rozhraní, které vám umožní automaticky stahovat data z Google Search Console. Žádné ruční klikání. Žádné limity webového rozhraní. Jen čistá data, která si můžete zpracovat, jak potřebujete.

Za roky v SEO jsem viděla, jak automatizace reportování ušetří firmám desítky hodin měsíčně. V tomto návodu vám ukážu, jak na to — i když nejste programátorka.

Proč používat GSC API místo webového rozhraní

Limity webového rozhraní Search Console

Infografika - Proč používat GSC API místo webového rozhraní Webové rozhraní Google Search Console má několik omezení, která vás brzdí:

LimitCo to znamenáJak to ovlivní vaši práci
16 měsíců datStarší data jsou nedostupnáNemůžete porovnávat meziroční trendy
1000 řádků exportMaximum řádků v jednom exportuPro velké weby nestačí
Ruční práceKaždý report musíte klikat ručněHodiny zbytečně strávené exportováním
Agregovaná dataNěkterá data jsou seskupenáChybí granularita pro hloubkovou analýzu
Žádné upozorňováníMusíte kontrolovat ručněPropásnete důležité změny

Co API umožňuje

S GSC API získáte:

  • Automatické reporty — týdenní/měsíční report přijde do emailu bez jediného kliknutí
  • Historická data — ukládejte si data a analyzujte trendy za roky zpětně
  • Neomezený export — stahujte všechna data, ne jen prvních 1000 řádků
  • Vlastní metriky — kombinujte data s Google Analytics a dalšími zdroji
  • Automatické upozorňování (alerting) — dostávejte upozornění při poklesu pozic nebo návštěvnosti
  • Srovnání více webů — jeden přehled (dashboard) pro všechny vaše projekty
Případová studie

Případová studie: Jak jsme zachytili pokles dřív než konkurence

Klientka měla e-shop se stovkami produktů. Každý měsíc jsme ručně kontrolovali pozice v Search Console - a často jsme problémy zjistili pozdě. Po nasazení automatického upozorňování přes GSC API jsme zachytili 15% pokles zobrazení na kategoriových stránkách už druhý den.

Příčina? Aktualizace Google, která postihla produktové stránky bez unikátního obsahu. Zatímco konkurence řešila problém až po třech týdnech, my jsme reagovali okamžitě - přidali jsme unikátní popisy a podpořili klíčové kategorie PR články na webech s DA50+.

MetrikaPřed upozorňovánímS upozorňovánímPo opravách
Reakční doba na problémy3 týdny1 den-
Pokles při aktualizaci Google-15 %Zachycen ihned+8 % nad původní
Doba obnovy pozic6-8 týdnů-10 dní
organická návštěvnost18 500/měs-28 200/měs
Odkazující domény (DA50+)8-24

Díky rychlé reakci a strategickému budování odkazů jsme nejen obnovili pozice, ale překonali původní hodnoty.

Chcete podobné výsledky? Podívejte se na naše služby budování zpětných odkazů.

Základní nastavení GSC API

Nastavení trvá přibližně 15-20 minut. Následujte tyto kroky:

Infografika - Základní nastavení GSC API

Krok 1: Vytvoření projektu v Google Cloud Console

  1. Přejděte na console.cloud.google.com
  2. Přihlaste se stejným Google účtem, který má přístup do Search Console
  3. Klikněte na "Select a project""New Project"
  4. Pojmenujte projekt (např. "GSC-Automatizace")
  5. Klikněte "Create"

Krok 2: Povolení Search Console API

  1. V levém menu zvolte "APIs & Services""Library"
  2. Vyhledejte "Google Search Console API"
  3. Klikněte na výsledek a pak na "Enable"

Krok 3: Vytvoření přihlašovacích údajů

Máte dvě možnosti:

Možnost A: Servisní účet (doporučeno pro automatizaci)

  1. "APIs & Services""Credentials"
  2. Klikněte "Create Credentials""Service Account"
  3. Zadejte název (např. "gsc-automation")
  4. Klikněte "Create and Continue"
  5. Role můžete přeskočit (pro GSC není potřeba)
  6. Klikněte "Done"
  7. Klikněte na vytvořený service account
  8. Záložka "Keys""Add Key""Create new key"
  9. Vyberte JSON a stáhněte soubor
  10. Bezpečně uložte tento soubor — je to váš přístupový klíč

Možnost B: OAuth 2.0 (pro interaktivní skripty)

  1. "APIs & Services""Credentials"
  2. Klikněte "Create Credentials""OAuth client ID"
  3. Pokud je to poprvé, musíte nejdřív nastavit obrazovku souhlasu OAuth
  4. Vyberte "Desktop app"
  5. Pojmenujte a vytvořte
  6. Stáhněte JSON s přihlašovacími údaji

Krok 4: Propojení s GSC vlastnictvím (property)

Pro servisní účet musíte přidat přístup do Search Console:

  1. Otevřete Google Search Console
  2. Vyberte vaše vlastnictví (property)
  3. Jděte do "Settings""Users and permissions"
  4. Klikněte "Add user"
  5. Zadejte email servisního účtu (najdete ho v JSON souboru)
  6. Vyberte oprávnění "Full" nebo "Restricted"
  7. Klikněte "Add"

Možnosti bez programování

Nejste programátorka? Nevadí. Existují nástroje, které vám umožní využít GSC API bez jediného řádku kódu.

Diagram - Možnosti bez programování

Google Sheets + Apps Script

Google Sheets má vestavěnou podporu pro Apps Script — jednoduchý jazyk pro automatizaci.

Postup:

  1. Vytvořte nový Google Sheet
  2. Jděte do "Extensions""Apps Script"
  3. Vložte následující kód:
function getSearchConsoleData() {
  var siteUrl = 'https://vasedomena.cz/'; // Vaše doména
  var startDate = '2025-12-01';
  var endDate = '2025-12-31';

  var request = {
    startDate: startDate,
    endDate: endDate,
    dimensions: ['query', 'page'],
    rowLimit: 1000
  };

  var response = UrlFetchApp.fetch(
    'https://www.googleapis.com/webmasters/v3/sites/' +
    encodeURIComponent(siteUrl) + '/searchAnalytics/query',
    {
      method: 'post',
      contentType: 'application/json',
      headers: {
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
      },
      payload: JSON.stringify(request)
    }
  );

  var data = JSON.parse(response.getContentText());
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // Hlavička
  sheet.getRange(1, 1, 1, 6).setValues([
    ['Query', 'Page', 'Clicks', 'Impressions', 'CTR', 'Position']
  ]);

  // Data
  if (data.rows) {
    for (var i = 0; i < data.rows.length; i++) {
      var row = data.rows[i];
      sheet.getRange(i + 2, 1, 1, 6).setValues([[
        row.keys[0],
        row.keys[1],
        row.clicks,
        row.impressions,
        row.ctr,
        row.position
      ]]);
    }
  }
}
  1. Nastavte spouštěč pro automatické spouštění (např. každé pondělí)

Search Analytics for Sheets (Doplněk)

Nejjednodušší možnost pro netechnické uživatele:

  1. Otevřete Google Sheets
  2. "Extensions""Add-ons""Get add-ons"
  3. Vyhledejte "Search Analytics for Sheets"
  4. Nainstalujte a autorizujte
  5. Doplněk vám umožní stahovat data přímo do tabulky

Výhody:

  • Žádný kód
  • Intuitivní rozhraní
  • Možnost nastavit automatické aktualizace
  • Podpora všech filtrů a dimenzí

Zapier a Make (Integromat)

Pro komplexnější automatizaci:

  1. Vytvořte účet na Zapier nebo Make
  2. Vyhledejte integraci "Google Search Console"
  3. Vytvořte automatizaci ("Zap" nebo "Scenario"):
    • Spouštěč: Časový (např. každý týden)
    • Akce: Stáhnout data z GSC
    • Akce: Poslat email / uložit do Google Sheets / poslat do Slacku

Základní skripty v Pythonu

Pro ty, kteří chtějí více kontroly, Python nabízí největší flexibilitu.

Instalace knihoven

Otevřete terminál a spusťte:

pip install google-auth google-auth-oauthlib google-api-python-client pandas

Ověření (Autentizace)

Vytvořte soubor gsc_auth.py:

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Cesta k JSON souboru s přihlašovacími údaji
CREDENTIALS_FILE = 'credentials.json'

# Rozsah oprávnění pro Search Console API
SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']

def get_service():
    """Vytvoří a vrátí ověřenou GSC službu."""
    credentials = service_account.Credentials.from_service_account_file(
        CREDENTIALS_FILE,
        scopes=SCOPES
    )
    service = build('searchconsole', 'v1', credentials=credentials)
    return service

if __name__ == '__main__':
    service = get_service()
    print('Ověření úspěšné!')

První dotaz (query) na data

Vytvořte soubor gsc_query.py:

from gsc_auth import get_service
import pandas as pd
from datetime import datetime, timedelta

def get_search_analytics(site_url, start_date, end_date, dimensions=['query']):
    """
    Stáhne data ze Search Console.

    Args:
        site_url: URL vlastnictví (např. 'https://vasedomena.cz/')
        start_date: Počáteční datum (YYYY-MM-DD)
        end_date: Koncové datum (YYYY-MM-DD)
        dimensions: Seznam dimenzí ['query', 'page', 'date', 'country', 'device']

    Returns:
        DataFrame s daty
    """
    service = get_service()

    request = {
        'startDate': start_date,
        'endDate': end_date,
        'dimensions': dimensions,
        'rowLimit': 25000  # Maximum
    }

    response = service.searchanalytics().query(
        siteUrl=site_url,
        body=request
    ).execute()

    if 'rows' not in response:
        print('Žádná data nebyla nalezena.')
        return pd.DataFrame()

    # Převod na DataFrame
    rows = response['rows']
    data = []

    for row in rows:
        row_data = {}
        for i, dim in enumerate(dimensions):
            row_data[dim] = row['keys'][i]
        row_data['clicks'] = row['clicks']
        row_data['impressions'] = row['impressions']
        row_data['ctr'] = round(row['ctr'] * 100, 2)
        row_data['position'] = round(row['position'], 1)
        data.append(row_data)

    return pd.DataFrame(data)

if __name__ == '__main__':
    # Nastavení
    SITE_URL = 'https://vasedomena.cz/'

    # Poslední měsíc
    end_date = datetime.now().strftime('%Y-%m-%d')
    start_date = (datetime.now() - timedelta(days=30)).strftime('%Y-%m-%d')

    # Stažení dat
    df = get_search_analytics(
        SITE_URL,
        start_date,
        end_date,
        dimensions=['query', 'page']
    )

    print(f'Staženo {len(df)} řádků')
    print(df.head(10))

Export do CSV/Excel

Přidejte na konec předchozího skriptu:

# Export do CSV
df.to_csv('gsc_data.csv', index=False, encoding='utf-8-sig')
print('Data uložena do gsc_data.csv')

# Export do Excel
df.to_excel('gsc_data.xlsx', index=False, sheet_name='GSC Data')
print('Data uložena do gsc_data.xlsx')

Praktické případy použití

1. Týdenní automatický report

Skript, který každé pondělí stáhne data za minulý týden a pošle email:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email import encoders
from gsc_auth import get_service
import pandas as pd
from datetime import datetime, timedelta

def weekly_report():
    # Období: minulý týden
    end_date = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')
    start_date = (datetime.now() - timedelta(days=7)).strftime('%Y-%m-%d')

    # Stažení dat
    df = get_search_analytics(
        'https://vasedomena.cz/',
        start_date,
        end_date,
        dimensions=['query', 'page', 'date']
    )

    # Souhrn
    total_clicks = df['clicks'].sum()
    total_impressions = df['impressions'].sum()
    avg_position = df['position'].mean()

    # Export
    filename = f'gsc_report_{start_date}_{end_date}.xlsx'
    df.to_excel(filename, index=False)

    # Email (doplňte vlastní SMTP)
    subject = f'Týdenní GSC report: {total_clicks} kliků'
    body = f"""
    Týdenní report za období {start_date} - {end_date}

    Celkem kliků: {total_clicks:,}
    Celkem zobrazení: {total_impressions:,}
    Průměrná pozice: {avg_position:.1f}

    Detail v příloze.
    """

    # Odeslání emailu...
    print(f'Report vytvořen: {filename}')
    print(body)

if __name__ == '__main__':
    weekly_report()

2. Ukládání historických dat (za více než 16 měsíců)

Klíč k dlouhodobé analýze je pravidelné ukládání dat:

import os
from datetime import datetime, timedelta

def archive_gsc_data():
    """Ukládá denní data do archivu."""

    # Včerejší datum (GSC má 2-3 dny zpoždění)
    date = (datetime.now() - timedelta(days=3)).strftime('%Y-%m-%d')

    df = get_search_analytics(
        'https://vasedomena.cz/',
        date,
        date,
        dimensions=['query', 'page', 'device', 'country']
    )

    # Uložení do archivu
    archive_dir = 'gsc_archive'
    os.makedirs(archive_dir, exist_ok=True)

    filename = f'{archive_dir}/gsc_{date}.parquet'
    df.to_parquet(filename)

    print(f'Archivováno: {len(df)} řádků za {date}')

# Spouštějte denně pomocí cronu nebo Task Scheduleru

3. Srovnání pozic více webů

def compare_sites(sites, keyword):
    """Porovná pozice klíčového slova [NAP](/blog/nap-v-seo-proc-vas-mistni-zakaznici-nemohou-najit)říč weby."""

    end_date = datetime.now().strftime('%Y-%m-%d')
    start_date = (datetime.now() - timedelta(days=30)).strftime('%Y-%m-%d')

    results = []

    for site in sites:
        df = get_search_analytics(site, start_date, end_date, ['query'])

        # Filtr na klíčové slovo
        match = df[df['query'].str.contains(keyword, case=False, na=False)]

        if not match.empty:
            results.append({
                'site': site,
                'clicks': match['clicks'].sum(),
                'impressions': match['impressions'].sum(),
                'avg_position': match['position'].mean()
            })

    return pd.DataFrame(results)

# Použití
sites = [
    'https://web1.cz/',
    'https://web2.cz/',
    'https://web3.cz/'
]
comparison = compare_sites(sites, 'seo audit')
print(comparison)

4. Upozorňování při poklesu

def check_for_drops(site_url, threshold_percent=20):
    """Kontroluje pokles kliků oproti minulému týdnu."""

    # Tento týden
    this_week_end = datetime.now().strftime('%Y-%m-%d')
    this_week_start = (datetime.now() - timedelta(days=7)).strftime('%Y-%m-%d')

    # Minulý týden
    last_week_end = (datetime.now() - timedelta(days=7)).strftime('%Y-%m-%d')
    last_week_start = (datetime.now() - timedelta(days=14)).strftime('%Y-%m-%d')

    # Data
    this_week = get_search_analytics(site_url, this_week_start, this_week_end, ['page'])
    last_week = get_search_analytics(site_url, last_week_start, last_week_end, ['page'])

    # Spojení a porovnání
    merged = this_week.merge(
        last_week,
        on='page',
        suffixes=('_this', '_last'),
        how='outer'
    ).fillna(0)

    merged['change_pct'] = (
        (merged['clicks_this'] - merged['clicks_last']) /
        merged['clicks_last'].replace(0, 1) * 100
    )

    # Filtr na poklesy
    drops = merged[merged['change_pct'] < -threshold_percent]

    if not drops.empty:
        print(f'UPOZORNĚNÍ: Nalezeno {len(drops)} stránek s poklesem > {threshold_percent}%')
        print(drops[['page', 'clicks_this', 'clicks_last', 'change_pct']])
        # Zde přidejte odeslání emailu nebo Slack notifikace
    else:
        print('Vše OK - žádné významné poklesy.')

    return drops

Integrace s dalšími nástroji

Looker Studio (Data Studio)

Pro vizuální přehledy (dashboardy):

  1. Exportujte data z GSC API do Google Sheets nebo BigQuery
  2. Otevřete Looker Studio
  3. Připojte datový zdroj
  4. Vytvořte grafy:
    • Časový vývoj kliků a pozic
    • Top stránky podle návštěvnosti
    • Porovnání období
    • Trendy CTR

Tip: Můžete také použít přímé propojení GSC s Looker Studio, ale API vám dá více kontroly nad daty.

BigQuery pro velká data

Pro weby s miliony stránek:

from google.cloud import bigquery

def export_to_bigquery(df, table_id):
    """Exportuje DataFrame do BigQuery."""

    client = bigquery.Client()

    job_config = bigquery.LoadJobConfig(
        write_disposition=bigquery.WriteDisposition.WRITE_APPEND
    )

    job = client.load_table_from_dataframe(
        df,
        table_id,
        job_config=job_config
    )

    job.result()  # Počká na dokončení
    print(f'Nahráno {len(df)} řádků do {table_id}')

Výhody BigQuery:

  • Neomezená kapacita
  • Bleskově rychlé dotazy
  • SQL rozhraní
  • Propojení s Looker Studio

Vlastní přehled (dashboard)

Pro maximální kontrolu můžete vytvořit vlastní přehled pomocí:

  • Streamlit — Python framework pro rychlé prototypy
  • Dash — Plotly framework pro interaktivní přehledy
  • Next.js + Chart.js — Pro produkční řešení

Bezpečnost a osvědčené postupy

Ochrana API klíčů

  1. Nikdy neodesílejte přihlašovací údaje do Gitu

    • Přidejte credentials.json do .gitignore
    • Používejte proměnné prostředí
  2. Pravidelně měňte klíče

    • Každých 90 dní vytvořte nový klíč
    • Smažte staré klíče
  3. Omezte přístup

    • Servisnímu účtu dávejte pouze "Restricted" přístup
    • Nepoužívejte "Owner" oprávnění

Limity API

GSC API má limity rychlosti (rate limits):

LimitHodnota
Dotazů za den2000 na projekt
Dotazů za minutu1200 na projekt
Řádků na dotaz25 000

Tipy:

  • Implementujte exponenciální prodlevu při chybách
  • Ukládejte výsledky do mezipaměti
  • Nevolejte API zbytečně často
import time

def api_call_with_retry(func, max_retries=3):
    """Volá funkci s automatickým opakováním při chybě."""

    for attempt in range(max_retries):
        try:
            return func()
        except Exception as e:
            if attempt < max_retries - 1:
                wait_time = 2 ** attempt  # 1, 2, 4 sekundy
                print(f'Chyba: {e}. Čekám {wait_time} s...')
                time.sleep(wait_time)
            else:
                raise

Sdílení přístupu

  • Každý člen týmu by měl mít vlastní servisní účet
  • Používejte protokoly auditu v Google Cloud Console
  • Pravidelně kontrolujte, kdo má přístup

Závěr: Automatizace je investice, která se vrací

GSC API není jen pro programátory. S nástroji jako Search Analytics for Sheets nebo Zapier může automatizovat reporty kdokoliv.

Co získáte automatizací:

  • Hodiny měsíčně ušetřeného času
  • Data starší než 16 měsíců
  • Okamžité upozorňování při problémech
  • Jeden přehled pro všechny weby

3 věci, které můžete udělat ještě dnes:

  1. Nainstalujte si addon "Search Analytics for Sheets" a stáhněte první data
  2. Vytvořte projekt v Google Cloud Console (trvá 5 minut)
  3. Nastavte týdenní export dat do Google Sheets

Potřebujete pomoct s automatizací SEO reportování?

Pomáhám firmám automatizovat reporty a přehledy na míru. Bez složitých smluv, jen výsledky.

Domluvte si konzultaci

Zdroje a dokumentace

Související články

Často kladené otázky (FAQ)

Je GSC API zdarma?

Ano, GSC API je zcela zdarma. Google nepožaduje žádné platby za používání API. Platíte pouze v případě, že ukládáte data do placených služeb jako BigQuery (ale i tam máte velkorysý free tier 1 TB dotazů měsíčně).

Potřebuji umět programovat?

Ne nutně. Pro základní automatizaci stačí doplněk "Search Analytics for Sheets" nebo Zapier, které nevyžadují žádný kód. Pokud chcete pokročilejší funkcionalitu (upozorňování, vlastní přehledy), základní znalost Pythonu nebo Apps Scriptu pomůže — ale i to se dá naučit za víkend.

Jak často mohu volat API?

Limit je 2000 dotazů za den a 1200 dotazů za minutu na projekt. Pro většinu použití je to více než dost. Pokud spravujete desítky webů, vytvořte více projektů v Google Cloud Console.

Mohu získat data starší než 16 měsíců?

Ne přímo z API — Google uchovává data pouze 16 měsíců zpětně. Ale pokud si data pravidelně ukládáte (denně nebo týdně), můžete si vybudovat vlastní archiv historických dat bez omezení. Doporučuji začít archivovat co nejdříve.

Je bezpečné sdílet API přístup?

Ano, pokud dodržujete osvědčené postupy. Každý uživatel by měl mít vlastní servisní účet s "Restricted" přístupem. Nikdy nesdílejte JSON soubor s přihlašovacími údaji — místo toho přidejte email servisního účtu přímo do Search Console. Pravidelně kontrolujte přístupová práva a měňte klíče.

Chcete vědět, co dělá konkurence? Analýza konkurence - 6 990 Kč

O autorce

Ing. Jana Hrabalová

Ing. Jana Hrabalová

SEO specialistka

SEO se věnuji od roku 2012. Pomáhám firmám získat více zákazníků z Google a přežít každý algoritmus update bez škrábnutí.

📚 Čtěte dále

Získejte SEO článek zdarma

Publikuji váš článek na kvalitním webu s vysokou autoritou

  • Publikace na webu s DA 50+
  • Dofollow odkaz na váš web
  • Profesionální copywriting

Vyzkoušejte také mé bezplatné SEO nástroje: