Europa APIaudiovisual.ec.europa.eu ↗
Retrieve the European Broadcasting Service daily schedule with livestream URLs, program metadata, video/audio tracks, and subtitles for any date via one API endpoint.
What is the Europa API?
The audiovisual.ec.europa.eu API provides access to the European Broadcasting Service (EBS) broadcast schedule through a single get_schedule endpoint that returns over a dozen metadata fields per program, including titles, summaries, HLS and DASH livestream URLs, video and audio tracks, subtitle availability, broadcast status, and institutional affiliation. It covers both EBS and EBS+ channels and accepts a date parameter for any historical or future schedule date.
curl -X GET 'https://api.parse.bot/scraper/08282d92-624e-478c-9995-8611da4e2c45/get_schedule?date=20260814&channel=both' \ -H 'X-API-Key: $PARSE_API_KEY'
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")
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).
| Param | Type | Description |
|---|---|---|
| date | string | Date in YYYYMMDD format (e.g. 20260728). Defaults to today (UTC) when omitted. |
| channel | string | Which channel(s) to include in results. |
{
"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
What the API returns
The get_schedule endpoint returns the full daily broadcast schedule for the EBS and EBS+ channels operated by the European Commission's Audiovisual Service. Each response contains a date field confirming the queried day (in YYYYMMDD format) and an items array where every element represents one scheduled program. Program objects carry titles, summaries, broadcast status, geographic location of the originating event, and the institutional body associated with the content.
Streaming and media fields
Each program object exposes both HLS and DASH URLs for live and on-demand playback, so applications can integrate directly with standard video players without additional URL construction. The response also includes discrete video and audio track descriptors and subtitle metadata, making it straightforward to surface multilingual options — relevant for EU institutional broadcasts that routinely include multiple language feeds.
Filtering by channel and date
The date input parameter accepts an optional YYYYMMDD string; omitting it defaults to the current UTC date, which is useful for real-time schedule displays. The channel parameter lets you narrow results to EBS, EBS+, or both. Combining the two parameters is the primary way to scope responses for a specific channel on a specific day, since the endpoint returns all matching items in a single flat array with no pagination.
The Europa API is a managed, monitored endpoint for audiovisual.ec.europa.eu — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when audiovisual.ec.europa.eu changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official audiovisual.ec.europa.eu API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display today's EU institutional broadcast schedule in a media monitoring dashboard using the default-date behavior of
get_schedule. - Build a schedule archive by querying
get_schedulewith historicaldatevalues to collect program titles, summaries, and institutional affiliations over time. - Integrate HLS or DASH stream URLs into a custom video player for automated playout of live EU parliamentary or commission proceedings.
- Alert subscribers when a specific institution's programs are scheduled by filtering
itemson the institutional affiliation field. - Surface multilingual audio tracks and subtitle options to end users by parsing the track and subtitle metadata returned per program object.
- Generate a program guide for EBS+ only by passing the
channelparameter to restrict results to a single channel.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does audiovisual.ec.europa.eu have an official developer API?+
What does the `get_schedule` endpoint return for each program, and how do the stream URLs work?+
items array includes a title, summary, broadcast status, originating location, institutional affiliation, HLS and DASH URLs for live or on-demand playback, individual video and audio track descriptors, and subtitle metadata. The stream URLs are returned ready to pass to any HLS- or DASH-compatible video player.Does the API return schedule data for channels other than EBS and EBS+?+
Is historical schedule data available, or is the API limited to today?+
date parameter accepts any YYYYMMDD string, so you can query past and future dates supported by the EBS schedule grid. The endpoint defaults to the current UTC date when date is omitted. Note that whether content for a very distant past or future date is populated depends on what the EBS schedule grid itself holds for that date.Does the API expose per-language stream URLs or just a single stream per program?+
video and audio track fields and subtitle metadata per program, reflecting the multilingual track structure common in EU institutional broadcasts. Selecting a specific language track from that metadata is handled at the player or application layer. Individual per-language direct stream URLs beyond the HLS/DASH manifest are not currently broken out as separate top-level fields. You can fork the API on Parse and revise it to extract and expose individual language track URLs if your use case requires them.