API referencia

Stránkovanie výsledkov API

Ako používať next_cursor, spracovať limit 250 výsledkov a spresniť vyhľadávanie firiem.

GET /v1/search používa cursor stránkovanie. Každá odpoveď obsahuje najviac limit výsledkov (predvolene 10, maximum 50).

Jeden dopyt vráti naprieč stránkami najviac 250 výsledkov. Endpoint slúži na vyhľadávanie, nie na hromadný export.

Ako funguje cursor stránkovanie

Keď existujú ďalšie výsledky, odpoveď obsahuje pole next_cursor s hodnotou (nie null). Tento cursor pošlite späť ako parameter cursor v nasledujúcom requeste. API vráti ďalšiu stránku výsledkov pre rovnaký dopyt.

Keď je next_cursor rovný null, ďalšia stránka neexistuje. To ešte neznamená, že máte všetky zhody: ak je na poslednej stránke truncated: true, zhôd je viac ako 250 a treba spresniť dopyt.

Dôležité: Cursor je platný 15 minút od jeho vytvorenia. Po uplynutí tohto času vráti API chybu invalid_request s popisom "Expired cursor". Stačí zopakovať pôvodný dopyt od začiatku.

Cursor tiež viaže na konkrétne parametre q, country, prefer, entity_type a limit. Ak zmeníte ktorýkoľvek z nich, musíte začať nové stránkovanie bez cursora.

JavaScript príklad

async function fetchAllResults(query, country = "sk") {
  const base = "https://api.subjekt.sk/v1/search";
  let cursor = null;
  const allResults = [];

  do {
    const params = new URLSearchParams({ q: query, country, limit: "50" });
    if (cursor) params.set("cursor", cursor);

    const res = await fetch(`${base}?${params}`);
    if (!res.ok) {
      const err = await res.json();
      throw new Error(`API chyba: ${err.code} — ${err.message}`);
    }

    const data = await res.json();
    if (data.truncated) throw new Error("Viac ako 250 zhôd, spresnite dopyt");
    allResults.push(...data.results);
    cursor = data.next_cursor;
  } while (cursor !== null);

  return allResults;
}

// Použitie
const firmy = await fetchAllResults("tesla");
console.log(`Celkom: ${firmy.length} výsledkov`);

Python príklad

import requests

def fetch_all_results(query: str, country: str = "sk") -> list:
    base = "https://api.subjekt.sk/v1/search"
    cursor = None
    all_results = []

    while True:
        params = {"q": query, "country": country, "limit": 50}
        if cursor:
            params["cursor"] = cursor

        r = requests.get(base, params=params, timeout=10)
        r.raise_for_status()
        data = r.json()
        if data.get("truncated"):
            raise ValueError("Viac ako 250 zhôd, spresnite dopyt")

        all_results.extend(data["results"])
        cursor = data.get("next_cursor")

        if cursor is None:
            break

    return all_results

# Použitie
firmy = fetch_all_results("tesla")
print(f"Celkom: {len(firmy)} výsledkov")

Zhrnutie

Správanie Detail
Maximálny limit 50 výsledkov na stránku
Predvolený limit 10 výsledkov na stránku
Expirácia cursora 15 minút
Koniec výsledkov next_cursor je null
Maximálny offset 250 výsledkov; pri ďalších zhodách truncated: true

Pre podrobný popis parametrov vyhľadávania pozri GET /v1/search.

Táto stránka vo formáte Markdown