Discover/Europa API
live

Europa APIaudiovisual.ec.europa.eu

Access live and upcoming European Broadcasting Service programs with complete schedule details, including livestream links and full program metadata for any date you choose. Plan your viewing or build applications that integrate EBS broadcast information seamlessly into your services.

This API takes change requests — .
Endpoint health
monitored
get_schedule
Checks pendingself-healing
Endpoints
1
Updated
3h ago
This call costs2 credits / call— charged only on success
Try it
Date in YYYYMMDD format (e.g. 20260728). Defaults to today (UTC) when omitted.
Which channel(s) to include in results.
api.parse.bot/scraper/08282d92-624e-478c-9995-8611da4e2c45/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/08282d92-624e-478c-9995-8611da4e2c45/get_schedule?date=20260728&channel=both' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace audiovisual-ec-europa-eu-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: EU EBS Schedule SDK — bounded, re-runnable; every call capped."""
from parse_apis.audiovisual_ec_europa_eu_api import EBS, Channel, InvalidInput

client = EBS()

# Fetch today's schedule for both channels, capped at 3 programs.
for program in client.schedules.get(channel=Channel.BOTH, limit=3):
    print(program.title, program.channel, program.broadcast_status)
    for tx in program.transmissions[:2]:
        print("  ", tx.summary, tx.stream_url)

# Fetch schedule for a specific date and single channel.
item = client.schedules.get(date="20260728", channel=Channel.EBS, limit=1).first()
if item:
    tx = item.transmissions[0]
    print(tx.title, tx.place, tx.reference)
    for video in tx.videos[:2]:
        print("  video:", video.height, video.codec, video.url)

# Handle invalid input gracefully.
try:
    client.schedules.get(date="bad-date", limit=1).first()
except InvalidInput as e:
    print("invalid input:", e)

print("exercised: schedules.get")
All endpoints · 1 totalmissing one? ·

Retrieve the EBS broadcast schedule for a given date. Returns all programs across EBS and/or EBS+ channels with full metadata including titles, summaries, livestream/VOD URLs (HLS and DASH), video/audio tracks, subtitles, broadcast status, locations, and institutional affiliations. Each program contains one or more transmissions (segments) with individual media assets. Results are single-page (one date per request).

Input
ParamTypeDescription
datestringDate in YYYYMMDD format (e.g. 20260728). Defaults to today (UTC) when omitted.
channelstringWhich channel(s) to include in results.
Response
{
  "type": "object",
  "fields": {
    "date": "string — the queried date in YYYYMMDD format",
    "items": "array of program objects with full broadcast metadata and transmission segments"
  },
  "sample": {
    "data": {
      "date": "20260728",
      "items": [
        {
          "id": "6a5dda6fcbacfcbf6269db16",
          "date": "20260728",
          "title": "EC Midday press briefing of 28/07/2026",
          "status": "PUBLISHED",
          "channel": "EBS",
          "languages": [
            "INT",
            "EN",
            "FR"
          ],
          "transmissions": [
            {
              "id": "6a688f05aca94a2e42f488b5",
              "place": "Berlaymont press room, Brussels",
              "title": "EC Midday press briefing of 28/07/2026",
              "audios": [
                {
                  "url": "https://vod.prd.commavservices.eu/12/293272/019fa86e-b405-7457-82dd-75af6151663b/qaa.mp4",
                  "codec": "aac",
                  "layout": "mono",
                  "bitrate": 68.63,
                  "language": "INT"
                }
              ],
              "videos": [
                {
                  "url": "https://vod.prd.commavservices.eu/12/293272/019fa86e-b405-7457-82dd-75af6151663b/1080p-qaa.mp4",
                  "codec": "h264",
                  "width": 1920,
                  "height": 1080,
                  "bitrate": 9776.93,
                  "language": "INT"
                }
              ],
              "summary": "ANNOUNCEMENT - Media arrangements",
              "dash_url": "https://vod.prd.commavservices.eu/12/293272/019fa86e-b405-7457-82dd-75af6151663b/manifest.mpd",
              "languages": [
                "INT"
              ],
              "reference": "I-293272",
              "subtitles": [],
              "media_type": "VIDEO",
              "stream_url": "https://vod.prd.commavservices.eu/12/293272/019fa86e-b405-7457-82dd-75af6151663b/master.m3u8",
              "display_type": "SUMMARY",
              "institutions": [
                "European Commission"
              ],
              "thumbnail_url": "https://api.prd.commavservices.eu/thumbnail/I-293272/019fa86e-b405-7457-82dd-75af6151663b/%{SIZE}.jpg?t=1785238267",
              "start_datetime": "2026-07-28T10:10:51.400Z",
              "duration_seconds": 3786.48
            }
          ],
          "start_datetime": "2026-07-28T10:10:51.400Z",
          "broadcast_status": "LIVE",
          "duration_seconds": 3786.48
        }
      ]
    },
    "status": "success"
  }
}

About the Europa API

The Europa API on Parse exposes 1 endpoint for the publicly available data on audiovisual.ec.europa.eu. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.