Sprievodcovia
Autocomplete názvu firmy
Vyhľadávanie firmy počas písania: oneskorenie dopytov, zrušenie staršej požiadavky a načítanie detailu po výbere firmy.
Vyskúšaj tento endpoint
{ "stav": "pripravený" }
Vyhľadávanie firmy počas písania použite v registrácii, CRM alebo fakturačnom formulári. Endpoint /v1/search prijíma názov alebo IČO a vracia zoznam kandidátov. Používateľ vyberie firmu a aplikácia následne načíta jej detail.
Vyhľadávanie v JavaScripte
Tento príklad vložte do stránky s prvkami <input id="firma"> a <div id="vysledky" aria-live="polite"></div>. Výsledky vykresľuje ako tlačidlá s textovým obsahom. Po výbere odovzdá udalosť firma-vybrana s IČO a krajinou.
const input = document.querySelector("#firma");
const results = document.querySelector("#vysledky");
let timer;
let controller;
let revision = 0;
input.addEventListener("input", () => {
clearTimeout(timer);
controller?.abort();
const current = ++revision;
results.replaceChildren();
const query = input.value.trim();
if (query.length < 2 || query.length > 120) return;
timer = setTimeout(async () => {
controller = new AbortController();
try {
const params = new URLSearchParams({ q: query, country: "sk", limit: "5" });
const response = await fetch(`https://api.subjekt.sk/v1/search?${params}`, {
signal: AbortSignal.any([controller.signal, AbortSignal.timeout(10000)])
});
if (!response.ok) throw new Error(`API chyba ${response.status}`);
const data = await response.json();
if (current !== revision) return;
results.replaceChildren();
for (const firma of data.results) {
const button = document.createElement("button");
button.type = "button";
button.textContent = `${firma.name} · ${firma.ico} · ${firma.address?.city ?? ""}`;
button.addEventListener("click", () => {
input.value = firma.name;
results.replaceChildren();
input.dispatchEvent(new CustomEvent("firma-vybrana", {
bubbles: true,
detail: { ico: firma.ico, country: firma.address.country.toLowerCase() }
}));
});
results.append(button);
}
if (!data.results.length) results.textContent = "Žiadne výsledky. Spresnite názov alebo zadajte IČO.";
} catch (error) {
if (current === revision && error.name !== "AbortError") {
results.textContent = "Vyhľadávanie nie je dostupné. Údaje môžete zadať ručne.";
}
}
}, 300);
});
Oneskorenie 300 ms znižuje počet volaní pri písaní. Zrušenie požiadavky a kontrola poradia chránia zoznam pred oneskorenou odpoveďou na starší text. Tlačidlá sú dostupné aj klávesnicou; ide o jednoduchý zoznam návrhov, nie plný ARIA combobox.
Po výbere načítajte detail
Použite IČO a krajinu z vybraného výsledku na volanie /v1/entity/{ico}?country=sk. V ukážke je vyhľadávanie obmedzené na Slovensko. Pre Česko zmeňte country na cz; pre oba registre na both a rešpektujte krajinu každého výsledku.
Vyhľadávanie pri slovenských živnostníkoch zámerne nevracia ulicu ani číslo domu. Pre predvyplnenie celej adresy načítajte detail firmy. Návod Fakturačné údaje podľa IČO ukazuje spracovanie detailu a chýbajúcich polí.
Limity a neúplné výsledky
Zoznam je stránkovaný. count je počet položiek aktuálnej stránky, nie celkový počet zhôd. Pri country=both sledujte warnings: príliš všeobecný názov môže viesť k vynechaniu českých výsledkov. Chybu služby nezobrazujte ako „firma neexistuje“.
Pozri parametre vyhľadávania, stránkovanie a limity požiadaviek.