Fundamenty FundamentyAPI

Rychlý start

Data o akciích v JSON: zprávy s českým souhrnem a sentimentem, reporty a investorské prezentace z USA i Evropy.

Základní adresahttps://api.fundamenty.cz — cesty endpointů začínají /stable/
FormátJSON · UTF-8 · jen GET · CORS pro všechny domény
Rozsah datzprávy, reporty, investorské prezentace, adresář symbolů. Ceny akcií ani finanční výkazy veřejné rozhraní neobsahuje; pokud je potřebujete, napište nám.
Bez klíče50 požadavků za měsíc, jen ukázkové společnosti
Ukázkové společnosti
AAPLMSFTNVDAGOOGLAMZNMETATSLAAVGOLLYJPMVXOMUNHMAJNJPGHDCOSTORCLABBVWMTKONFLXCRMAMD
Bez klíče vracejí datové endpointy jen tyto společnosti. S klíčem všechny.
S klíčemlimity podle plánu; klíč vám vystavíme na základě žádosti
Strojový popisOpenAPI 3.1 — pro generátory klientů

První volání — bez klíče a bez registrace:

curl "https://api.fundamenty.cz/stable/news/stock?symbol=AAPL"

Potřebujete plný přístup?

Bez klíče máte 50 požadavků za měsíc a jen ukázkové společnosti. S klíčem získáte všechny společnosti a limity podle plánu.

Žádost o API klíč

Autentizace a limity

Klíč není povinný. Bez něj máte 50 požadavků za měsíc; kolik jich zbývá, ukazuje hlavička X-RateLimit-Remaining. S klíčem je limit vyšší. Klíč se posílá v hlavičce:

X-API-Key: VAS_API_KLIC

Přijímáme také hlavičku Authorization: Bearer a parametr ?apikey=. Parametr v adrese se hodí jen pro zkoušení v prohlížeči: adresa i s klíčem se ukládá do logů serverů a do historie prohlížeče a odesílá se v hlavičce Referer. V produkčním provozu posílejte klíč vždy v hlavičce.

Přístup bez klíče není žádný z plánů. Plány se vztahují jen na přístup s klíčem a mají denní a minutové limity; svůj plán a limity vidíte po přihlášení v profilu. Bez klíče platí pouze měsíční limit na IP adresu.

Hlavičky limitů

V hlavičkách každé odpovědi vidíte stav své kvóty. Bez klíče jde o měsíční kvótu na IP adresu, s klíčem o denní kvótu plánu; u plánů bez denního limitu se tyto hlavičky neposílají. Minutový limit plánu se předem neoznamuje, dozvíte se o něm až z odpovědi 429.

HlavičkaVýznam
X-RateLimit-LimitCelková velikost kvóty.
X-RateLimit-RemainingKolik požadavků v kvótě zbývá.
X-RateLimit-ResetOkamžik obnovení kvóty jako unixový čas v sekundách.
Retry-AfterJen u odpovědi 429: počet sekund, po kterých má smysl volat znovu. U minutového limitu do konce minuty, u denního do půlnoci, bez klíče do začátku příštího měsíce.

Ukázkové společnosti bez klíče

Bez klíče vracejí endpointy pracující se symbolem pouze záznamy těchto společností. Požadavek na symbol mimo seznam skončí chybou 403 s kódem anon_sample_only; přehledy bez parametru symbol se na tento seznam zúží automaticky. Kompletní data získáte s API klíčem.

AAPLMSFTNVDAGOOGLAMZNMETATSLAAVGOLLYJPMVXOMUNHMAJNJPGHDCOSTORCLABBVWMTKONFLXCRMAMD

Zúžení se týká endpointů /stable/news/stock, /stable/news/stock/latest, /stable/filings, /stable/filings/latest, /stable/presentations, /stable/presentations/latest. Bez omezení zůstávají /stable/symbols, /stable/news/general, /stable/usage, /stable/status: tržní zprávy se k symbolu nevážou a adresář má ukázat celý rozsah dat.

Regiony a skupiny dat u klíče

Přístup klíče může být omezený na skupiny dat (zprávy, reporty, prezentace) a na regiony. Regiony klíče odpovídají regionu společnosti v adresáři symbolů:

KdeHodnotyVýznam
symbols.regionNA, EU, LATAM, APAC, MEA, OTHERGeografický region sídla společnosti v adresáři symbolů.
usage.access.regionsus, eu, worldRegiony povolené klíči: us = NA, eu = EU, world = LATAM, APAC, MEA a OTHER. Požadavek na společnost mimo povolené regiony skončí chybou 403 region_denied.

Tvar odpovědi

Seznamy se vracejí jako prosté pole záznamů, bez obálky:

1[
2  {
3    "symbol": "AAPL",
4    "title": "Apple oznámil rekordní tržby v Q3"
5  },
6  {
7    "symbol": "AAPL",
8    "title": "Analytici zvyšují cílovou cenu"
9  }
10]

Stránkování

Stránkování je všude stejné: page od 1 a limit 1–200 (výchozí 50). Oba parametry najdete v tabulce každého stránkovaného endpointu. Údaje o stránkování jsou v hlavičkách odpovědi:

HlavičkaVýznam
X-Total-CountCelkový počet záznamů odpovídajících filtru. U výpisu reportů bez parametru symbol se neposílá.
X-PageVrácená stránka.
X-LimitZáznamů na stránku.

Prázdný výsledek je [] se statusem 200, nikdy null ani 404. Pokud chcete stránkování v těle odpovědi, přidejte envelope=1 a dostanete objekt { data, pagination }:

1{
2  "data": [
3    {
4      "symbol": "AAPL",
5      "title": "Apple oznámil rekordní tržby v Q3"
6    }
7  ],
8  "pagination": {
9    "page": 1,
10    "limit": 50,
11    "total": 330,
12    "total_pages": 7
13  }
14}
15
16// total a total_pages chybí tam, kde se neposílá X-Total-Count
paginationTypVýznam
pageintegerVrácená stránka.
limitintegerZáznamů na stránku.
totalintegerCelkový počet záznamů odpovídajících filtru. U výpisu reportů bez parametru symbol chybí.
total_pagesintegerPočet stránek. Chybí vždy spolu s total.

CORS a cache

Rozhraní posílá hlavičku Access-Control-Allow-Origin: *, lze ho tedy volat přímo z prohlížeče. Hlavičky stránkování a limitů jsou skriptům přístupné (Access-Control-Expose-Headers).

Každá úspěšná odpověď má hlavičku ETag. Když ji pošlete zpět v hlavičce If-None-Match a obsah se nezměnil, dostanete 304 bez těla; do kvóty se takový požadavek počítá stejně jako ostatní. Hlavička Cache-Control má hodnotu private, max-age=60, odpovědi s klíčem tedy nepatří do sdílené cache. Veřejný endpoint /stable/status má public, max-age=60. Stav účtu (/stable/usage) a chybové odpovědi se do cache neukládají vůbec (no-store).

Chyby

Tělo chybové odpovědi má nejméně tři pole: error (text v češtině, může se měnit), code (neměnný strojový kód) a status (HTTP status). Některé kódy přidávají další pole. Ve své aplikaci se rozhodujte podle pole code. Úplný seznam hodnot:

codeStatusKdy nastane
invalid_parameter 400 Parametr má nesprávný tvar nebo hodnotu, chybí povinný symbol, nebo limit překračuje strop pro include=text.
invalid_api_key 401 Klíč neexistuje, je zrušený, nebo patří neaktivnímu účtu.
scope_denied 403 Klíč nemá přístup k požadované skupině dat (zprávy, reporty, prezentace).
region_denied 403 Všechny požadované společnosti jsou mimo regiony povolené pro tento klíč.
anon_sample_only 403 Požadavek bez klíče na symbol mimo ukázkové společnosti. Tělo odpovědi obsahuje pole symbols s celým seznamem.
not_found 404 Cesta neexistuje.
method_not_allowed 405 Jiná metoda než GET.
rate_limited 429 Vyčerpaný měsíční limit bez klíče, denní limit plánu nebo minutový limit plánu. Kdy volat znovu, říká hlavička Retry-After.
server_error 500 Neočekávaná chyba na naší straně.
data_unavailable 503 Zdroj dat je dočasně nedostupný.
1{
2  "error": "Neplatný API klíč.",
3  "code": "invalid_api_key",
4  "status": 401
5}

HTTP stavy

StatusNázevKdy nastane
400 Bad Request Chybný parametr. Text chyby uvádí, který.
401 Unauthorized Zadaný klíč je neplatný nebo zrušený. Bez klíče tato chyba nenastane, volání proběhne anonymně.
403 Forbidden Klíč nemá přístup ke skupině dat nebo k regionu společnosti, nebo jde o požadavek bez klíče na společnost mimo ukázkový seznam. O rozšíření přístupu napište na info@fundamenty.cz.
404 Not Found Cesta neexistuje.
405 Method Not Allowed Rozhraní je jen pro čtení, všechny endpointy přijímají pouze GET.
429 Too Many Requests Bez klíče: více než 50 požadavků za měsíc. S klíčem: vyčerpaný denní nebo minutový limit plánu. Hlavička Retry-After uvádí, za kolik sekund to zkusit znovu.
500 Server Error Chyba na naší straně. Pokud se opakuje, napište nám na info@fundamenty.cz.
503 Service Unavailable Zdroj dat je dočasně nedostupný. Opakujte volání za chvíli.

Podmínky užití dat

Data z rozhraní můžete používat ve vlastních aplikacích a interních systémech a zobrazovat titulky i souhrny koncovým uživatelům, vždy s uvedením zdroje „Fundamenty.cz". Po dobu trvání přístupu si je můžete ukládat (do cache i do vlastní databáze). Nesmíte je dále prodávat, předávat třetím stranám jako datovou sadu ani nabízet prostřednictvím konkurenčního rozhraní.

Odkazy v polích url a documentUrl vedou na obsah třetích stran (vydavatelé, regulátoři, investorské stránky společností). Použití tohoto obsahu se řídí podmínkami příslušného zdroje; naše rozhraní poskytuje pouze metadata a odkaz.

Souhrny, sentiment i zatřídění vznikají automaticky a nejsou investičním doporučením; za jejich úplnost a přesnost neručíme. Podrobné podmínky přístupu s klíčem jsou součástí dohody, kterou s vámi uzavíráme e-mailem na info@fundamenty.cz.

Symboly

Adresář symbolů #

Všechny společnosti, ke kterým máme data: symbol, název a počet zpráv, podání a prezentací. Řazeno podle šíře pokrytí.

GET /stable/symbols?symbol=AAPL&search=Apple

Bez klíče: bez omezení, platí jen měsíční limit.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
symbol string — Burzovní symbol, přesná shoda. Více symbolů oddělte čárkou, nejvýše 50. Bez tohoto parametru se vracejí všechny společnosti po stránkách.
search string — Vyhledávání v symbolu i názvu společnosti; stačí část textu.
sort enum — coverage (výchozí, podle šíře pokrytí) nebo symbol (abecedně).
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
symbol string Burzovní symbol.
companyName string | null Název společnosti, pokud ho evidujeme.
region string | null Geografický region sídla společnosti: NA, EU, LATAM, APAC, MEA nebo OTHER. Podle něj se řídí regionální přístup klíče (viz Autentizace).
country string | null Země, ISO 3166-1 alpha-2.
newsCount integer Počet zpráv.
filingsCount integer Počet podání a reportů.
presentationsCount integer Počet investorských prezentací.
1[
2  {
3    "symbol": "AAPL",
4    "companyName": "Apple Inc.",
5    "region": "NA",
6    "country": "US",
7    "newsCount": 330,
8    "filingsCount": 1062,
9    "presentationsCount": 8
10  },
11  {
12    "symbol": "005930.KS",
13    "companyName": "Samsung Electronics Co., Ltd.",
14    "region": "APAC",
15    "country": "KR",
16    "newsCount": 41,
17    "filingsCount": 0,
18    "presentationsCount": 26
19  }
20]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/symbols?symbol=AAPL&search=Apple"
import requests

URL = "https://api.fundamenty.cz/stable/symbols"
params = {"symbol": "AAPL", "search": "Apple"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/symbols");
url.searchParams.set("symbol", "AAPL");
url.searchParams.set("search", "Apple");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/symbols?symbol=AAPL&search=Apple");
$data = json_decode($json, true);
print_r($data);
Zprávy k akciím

Zprávy pro vybranou akcii #

Zprávy ke konkrétní akcii. Titulek a souhrn v češtině, sentiment, druh zprávy. Řazeno od nejnovějších.

GET /stable/news/stock?symbol=AAPL&from=2026-01-01

Bez klíče: pouze ukázkové společnosti; jiný symbol vrátí 403 anon_sample_only.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
symbol string ano Burzovní symbol, přesná shoda. Více symbolů oddělte čárkou, nejvýše 50.
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
sentiment enum — positive, neutral nebo negative.
category string — Druh zprávy, přesná shoda s polem category. Možné hodnoty: earnings_report, earnings_date, guidance, analyst_rating, legal_securities, legal, deals_ma, product_launch, product, executive_change, stock_commentary, macro_market, company_core, general. Nové hodnoty doplňujeme do tohoto seznamu.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id integer Identifikátor záznamu, unikátní v rámci endpointu.
symbol string Burzovní symbol.
publishedAt datetime Čas vydání ve formátu ISO 8601, pásmo Europe/Prague. Podle něj se řadí, od nejnovějších.
publisher string Vydavatel, např. CNBC.
title string Titulek v češtině.
titleOriginal string | null Titulek v původním jazyce.
summary string Souhrn v češtině ve formátu Markdown; názvy firem a čísla jsou tučně.
url string Odkaz na původní článek.
imageUrl string | null Náhledový obrázek, pokud ho zdroj má.
sentiment enum positive, neutral nebo negative.
category string | null Druh zprávy: earnings_report, earnings_date, guidance, analyst_rating, legal_securities, legal, deals_ma, product_launch, product, executive_change, stock_commentary, macro_market, company_core, general. Nové hodnoty doplňujeme do tohoto seznamu.
isNewAnnouncement boolean První zpráva o dané události za 24 h. false = komentář nebo navazující zpráva.
1[
2  {
3    "id": 482913,
4    "symbol": "AAPL",
5    "publishedAt": "2026-09-04T20:32:00+02:00",
6    "publisher": "CNBC",
7    "title": "Apple oznámil rekordní tržby v Q3",
8    "titleOriginal": "Apple posts record Q3 revenue",
9    "summary": "**Apple** vykázal tržby 95 mld. USD…",
10    "url": "https://www.cnbc.com/2026/09/04/apple.html",
11    "imageUrl": "https://image.cnbcfm.com/apple.jpg",
12    "sentiment": "positive",
13    "category": "earnings_report",
14    "isNewAnnouncement": true
15  }
16]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/news/stock?symbol=AAPL&from=2026-01-01"
import requests

URL = "https://api.fundamenty.cz/stable/news/stock"
params = {"symbol": "AAPL", "from": "2026-01-01"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/news/stock");
url.searchParams.set("symbol", "AAPL");
url.searchParams.set("from", "2026-01-01");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/news/stock?symbol=AAPL&from=2026-01-01");
$data = json_decode($json, true);
print_r($data);
Zprávy k akciím

Nejnovější zprávy k akciím #

Akciové zprávy napříč všemi symboly, od nejnovějších. Stejná pole jako news/stock.

GET /stable/news/stock/latest?from=2026-01-01&to=2026-09-08

Bez klíče: výsledky se zúží na ukázkové společnosti.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
sentiment enum — positive, neutral nebo negative.
category string — Druh zprávy, přesná shoda s polem category. Možné hodnoty: earnings_report, earnings_date, guidance, analyst_rating, legal_securities, legal, deals_ma, product_launch, product, executive_change, stock_commentary, macro_market, company_core, general. Nové hodnoty doplňujeme do tohoto seznamu.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id integer Identifikátor záznamu, unikátní v rámci endpointu.
symbol string Burzovní symbol.
publishedAt datetime Čas vydání ve formátu ISO 8601, pásmo Europe/Prague. Podle něj se řadí, od nejnovějších.
publisher string Vydavatel, např. CNBC.
title string Titulek v češtině.
titleOriginal string | null Titulek v původním jazyce.
summary string Souhrn v češtině ve formátu Markdown; názvy firem a čísla jsou tučně.
url string Odkaz na původní článek.
imageUrl string | null Náhledový obrázek, pokud ho zdroj má.
sentiment enum positive, neutral nebo negative.
category string | null Druh zprávy: earnings_report, earnings_date, guidance, analyst_rating, legal_securities, legal, deals_ma, product_launch, product, executive_change, stock_commentary, macro_market, company_core, general. Nové hodnoty doplňujeme do tohoto seznamu.
isNewAnnouncement boolean První zpráva o dané události za 24 h. false = komentář nebo navazující zpráva.
1[
2  {
3    "id": 482913,
4    "symbol": "AAPL",
5    "publishedAt": "2026-09-04T20:32:00+02:00",
6    "publisher": "CNBC",
7    "title": "Apple oznámil rekordní tržby v Q3",
8    "titleOriginal": "Apple posts record Q3 revenue",
9    "summary": "**Apple** vykázal tržby 95 mld. USD…",
10    "url": "https://www.cnbc.com/2026/09/04/apple.html",
11    "imageUrl": "https://image.cnbcfm.com/apple.jpg",
12    "sentiment": "positive",
13    "category": "earnings_report",
14    "isNewAnnouncement": true
15  }
16]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/news/stock/latest?from=2026-01-01&to=2026-09-08"
import requests

URL = "https://api.fundamenty.cz/stable/news/stock/latest"
params = {"from": "2026-01-01", "to": "2026-09-08"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/news/stock/latest");
url.searchParams.set("from", "2026-01-01");
url.searchParams.set("to", "2026-09-08");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/news/stock/latest?from=2026-01-01&to=2026-09-08");
$data = json_decode($json, true);
print_r($data);
Zprávy z trhu

Nejnovější zprávy z trhu #

Zprávy o trhu jako celku: sazby, inflace, geopolitika, sektory. Od nejnovějších. Na rozdíl od akciových zpráv nemají pole symbol ani category a místo isNewAnnouncement vracejí isImportant.

GET /stable/news/general?from=2026-01-01&to=2026-09-08

Bez klíče: bez omezení, platí jen měsíční limit.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
sentiment enum — positive, neutral nebo negative.
important integer — Hodnota 1 vrátí jen zprávy významné pro trh.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id integer Identifikátor záznamu, unikátní v rámci endpointu.
publishedAt datetime Čas vydání ve formátu ISO 8601, pásmo Europe/Prague. Podle něj se řadí, od nejnovějších.
publisher string Vydavatel, např. CNBC.
title string Titulek v češtině.
titleOriginal string | null Titulek v původním jazyce.
summary string Souhrn v češtině ve formátu Markdown; názvy firem a čísla jsou tučně.
url string Odkaz na původní článek.
imageUrl string | null Náhledový obrázek, pokud ho zdroj má.
sentiment enum positive, neutral nebo negative.
isImportant boolean Zpráva významná pro trh — výsledky, akvizice, regulace.
1[
2  {
3    "id": 91427,
4    "publishedAt": "2026-09-03T14:05:00+02:00",
5    "publisher": "Reuters",
6    "title": "Fed ponechal sazby beze změny",
7    "titleOriginal": "Fed holds rates steady",
8    "summary": "**Fed** ponechal sazby na **4,25–4,50 %**…",
9    "url": "https://www.reuters.com/markets/fed-holds.html",
10    "imageUrl": null,
11    "sentiment": "neutral",
12    "isImportant": true
13  }
14]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/news/general?from=2026-01-01&to=2026-09-08"
import requests

URL = "https://api.fundamenty.cz/stable/news/general"
params = {"from": "2026-01-01", "to": "2026-09-08"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/news/general");
url.searchParams.set("from", "2026-01-01");
url.searchParams.set("to", "2026-09-08");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/news/general?from=2026-01-01&to=2026-09-08");
$data = json_decode($json, true);
print_r($data);
Reporty

Reporty pro vybranou společnost #

Výroční a kvartální zprávy, podání regulátorům, ad-hoc oznámení — 10-K, 10-Q, 20-F, 8-K i evropské výroční zprávy. Vrací metadata a odkaz, ne obsah dokumentu. Řazeno podle data podání od nejnovějších. Bez parametru symbol se neposílá hlavička X-Total-Count a objekt pagination v obálce neobsahuje total.

GET /stable/filings?symbol=AAPL&form=10-K

Bez klíče: symbol mimo ukázkové společnosti vrátí 403 anon_sample_only; bez parametru symbol se výsledky zúží na ukázkové společnosti.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
symbol string — Burzovní symbol, přesná shoda. Více symbolů oddělte čárkou, nejvýše 50.
form string — Typ formuláře, přesná shoda včetně velikosti písmen, např. 10-K, 10-Q, 8-K, 20-F, 6-K.
category enum — financial_report, earnings, event, insider, proxy, other.
full integer — Bez tohoto parametru se vynechávají kategorie insider a other (cílený filtr category na ně funguje i tak). Hodnota 1 vrátí vše.
year integer — Fiskální rok, ne kalendářní.
quarter integer — Fiskální kvartál 1–4.
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id integer Identifikátor podání.
symbol string Burzovní symbol.
form string Typ formuláře podle zdroje, např. 10-K, 10-Q, 8-K, 20-F, 6-K.
category enum | null Zatřídění pro filtrování: financial_report, earnings, event, insider, proxy, other.
filedAt datetime | null Datum podání; čas se neeviduje (00:00). Podle něj se řadí, od nejnovějších.
periodOfReport date | null Konec vykazovaného období.
fiscalYear integer | null Fiskální rok.
fiscalQuarter integer | null Fiskální kvartál 1–4. Roční zprávy mají null. Pololetní zprávy (typicky evropské) mají 2, protože uzavírají druhý kvartál fiskálního roku; první pololetí se od druhého kvartálu nerozlišuje.
title string Název dokumentu.
documentUrl string | null Odkaz na hlavní dokument.
provider string Zdroj podání, jedna z hodnot sec, fca_nsm, ir, edinet, cvm.
1[
2  {
3    "id": 88412,
4    "symbol": "AAPL",
5    "form": "10-K",
6    "category": "financial_report",
7    "filedAt": "2025-10-31T00:00:00+01:00",
8    "periodOfReport": "2025-09-27",
9    "fiscalYear": 2025,
10    "fiscalQuarter": null,
11    "title": "Annual report for fiscal year ended September 27, 2025",
12    "documentUrl": "https://sec.gov/Archives/…/aapl-20250927.htm",
13    "provider": "sec"
14  }
15]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/filings?symbol=AAPL&form=10-K"
import requests

URL = "https://api.fundamenty.cz/stable/filings"
params = {"symbol": "AAPL", "form": "10-K"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/filings");
url.searchParams.set("symbol", "AAPL");
url.searchParams.set("form", "10-K");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/filings?symbol=AAPL&form=10-K");
$data = json_decode($json, true);
print_r($data);
Reporty

Nejnovější reporty #

Nejnovější podání napříč celým trhem, bez filtru podle symbolu, řazená podle data podání od nejnovějších. Pole odpovědi jsou stejná jako u /stable/filings. Hlavička X-Total-Count se u tohoto endpointu neposílá.

GET /stable/filings/latest?form=8-K&category=earnings

Bez klíče: výsledky se zúží na ukázkové společnosti.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
form string — Typ formuláře, přesná shoda včetně velikosti písmen, např. 10-K, 10-Q, 8-K, 20-F, 6-K.
category enum — financial_report, earnings, event, insider, proxy, other.
full integer — Bez tohoto parametru se vynechávají kategorie insider a other (cílený filtr category na ně funguje i tak). Hodnota 1 vrátí vše.
year integer — Fiskální rok, ne kalendářní.
quarter integer — Fiskální kvartál 1–4.
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id integer Identifikátor podání.
symbol string Burzovní symbol.
form string Typ formuláře podle zdroje, např. 10-K, 10-Q, 8-K, 20-F, 6-K.
category enum | null Zatřídění pro filtrování: financial_report, earnings, event, insider, proxy, other.
filedAt datetime | null Datum podání; čas se neeviduje (00:00). Podle něj se řadí, od nejnovějších.
periodOfReport date | null Konec vykazovaného období.
fiscalYear integer | null Fiskální rok.
fiscalQuarter integer | null Fiskální kvartál 1–4. Roční zprávy mají null. Pololetní zprávy (typicky evropské) mají 2, protože uzavírají druhý kvartál fiskálního roku; první pololetí se od druhého kvartálu nerozlišuje.
title string Název dokumentu.
documentUrl string | null Odkaz na hlavní dokument.
provider string Zdroj podání, jedna z hodnot sec, fca_nsm, ir, edinet, cvm.
1[
2  {
3    "id": 88412,
4    "symbol": "AAPL",
5    "form": "10-K",
6    "category": "financial_report",
7    "filedAt": "2025-10-31T00:00:00+01:00",
8    "periodOfReport": "2025-09-27",
9    "fiscalYear": 2025,
10    "fiscalQuarter": null,
11    "title": "Annual report for fiscal year ended September 27, 2025",
12    "documentUrl": "https://sec.gov/Archives/…/aapl-20250927.htm",
13    "provider": "sec"
14  }
15]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/filings/latest?form=8-K&category=earnings"
import requests

URL = "https://api.fundamenty.cz/stable/filings/latest"
params = {"form": "8-K", "category": "earnings"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/filings/latest");
url.searchParams.set("form", "8-K");
url.searchParams.set("category", "earnings");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/filings/latest?form=8-K&category=earnings");
$data = json_decode($json, true);
print_r($data);
Prezentace

Investorské prezentace pro vybranou společnost #

Kvartální prezentace k výsledkům a materiály z investorských dnů. Americké i evropské firmy v jednom endpointu, rozlišené polem region. Řazeno podle data prezentace od nejnovějších.

GET /stable/presentations?symbol=NVDA&year=2027

Bez klíče: symbol mimo ukázkové společnosti vrátí 403 anon_sample_only; bez parametru symbol se výsledky zúží na ukázkové společnosti.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
symbol string — Burzovní symbol, přesná shoda. Víc symbolů oddělte čárkou, nejvýš 50.
year integer — Fiskální rok (u NVIDIA končí FY27 v lednu 2027).
quarter integer — Fiskální kvartál 1–4.
kind enum — earnings_deck nebo investor_day. U evropských firem se druh neeviduje, filtr je proto z výsledků vyřadí.
region enum — US nebo EU.
include string — Hodnota text přidá do odpovědi plný text prezentace (typicky 20–150 kB na záznam). V tom případě je výchozí limit 10 a nejvýše 20; vyšší hodnota vrátí chybu 400.
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50. Při include=text je výchozí hodnota 10 a nejvýše 20.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id string Identifikátor záznamu (stabilní otisk adresy dokumentu). Hodí se k odstranění duplicit a k odkazování.
symbol string Burzovní symbol.
title string Název prezentace.
presentedAt datetime | null Datum prezentace, nebo null, když ho zdroj neuvádí. Řadí se podle něj, od nejnovějších; záznamy bez data jsou na konci.
url string Odkaz na PDF, výjimečně PPTX.
fiscalYear integer | null Fiskální rok.
fiscalQuarter integer | null Fiskální kvartál.
kind enum | null earnings_deck nebo investor_day. U evropských firem null.
region enum US nebo EU: trh, ze kterého prezentace pochází. Nejde o region společnosti z adresáře symbolů.
updatedAt datetime Poslední aktualizace záznamu.
text string | null Pouze s include=text, jinak pole v odpovědi chybí. Typicky 20–150 kB na prezentaci. U evropských firem null.
1[
2  {
3    "id": "3f9a1c2e7b8d4056a1b2c3d4e5f60718",
4    "symbol": "NVDA",
5    "title": "Q2 FY27 Earnings Presentation",
6    "presentedAt": "2026-08-27T00:00:00+02:00",
7    "url": "https://investor.nvidia.com/Q2-FY27.pdf",
8    "fiscalYear": 2027,
9    "fiscalQuarter": 2,
10    "kind": "earnings_deck",
11    "region": "US",
12    "updatedAt": "2026-08-28T04:12:00+02:00"
13  }
14]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/presentations?symbol=NVDA&year=2027"
import requests

URL = "https://api.fundamenty.cz/stable/presentations"
params = {"symbol": "NVDA", "year": "2027"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/presentations");
url.searchParams.set("symbol", "NVDA");
url.searchParams.set("year", "2027");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/presentations?symbol=NVDA&year=2027");
$data = json_decode($json, true);
print_r($data);
Prezentace

Nejnovější investorské prezentace #

Nejnovější prezentace napříč celým trhem, bez filtru podle symbolu, řazené podle data prezentace od nejnovějších. Pole odpovědi jsou stejná jako u /stable/presentations.

GET /stable/presentations/latest?year=2027&quarter=2

Bez klíče: výsledky se zúží na ukázkové společnosti.

Vyzkoušet

Parametry

ParametrTypPovinnýPopis
year integer — Fiskální rok (u NVIDIA končí FY27 v lednu 2027).
quarter integer — Fiskální kvartál 1–4.
kind enum — earnings_deck nebo investor_day. Evropské prezentace filtr z výsledků vyřadí.
region enum — US nebo EU.
include string — Hodnota text přidá do odpovědi plný text prezentace (typicky 20–150 kB na záznam). V tom případě je výchozí limit 10 a nejvýše 20; vyšší hodnota vrátí chybu 400.
from date — Počáteční datum včetně, ve tvaru YYYY-MM-DD nebo YYYY-MM-DDTHH:MM:SS, časové pásmo Europe/Prague. Místo T lze použít mezeru, v URL zapsanou jako %20.
to date — Koncové datum včetně, stejný tvar jako from. Bez uvedení času zahrnuje celý den.
page integer — Číslo stránky, počítáno od 1. Výchozí hodnota 1.
limit integer — Počet záznamů na stránku, 1–200. Výchozí hodnota 50. Při include=text je výchozí hodnota 10 a nejvýše 20.
envelope integer — Hodnota 1 zabalí odpověď do { data, pagination }.

Pole odpovědi

PoleTypVýznam
id string Identifikátor záznamu (stabilní otisk adresy dokumentu). Hodí se k odstranění duplicit a k odkazování.
symbol string Burzovní symbol.
title string Název prezentace.
presentedAt datetime | null Datum prezentace, nebo null, když ho zdroj neuvádí. Řadí se podle něj, od nejnovějších; záznamy bez data jsou na konci.
url string Odkaz na PDF, výjimečně PPTX.
fiscalYear integer | null Fiskální rok.
fiscalQuarter integer | null Fiskální kvartál.
kind enum | null earnings_deck nebo investor_day. U evropských firem null.
region enum US nebo EU: trh, ze kterého prezentace pochází. Nejde o region společnosti z adresáře symbolů.
updatedAt datetime Poslední aktualizace záznamu.
text string | null Pouze s include=text, jinak pole v odpovědi chybí. Typicky 20–150 kB na prezentaci. U evropských firem null.
1[
2  {
3    "id": "3f9a1c2e7b8d4056a1b2c3d4e5f60718",
4    "symbol": "NVDA",
5    "title": "Q2 FY27 Earnings Presentation",
6    "presentedAt": "2026-08-27T00:00:00+02:00",
7    "url": "https://investor.nvidia.com/Q2-FY27.pdf",
8    "fiscalYear": 2027,
9    "fiscalQuarter": 2,
10    "kind": "earnings_deck",
11    "region": "US",
12    "updatedAt": "2026-08-28T04:12:00+02:00"
13  }
14]
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/presentations/latest?year=2027&quarter=2"
import requests

URL = "https://api.fundamenty.cz/stable/presentations/latest"
params = {"year": "2027", "quarter": "2"}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

for item in r.json():
    print(item)

print(r.headers.get("X-Total-Count"))
const url = new URL("https://api.fundamenty.cz/stable/presentations/latest");
url.searchParams.set("year", "2027");
url.searchParams.set("quarter", "2");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
const data = await res.json();   // pole zaznamu
console.log(res.headers.get("X-Total-Count"), data);
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/presentations/latest?year=2027&quarter=2");
$data = json_decode($json, true);
print_r($data);
Účet

Moje spotřeba #

Účet, použitý klíč a spotřeba. Bez klíče vrací stav měsíčního limitu.

GET /stable/usage

Bez klíče: bez omezení, platí jen měsíční limit.

Vyzkoušet

Pole odpovědi

PoleTypVýznam
customer object | null Jméno, e-mail, plán. Bez klíče null.
key object | null Klíč, kterým byl požadavek ověřen. Bez klíče null.
access object | null Regiony povolené klíči (us = region NA, eu = EU, world = LATAM, APAC, MEA a OTHER podle adresáře symbolů) a skupiny dat (news, filings, presentations). Bez klíče null.
usage object S klíčem: dnešní počet požadavků a denní limit. Bez klíče: měsíční limit a kolik zbývá.
note string Pouze bez klíče: jak získat vyšší limit.
1{
2  "customer": {
3    "name": "Jan Novák",
4    "email": "jan@firma.cz",
5    "plan": "pro"
6  },
7  "key": {
8    "id": 3,
9    "name": "produkce"
10  },
11  "access": {
12    "regions": [
13      "us",
14      "eu"
15    ],
16    "scopes": [
17      "news",
18      "filings"
19    ]
20  },
21  "usage": {
22    "today": 1284,
23    "dailyLimit": null,
24    "remainingToday": null,
25    "ratePerMinute": 60
26  }
27}
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/usage"
import requests

URL = "https://api.fundamenty.cz/stable/usage"
params = {}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

print(r.json())
const url = new URL("https://api.fundamenty.cz/stable/usage");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
console.log(await res.json());
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/usage");
$data = json_decode($json, true);
print_r($data);
Účet

Stav API #

Dostupnost rozhraní. Bez klíče; do spotřeby se nepočítá.

GET /stable/status

Bez klíče: bez omezení, do kvóty se nepočítá.

Pole odpovědi

PoleTypVýznam
status string ok, když rozhraní běží.
api string Název rozhraní.
version string Verze rozhraní.
time datetime Čas serveru. ISO 8601, pásmo Europe/Prague.
1{
2  "status": "ok",
3  "api": "Fundamenty Data API",
4  "version": "2.0",
5  "time": "2026-09-08T12:00:00+02:00"
6}
# bez klice: 50 pozadavku za mesic
curl "https://api.fundamenty.cz/stable/status"
import requests

URL = "https://api.fundamenty.cz/stable/status"
params = {}

# bez klice: 50 pozadavku za mesic
r = requests.get(URL, params=params)
r.raise_for_status()

print(r.json())
const url = new URL("https://api.fundamenty.cz/stable/status");

// bez klice: 50 pozadavku za mesic
const res = await fetch(url);
console.log(await res.json());
// bez klice: 50 pozadavku za mesic
$json = file_get_contents("https://api.fundamenty.cz/stable/status");
$data = json_decode($json, true);
print_r($data);