REST API

Veřejné API pro českou legislativu

Přistupujte k zákonům, judikatuře, EU právu a parlamentním datům programaticky. Zdarma. Bez omezení registrací.

22 808
zákonů
310 142
rozhodnutí
1 271
EU předpisů
1 209
tisků

Rychlý start za 60 sekund

1

Registrujte se

Vytvořte si účet zdarma — stačí e-mail.

2

Vygenerujte si API token v profilu

Pojmenujte si token a zkopírujte ho.

3

Udělejte první požadavek

Bearer token do hlavičky — a máte data.

Příklad požadavku
curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://ceskezakony.cz/api/v1/laws/89/2012
Příklad odpovědi
{
    "data": {
        "id": 12345,
        "number": 89,
        "year": 2012,
        "title": "Občanský zákoník",
        "collection_code": "sb",
        "effective_from": "2014-01-01",
        "status": "effective",
        "stale_url": "/sb/2012/89"
    }
}

Proč používat naše API

Zdarma navždy

Bez placených plánů, bez omezení registrací

Kompletní pokrytí

Sbírka zákonů, judikatura NS a ÚS, EU právo, parlamentní tisky

Aktualizace denně

Automatický sync z oficiálních zdrojů

Všechna data v JSON

Standardní REST, cursor paginace

OpenAPI 3.1 specifikace

Swagger UI a generátory klientů

Vysoké limity

5 000 požadavků denně pro registrované

Co je v API

Zákony

Sbírka zákonů ČR — zákony, vyhlášky, nařízení vlády. Aktuální znění, historie verzí, textové fragmenty a vzájemné vztahy.

  • GET /api/v1/laws
  • GET /api/v1/laws/{číslo}/{rok}
  • GET /api/v1/laws/{číslo}/{rok}/fragments
  • GET /api/v1/laws/{číslo}/{rok}/amendments
Zobrazit všechny endpointy

Judikatura

Soudní rozhodnutí NS, NSS, ÚS a dalších soudů z databáze Justice.cz. Fulltextové vyhledávání, filtrování dle soudu a klíčových slov.

  • GET /api/v1/decisions
  • GET /api/v1/decisions/{id}
  • GET /api/v1/courts
  • GET /api/v1/decision-keywords
Zobrazit všechny endpointy

EU právo

Nařízení a směrnice EU z EUR-Lex. Přehled transpozic do českého práva, stav implementace.

  • GET /api/v1/eu-laws
  • GET /api/v1/eu-laws/{celex}
  • GET /api/v1/eu-laws/{celex}/transpositions
Zobrazit všechny endpointy

Parlament

Sněmovní tisky, poslanci, hlasování a schůze z PSP.cz. Sledování legislativního procesu v reálném čase.

  • GET /api/v1/parliament/bills
  • GET /api/v1/parliament/deputies
  • GET /api/v1/parliament/votes
  • GET /api/v1/parliament/sessions
Zobrazit všechny endpointy

Váš účet a API management

Info o uživateli a limitech, statistiky využití, správa API tokenů a webhook subscriptions.

  • GET /api/v1/me — Info o uživateli a limitech
  • GET /api/v1/me/usage — Statistiky využití
  • GET /api/v1/me/tokens — Správa API tokenů
  • GET /api/v1/me/webhooks — Správa webhook subscriptions
Zobrazit všechny endpointy

Bulk export

Stáhněte si celé datasety najednou — zákony, judikatura, EU právo, parlamentní tisky. Denně generované JSON.gz archivy.

  • GET /api/v1/bulk/laws — Všechny zákony (JSON.gz)
  • GET /api/v1/bulk/decisions — Všechna rozhodnutí
  • GET /api/v1/bulk/eu-laws — EU legislativa
  • GET /api/v1/bulk/parliament-bills — Parlamentní tisky
Zobrazit všechny endpointy

Ukázky kódu

Načtení zákona podle čísla a roku
curl -s \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  https://ceskezakony.cz/api/v1/laws/89/2012
$response = Http::withToken('YOUR_TOKEN')
    ->acceptJson()
    ->get('https://ceskezakony.cz/api/v1/laws/89/2012');

$law = $response->json('data');
import requests

response = requests.get(
    'https://ceskezakony.cz/api/v1/laws/89/2012',
    headers={
        'Authorization': 'Bearer YOUR_TOKEN',
        'Accept': 'application/json',
    }
)
law = response.json()['data']
const response = await fetch(
  'https://ceskezakony.cz/api/v1/laws/89/2012',
  {
    headers: {
      'Authorization': 'Bearer YOUR_TOKEN',
      'Accept': 'application/json',
    }
  }
);
const { data: law } = await response.json();
Vyhledávání v judikatuře
curl -s \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  "https://ceskezakony.cz/api/v1/decisions?q=bezdůvodné+obohacení&court=NS"
$response = Http::withToken('YOUR_TOKEN')
    ->acceptJson()
    ->get('https://ceskezakony.cz/api/v1/decisions', [
        'q'      => 'bezdůvodné obohacení',
        'court'  => 'NS',
    ]);

$decisions = $response->json('data');
response = requests.get(
    'https://ceskezakony.cz/api/v1/decisions',
    params={'q': 'bezdůvodné obohacení', 'court': 'NS'},
    headers={'Authorization': 'Bearer YOUR_TOKEN', 'Accept': 'application/json'},
)
decisions = response.json()['data']
const params = new URLSearchParams({ q: 'bezdůvodné obohacení', court: 'NS' });
const response = await fetch(
  `https://ceskezakony.cz/api/v1/decisions?${params}`,
  { headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Accept': 'application/json' } }
);
const { data: decisions } = await response.json();
Sledování legislativního procesu
curl -s \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  "https://ceskezakony.cz/api/v1/parliament/bills?period=10&status=active"
$response = Http::withToken('YOUR_TOKEN')
    ->acceptJson()
    ->get('https://ceskezakony.cz/api/v1/parliament/bills', [
        'period' => 10,
        'status' => 'active',
    ]);

$bills = $response->json('data');
response = requests.get(
    'https://ceskezakony.cz/api/v1/parliament/bills',
    params={'period': 10, 'status': 'active'},
    headers={'Authorization': 'Bearer YOUR_TOKEN', 'Accept': 'application/json'},
)
bills = response.json()['data']
const params = new URLSearchParams({ period: 10, status: 'active' });
const response = await fetch(
  `https://ceskezakony.cz/api/v1/parliament/bills?${params}`,
  { headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Accept': 'application/json' } }
);
const { data: bills } = await response.json();

Autentizace

API používá Bearer token autentizaci:

Authorization: Bearer YOUR_API_TOKEN
  • Token si vygenerujete ve svém profilu po přihlášení: Profil → API
  • Nikdy nesdílejte svůj API token — zacházejte s ním jako s heslem.
  • Všechny požadavky musí jít přes HTTPS.
Token lze kdykoli zneplatnit nebo obnovit v nastavení profilu. Doporučujeme používat oddělené tokeny pro různé projekty.

Limity a férové využití

Typ přístupu Denní limit Burst limit
Registrovaní uživatelé 5 000 / den 5 req/s

Formát odpovědí

  • Všechny odpovědi jsou ve formátu JSON
  • Názvy polí používají snake_case
  • Data jsou ve formátu ISO 8601 (např. 2024-01-01T00:00:00Z)
  • Pro velké kolekce je použita cursor paginace
  • Zasílejte hlavičku Accept-Language pro překládaný obsah.

Struktura chybové odpovědi

{
    "error": {
        "code": "RATE_LIMIT_EXCEEDED",
        "message": "Too many requests. Retry after 60s.",
        "retry_after": 60
    }
}

Cursor paginace

{
    "data": [ ... ],
    "meta": {
        "cursor": "eyJpZCI6MTIzNH0",
        "per_page": 25,
        "has_more": true
    }
}

Pokročilé funkce

Webhook notifikace

Odebírejte události v reálném čase: změny zákonů, nová rozhodnutí, posun tisků legislativním procesem. HMAC-SHA256 podepsané payloady.

Bulk export

Stáhněte si celé datasety najednou — zákony, judikatura, EU právo, parlamentní tisky. Denně generované JSON.gz archivy.

HTTP caching (ETag)

Efektivní caching pomocí ETag a Cache-Control hlaviček. Immutable data (konkrétní verze zákonů, rozhodnutí) jsou cachovatelná na 24 hodin.

Per-user limity

Potřebujete vyšší limity pro akademický výzkum nebo veřejnou službu? Kontaktujte nás a nastavíme vám vlastní kvótu zdarma.

Plná reference API

Kompletní referenční dokumentace všech endpointů v Swagger UI — interaktivní testování přímo v prohlížeči, generování klientů v desítkách jazyků.

Začněte stavět — je to zdarma

Registrace zabere 30 sekund. Žádná platební karta.

Oblíbené
Historie prohlížení