Rychlý start
Data o akciích v JSON: zprávy s českým souhrnem a sentimentem, reporty a investorské prezentace z USA i Evropy.
https://api.fundamenty.cz — cesty endpointů začínají /stable/GET · CORS pro všechny doményPrvní 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.
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čka | Význam |
|---|---|
| X-RateLimit-Limit | Celková velikost kvóty. |
| X-RateLimit-Remaining | Kolik požadavků v kvótě zbývá. |
| X-RateLimit-Reset | Okamžik obnovení kvóty jako unixový čas v sekundách. |
| Retry-After | Jen 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.
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ů:
| Kde | Hodnoty | Význam |
|---|---|---|
| symbols.region | NA, EU, LATAM, APAC, MEA, OTHER | Geografický region sídla společnosti v adresáři symbolů. |
| usage.access.regions | us, eu, world | Regiony 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čka | Význam |
|---|---|
| X-Total-Count | Celkový počet záznamů odpovídajících filtru. U výpisu reportů bez parametru symbol se neposílá. |
| X-Page | Vrácená stránka. |
| X-Limit | Zá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
| pagination | Typ | Význam |
|---|---|---|
| page | integer | Vrácená stránka. |
| limit | integer | Záznamů na stránku. |
| total | integer | Celkový počet záznamů odpovídajících filtru. U výpisu reportů bez parametru symbol chybí. |
| total_pages | integer | Poč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:
| code | Status | Kdy 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
| Status | Název | Kdy 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.
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í.
Bez klíče: bez omezení, platí jen měsíční limit.
Vyzkoušet
Parametry
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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 pro vybranou akcii #
Zprávy ke konkrétní akcii. Titulek a souhrn v češtině, sentiment, druh zprávy. Řazeno od nejnovějších.
Bez klíče: pouze ukázkové společnosti; jiný symbol vrátí 403 anon_sample_only.
Vyzkoušet
Parametry
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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);
Nejnovější zprávy k akciím #
Akciové zprávy napříč všemi symboly, od nejnovějších. Stejná pole jako news/stock.
Bez klíče: výsledky se zúží na ukázkové společnosti.
Vyzkoušet
Parametry
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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);
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.
Bez klíče: bez omezení, platí jen měsíční limit.
Vyzkoušet
Parametry
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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 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.
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
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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);
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á.
Bez klíče: výsledky se zúží na ukázkové společnosti.
Vyzkoušet
Parametry
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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);
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.
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
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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);
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.
Bez klíče: výsledky se zúží na ukázkové společnosti.
Vyzkoušet
Parametry
| Parametr | Typ | Povinný | 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
| Pole | Typ | Vý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);
Moje spotřeba #
Účet, použitý klíč a spotřeba. Bez klíče vrací stav měsíčního limitu.
Bez klíče: bez omezení, platí jen měsíční limit.
Vyzkoušet
Pole odpovědi
| Pole | Typ | Vý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);
Stav API #
Dostupnost rozhraní. Bez klíče; do spotřeby se nepočítá.
Bez klíče: bez omezení, do kvóty se nepočítá.
Pole odpovědi
| Pole | Typ | Vý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);