Stream.cz GraphQL API
Stream.cz exposes a public, unauthenticated GraphQL API over its Czech video catalogue: shows, episodes, search and playout data, with introspection enabled. Live example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Stream.cz GraphQL API?
Stream.cz, the Czech video platform run by Seznam, exposes a public GraphQL API at api.stream.cz/graphql that needs no key or account. Introspection is enabled, and the schema covers shows and channels, episodes, playlists, search, suggestions and playout configuration.
This is a rarity: a mainstream commercial video platform whose production GraphQL endpoint is open, unauthenticated and fully introspectable. Send `{__schema{queryType{fields{name}}}}` and it will tell you everything it can do — `allTags`, `tag`, `episode`, `episodes`, `search`, `searchEpisode`, `suggest`, `playlist`, `playout`, `homepage` and more. For learning GraphQL that is unusually valuable, because you can explore a real, large, production schema rather than a toy one built for a tutorial.
Two things to keep straight. First, Stream.cz calls its shows and channels 'tags', so the browsing entry point is `allTags` and `tag(urlName:)`, not something named `shows`. Second, this is a Czech-language catalogue: titles, descriptions and search behaviour are all in Czech, and search terms in English will mostly return nothing. It also sends no CORS header, so browser calls need a server-side proxy. And since it is a company's internal app API rather than a documented public product, nothing about it is promised — the schema can change whenever the front end does.
Quick facts
- Base URL
https://api.stream.cz/graphql- Authentication
- No key or account for public queries. Some fields such as `user` and the admin-prefixed ones require a session and will simply return nothing useful without one.
- Rate limit
- No published limit. It is a production endpoint for a commercial service — query it like a client, not a scraper.
- Pricing
- Free to query. The content itself is Stream.cz's and is not yours to redistribute.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Stream.cz GraphQL API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. List three catalogue tags via GraphQL
POST https://api.stream.cz/graphql
curl -X POST 'https://api.stream.cz/graphql' \
-H 'Content-Type: application/json' \
-d '{"query":"{allTags(first:3){edges{node{id name urlName}}}}"}'const res = await fetch("https://api.stream.cz/graphql", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({"query":"{allTags(first:3){edges{node{id name urlName}}}}"}),
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Content-Type": "application/json",
}
payload = {"query":"{allTags(first:3){edges{node{id name urlName}}}}"}
res = requests.post("https://api.stream.cz/graphql", headers=headers, json=payload, timeout=20)
res.raise_for_status()
print(res.json()){
"data": {
"allTags": {
"edges": [
{
"node": {
"id": "VGFnOjEyNzgzOTA",
"name": "Řetězák",
"urlName": "retezak-13092"
}
},
{
"node": {
"id": "VGFnOjEyNTUwODI",
"name": "Internet",
"urlName": "socialni-site"
}
},
{
"node": {
"id": "VGFnOjEyNDM2OTc",
"name": "Redakční výběr",
"urlName": "redakcni-vyber"
}
}
]
}
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string (body) | Required | The GraphQL query, sent as JSON in a POST body. GET is rejected with 400. {allTags(first:3){edges{node{id name urlName}}}} |
first / offset | integer | Optional | Relay-style paging arguments on `allTags` and other connection fields. 3 |
urlName | string | Optional | Argument to `tag` and `episode` — the slug as it appears in the site URL. kultura |
query (search) | string | Optional | Argument to the `search`, `searchEpisode` and `suggest` root fields. Czech-language terms. kuchyne |
Response fields
dataobject- Standard GraphQL envelope. Your requested fields appear beneath it, shaped exactly as you asked.
errorsarray- Present when a query is invalid or a field fails. GraphQL returns HTTP 200 with errors in the body, so check for this key rather than relying on the status code.
allTags.edges[].node.idstring- Base64-encoded global id, e.g. an encoded `Tag:12527928`.
allTags.edges[].node.namestring- Display name of the show or channel, in Czech.
allTags.edges[].node.urlNamestring- URL slug, which is what `tag(urlName:)` expects.
What you can build with the Stream.cz GraphQL API
- Explore a large production GraphQL schema through introspection
- Practise Relay-style connection paging against real data
- Build a Czech-language video browser or recommendation experiment
- Compare a commercial GraphQL design against the tutorial examples
Common errors and how to fix them
400 on a GET request
The endpoint only accepts POST with a JSON body.
Fix: Send `{"query": "..."}` as a POST body with `Content-Type: application/json`.
200 with an `errors` array
GraphQL reports query errors in the body, not the status line.
Fix: Always check for `errors` before reading `data`; a partially successful query returns both.
CORS error in the browser
No `Access-Control-Allow-Origin` header is sent.
Fix: Proxy through your own server or an edge function. There is no credential to protect, only the CORS policy to work around.
Empty search results
The catalogue and its search index are Czech.
Fix: Search in Czech. English terms will match little or nothing even where an equivalent show exists.
Stream.cz GraphQL API — frequently asked questions
Does the Stream.cz API need an API key?
No. The GraphQL endpoint at api.stream.cz/graphql answers public queries with no key or account, and introspection is enabled so you can discover the schema yourself.
How do I discover what queries are available?
Send an introspection query such as `{__schema{queryType{fields{name}}}}`. The endpoint also serves a GraphiQL interface in the browser, which gives you docs and autocomplete over the live schema.
Why is there no `shows` query?
Stream.cz models shows and channels as tags. Use `allTags` to list them and `tag(urlName: "...")` to fetch one, with its episodes attached.
Is it safe to depend on?
It is a company's internal application API, not a published product. It has no versioning policy, no documentation of its own beyond the introspectable schema, and can change whenever the site does. Treat it as excellent for learning and risky for production.
Tools that pair with this API
GraphQL Formatter
Format or minify GraphQL queries, mutations, fragments and SDL schemas. Preserves block strings and comments, and reports the line of any unbalanced brace.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
cURL to Fetch Converter
Paste a curl command and get a ready-to-use JavaScript fetch() snippet plus an axios version — method, headers, body and auth mapped automatically, all offline.
Stream.cz GraphQL is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.