BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl -X POST 'https://api.stream.cz/graphql' \
  -H 'Content-Type: application/json' \
  -d '{"query":"{allTags(first:3){edges{node{id name urlName}}}}"}'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
querystring (body)RequiredThe GraphQL query, sent as JSON in a POST body. GET is rejected with 400. {allTags(first:3){edges{node{id name urlName}}}}
first / offsetintegerOptionalRelay-style paging arguments on `allTags` and other connection fields. 3
urlNamestringOptionalArgument to `tag` and `episode` — the slug as it appears in the site URL. kultura
query (search)stringOptionalArgument 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

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.