canonical: https://jentic.com/apis/bbc.com/bbc-com

# BBC Nitro API

BBC Nitro is the BBC's programmes-metadata API - a structured catalogue of every programme, brand, series, episode, broadcast, and contributor across BBC TV and radio. The API exposes top-level resources for programmes, broadcasts, schedules, services, and master brands, plus deeper /v1 endpoints for brand and episode hierarchies including ancestors, franchises, and child resources. It is the canonical source of programme metadata used by EPGs, recommendation systems, and third-party listings publishers, secured by an API key passed in the header.

## For AI agents

Look up BBC programmes, episodes, brands, broadcasts, and schedules via the Nitro programmes-metadata API. Useful for EPG agents, content directories, and recommendation systems.

## Scope

Does not handle iPlayer video streaming, BBC News articles, or BBC Account user data - use for programmes, broadcasts, and schedules metadata lookup only.

## Capabilities

- Search programmes, brands, episodes, and items via the top-level Nitro endpoints
- Walk a brand's hierarchy with /v1/brands/{pid} and /v1/brands/{pid}/franchises/
- Fetch episode metadata and ancestors using /v1/episodes/{pid} and /v1/episodes/{pid}/ancestors/
- Pull broadcast schedules across BBC TV and radio services with /broadcasts and /schedules
- Resolve master brands, services, and promotions for catalogue navigation
- Retrieve images and people (contributors, presenters) attached to programmes

## Use cases

### Electronic Programme Guide (EPG)

TV listings publishers and connected-TV apps need a structured EPG covering every BBC channel. The Nitro API exposes GET /broadcasts and GET /schedules for the time-based listings, plus GET /services and GET /master_brands to identify which channel each broadcast belongs to. The dataset refreshes daily, suitable for next-day EPG generation.

Example prompt: Call GET /schedules with a date range, join against GET /services to label each broadcast with its channel, and emit a 7-day EPG JSON

### Programme Hierarchy and Franchise Browsing

An app browsing BBC programme hierarchies (brand > series > episode) can use GET /v1/brands/{pid}, GET /v1/brands/{pid}/franchises/, and GET /v1/episodes/{pid}/ancestors/ to walk the structure. This enables related-content surfaces like 'more from Doctor Who' or 'other series in this franchise' without hand-coded mapping.

Example prompt: Call GET /v1/episodes/{pid}/ancestors/ for the current episode, then GET /v1/brands/{ancestor.pid}/franchises/ to surface related franchises

### Programme Search and Catalogue Sync

Catalogue services (search engines, recommendation systems) sync the BBC programmes catalogue using GET /programmes, GET /items, and GET /programme_details. The endpoints support filters and pagination so even a full-catalogue sync can be partitioned into manageable batches.

Example prompt: Walk GET /programmes with paging until empty, store each programme record, and refresh nightly via GET /programme_details for changed items

### Agent-Driven Programme Lookup via Jentic

A chat agent answering 'what was the most recent episode of Newsnight?' can use the BBC Nitro API through Jentic to search programmes and walk to the latest episode. Jentic isolates the Nitro API key in its vault and exposes the 25 Nitro operations as discoverable tools indexed by intent.

Example prompt: Search Jentic for 'fetch bbc episode metadata', load the GET /v1/episodes/{pid} schema, and execute with the requested PID

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /programmes | List or search BBC programmes |
| GET | /broadcasts | Fetch broadcast metadata |
| GET | /schedules | Fetch broadcast schedules |
| GET | /services | List BBC services (channels) |
| GET | /v1/brands/{pid} | Fetch a brand by PID |
| GET | /v1/episodes/{pid} | Fetch an episode by PID |
| GET | /v1/episodes/{pid}/ancestors/ | Get an episode's ancestors (brand and series) |

## Key resources

- **Programmes** — Top-level programme records - list, search, and fetch programme details
- **Brands and Episodes** — Walk brand-series-episode hierarchies via /v1/brands and /v1/episodes endpoints
- **Broadcasts and Schedules** — Time-based broadcast metadata across BBC TV and radio services
- **Services and Master Brands** — Channel and master-brand identifiers used to label broadcasts
- **People** — Contributors, presenters, and other people associated with programmes
- **Images and Promotions** — Visual assets and promotional content attached to programme records

## Why Jentic

- **Setup:** Wiring the BBC Nitro API by hand means adding the apiKey to every request, learning the programmes, broadcasts, and schedules endpoints, and threading programme ids through the brand and episode lookups yourself. Through Jentic you install once, import the BBC Nitro API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Nitro is read-only metadata and carries its programme ids in the URL path (/v1/episodes/{pid}), so scope the agent to the operations it needs, such as fetching episode metadata or a broadcast schedule. You choose that operation set, and there are no write operations to add.
- **Credential handling:** Your Nitro API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'fetch BBC episode metadata' or 'fetch a BBC broadcast schedule', and Jentic returns the matching Nitro operation with its parameter schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **BBC Radio & Music Services** — Personalisation and music-focused API on top of BBC content - pair with Nitro for the underlying programmes data
- **BBC iPlayer Business Layer** — iPlayer-specific metadata layer - pair with Nitro to serve playback alongside catalogue browsing
- **StarCraft 2 API** — Unrelated media domain; included as media-API peer since the corpus has no direct Nitro competitor

## FAQ

### What authentication does the BBC Nitro API use?

Nitro uses an API key (the spec defines an api_key security scheme). Register for access through the BBC's developer programme and pass the key as a header. Through Jentic, the key is stored encrypted in the vault and the agent only receives a scoped token when calling endpoints like GET /v1/episodes/{pid}.

### Can I get BBC programme metadata with the Nitro API?

Yes. GET /programmes returns programmes (with paging), GET /v1/brands/{pid} fetches a brand, and GET /v1/episodes/{pid} fetches an episode. Use GET /v1/episodes/{pid}/ancestors/ to traverse up the brand-series-episode hierarchy.

### How do I fetch the BBC broadcast schedule through Jentic?

Search Jentic for 'fetch bbc broadcast schedule', which surfaces GET /schedules. Load the schema, supply a service or date filter, and execute. Combine with GET /services to label each broadcast with its channel.

### What are the rate limits for the BBC Nitro API?

The OpenAPI spec does not declare explicit rate limits. The BBC's developer programme sets per-account quotas - apply conservative paging (page size ≤ 30) and respect 429 responses. Check your Nitro account dashboard for current limits.

### Can I search for episodes by title with Nitro?

Yes. GET /programmes and GET /items accept query parameters for title and other metadata filters. Use those for catalogue search; for known PIDs, prefer the /v1 endpoints which return richer hierarchical data.

### Does the Nitro API include people and image metadata?

Yes. GET /people lists contributors, presenters, and other people, and GET /images returns image metadata (URLs, dimensions). Both can be filtered by associated programme PID for client rendering.

### Can I limit what my agent is allowed to do with the BBC Nitro API?

Yes. Because you self-host Jentic One, your own rules decide which Nitro operations and credentials the agent may use, so you can grant it just the calls it needs, such as GET /v1/episodes/{pid} for episode metadata or GET /schedules for a broadcast schedule, and withhold the rest. Nitro is read-only metadata with programme ids carried in the URL path, so there are no write operations to expose and the agent cannot modify any BBC data. The operator picks that operation set, and the API key is injected at execution time rather than handed to the agent.
