ARES API – návod k REST API

ARES (Administrativní registr ekonomických subjektů) nabízí veřejné REST API, přes které načtete údaje o libovolné české firmě nebo živnostníkovi podle IČO nebo názvu. API je zdarma, bez registrace a bez API klíče a vrací JSON.

Návod vychází z aktuální verze API (1.4) a všechny ukázky jsme ověřili proti živému ARES.

Základní URL

https://ares.gov.cz/ekonomicke-subjekty-v-be/rest

Interaktivní dokumentace: Swagger UI · technická dokumentace na ares.gov.cz

1. Detail firmy podle IČO

Nejjednodušší volání je GET /ekonomicke-subjekty/{ico}. IČO musí mít přesně 8 číslic – kratší doplňte zleva nulami.

curl "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/27082440"

Zkrácená odpověď:

{
  "ico": "27082440",
  "obchodniJmeno": "Alza.cz a.s.",
  "dic": "CZ27082440",
  "pravniForma": "121",
  "datumVzniku": "2003-08-26",
  "sidlo": {
    "textovaAdresa": "Jankovcova 1522/53, Holešovice, 17000 Praha 7",
    ...
  },
  "seznamRegistraci": {
    "stavZdrojeVr": "AKTIVNI",
    "stavZdrojeRzp": "AKTIVNI",
    ...
  },
  ...
}

Pole seznamRegistraci říká, ve kterých zdrojových registrech subjekt je (VR = veřejný rejstřík, RŽP = živnostenský rejstřík…). Podle něj poznáte, který specializovaný endpoint má smysl volat dál.

2. Vyhledání firem podle názvu

Pro vyhledávání slouží POST /ekonomicke-subjekty/vyhledat s JSON filtrem. Kromě obchodniJmeno můžete filtrovat podle ico (pole, takže načtete více IČO jedním dotazem), sidlo, pravniForma nebo czNace.

curl -X POST "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest/ekonomicke-subjekty/vyhledat" \
  -H "Content-Type: application/json" \
  -d '{"obchodniJmeno": "seznam", "start": 0, "pocet": 10}'

Odpověď:

{
  "pocetCelkem": 11,
  "ekonomickeSubjekty": [
    { "ico": "01673408", "obchodniJmeno": "Seznam.cz datová centra, s.r.o.", ... },
    { "ico": "02238586", "obchodniJmeno": "Seznam.cz investiční, s.r.o.", ... },
    ...
  ]
}

pocetCelkem je celkový počet shod, stránkujete pomocí start a pocet.

3. Ukázka v JavaScriptu

const ARES = "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest";

// Detail firmy podle IČO
async function firmaPodleIco(ico) {
  const res = await fetch(`${ARES}/ekonomicke-subjekty/${ico.padStart(8, "0")}`);
  if (res.status === 404) return null; // subjekt neexistuje
  if (!res.ok) throw new Error(`ARES: ${res.status}`);
  return res.json();
}

// Vyhledání firem podle obchodního jména
async function hledatFirmy(nazev) {
  const res = await fetch(`${ARES}/ekonomicke-subjekty/vyhledat`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ obchodniJmeno: nazev, start: 0, pocet: 20 }),
  });
  const data = await res.json();
  if (!res.ok) throw new Error(data.popis);
  return data.ekonomickeSubjekty ?? [];
}

4. Ukázka v Pythonu

import requests

ARES = "https://ares.gov.cz/ekonomicke-subjekty-v-be/rest"

def firma_podle_ico(ico: str) -> dict | None:
    r = requests.get(f"{ARES}/ekonomicke-subjekty/{ico.zfill(8)}", timeout=10)
    if r.status_code == 404:
        return None  # subjekt neexistuje
    r.raise_for_status()
    return r.json()

def hledat_firmy(nazev: str) -> list[dict]:
    r = requests.post(
        f"{ARES}/ekonomicke-subjekty/vyhledat",
        json={"obchodniJmeno": nazev, "start": 0, "pocet": 20},
        timeout=10,
    )
    data = r.json()
    if not r.ok:
        raise RuntimeError(data.get("popis"))
    return data.get("ekonomickeSubjekty", [])

5. Další endpointy podle registru

Souhrnný endpoint stačí na většinu použití. Pro podrobnější data má každý zdrojový registr vlastní dvojici GET …/{ico} a POST …/vyhledat:

Endpoint Co vrací
/ekonomicke-subjekty Souhrnná data ze všech registrů – nejčastější volba
/ekonomicke-subjekty-vr Veřejný rejstřík (obchodní, spolkový…) – statutáři, společníci, základní kapitál
/ekonomicke-subjekty-rzp Živnostenský rejstřík – živnostenská oprávnění
/ekonomicke-subjekty-res Registr ekonomických subjektů ČSÚ – CZ-NACE, počet zaměstnanců
/ekonomicke-subjekty-ros Registr osob
/ekonomicke-subjekty-ceu Centrální evidence úpadců
/ekonomicke-subjekty-rcns Registr církví a náboženských společností
/ekonomicke-subjekty-nrpzs Národní registr poskytovatelů zdravotních služeb

6. Chyby a limity, na které narazíte

Subjekt nenalezen – HTTP 404

{
  "kod": "NENALEZENO",
  "subKod": "VYSTUP_SUBJEKT_NENALEZEN",
  "popis": "Nebyl nalezen žádný subjekt, který by odpovídal zadaným hodnotám. ..."
}

Špatné IČO – HTTP 400

IČO, které nemá přesně 8 číslic, vrátí CHYBA_VSTUPU se subkódem VSTUP_NEVALIDNI_FORMAT_ICO.

Příliš mnoho výsledků – HTTP 400

Pokud vyhledávání odpovídá více než 1 000 subjektům, ARES nevrátí ani první stránku – a to bez ohledu na parametr pocet. Obecná slova jako „servis“ nebo „stavby“ proto selžou. Dotaz zpřesněte, nebo chybu ošetřete jako „název je velmi běžný“.

{
  "kod": "CHYBA_VSTUPU",
  "popis": "Zadaný dotaz vrací příliš mnoho výsledků (6 371). Povoleno je maximálně 1 000 výsledků. ..."
}

Limit dotazů

Ministerstvo financí si vyhrazuje právo zablokovat uživatele, kteří pošlou více než 500 dotazů za minutu, opakovaně posílají stejné nebo chybné dotazy, mají příliš mnoho souběžných požadavků nebo obcházejí limity z více IP adres. Odpovědi proto cachujte a hromadné zpracování rozložte v čase.

Co ARES API neumí

ARES zná jen ekonomické subjekty. Pokud ověřujete nový název firmy nebo produktu, nestačí – nekontroluje ochranné známky (ÚPV, EUIPO, WIPO) ani dostupnost domén. A databáze ochranných známek ÚPV žádné srovnatelné REST API nemá.

Seberio tyhle kontroly spojuje do jedné. Bez programování si název můžete ověřit v ověření názvu firmy.

Chcete ARES, ochranné známky a domény v jednom API?

Zvažujeme veřejné Seberio API: jeden dotaz vrátí shody v ARES, databázích ÚPV/EUIPO/WIPO i dostupnost domén. Napište nám, k čemu byste ho použili – podle zájmu ho spustíme.

Mám zájem o Seberio API

Často kladené otázky (FAQ)

Potřebuji k ARES API registraci nebo API klíč?

Ne. ARES REST API je veřejné a zdarma, volá se bez registrace i bez API klíče. Musíte jen dodržovat podmínky provozu Ministerstva financí.

Funguje ještě staré XML rozhraní ARES (wwwinfo.mfcr.cz)?

Ne. Původní XML služby ARES skončily k 1. 1. 2024 a nahradilo je REST API na ares.gov.cz, které vrací JSON. Starší knihovny a integrace je potřeba přepsat.

Jaké jsou limity ARES API?

Ministerstvo financí může omezit přístup uživatelům, kteří pošlou více než 500 dotazů za minutu, opakovaně posílají stejné nebo chybné dotazy nebo obcházejí limity z více IP adres. Jeden vyhledávací dotaz navíc smí odpovídat nejvýše 1 000 subjektům.

Jak v ARES API vyhledat firmu podle názvu?

Pošlete POST na /ekonomicke-subjekty/vyhledat s JSON tělem obsahujícím obchodniJmeno. Výsledky stránkujete parametry start a pocet. Pokud název odpovídá více než 1 000 firmám, API vrátí chybu a dotaz je potřeba zpřesnit.

Proč v odpovědi chybí DIČ?

Pole dic ARES vrací jen u subjektů registrovaných k DPH. U neplátců DPH v odpovědi chybí.

Ověří ARES API, jestli je název firmy volný?

Jen částečně. ARES najde firmy se stejným nebo podobným obchodním jménem, ale nekontroluje ochranné známky ani domény. Název tak může být v ARES volný, a přesto chráněný ochrannou známkou.