# Podcasts API endpoint

Source: https://subalytics.com/docs/podcasts/

> GET /api/v1/podcasts/: the podcasts tracked by Subalytics, with stable IDs, parameters, response fields and an example.

`GET /api/v1/podcasts/` (Cursor pagination · newest first). Base URL `https://subalytics.com/api/v1/`, API key in the `X-API-key` header; authentication, pagination, dates and errors: https://subalytics.com/docs/

The podcasts tracked by Subalytics. Podcasts, episodes and transcripts are linked by stable public IDs: a podcast's `sub_id` (10 hex characters) and an episode's `episode_sub_id` (16 hex characters). They never change, so they are safe to store as foreign keys. To fetch one item, filter by its ID.

## Query parameters

| Parameter | Type | Description |
|---|---|---|
| `sub_id` | string | One podcast |
| `language` | string | Exact match, e.g. en |
| `category` | string | Podcasts whose categories include this value, e.g. Business |
| `latest_episode_from` | date | Newest episode published on or after (see Date filters) |
| `latest_episode_to` | date | Newest episode published on or before |
| `limit` | int | Results per page (default 25, max 100) |
| `cursor` | string | next_cursor from the previous page |

## Response fields

| Field | Type | Description |
|---|---|---|
| `sub_id` | string | Public podcast ID |
| `podcast_name` | string | Podcast name |
| `feed_title` | string \| null | Title as published in the podcast feed (may differ from podcast_name) |
| `author` | string \| null | Author as published in the feed |
| `owner_name` | string \| null | Owner as published in the feed |
| `owner_email` | string \| null | Owner email as published in the feed |
| `description` | string \| null | Podcast description |
| `categories` | string[] | Categories |
| `language` | string \| null | Language declared by the feed, e.g. en |
| `explicit` | boolean \| null | Explicit flag as declared in the feed; null when the feed doesn't say |
| `image_url` | string \| null | Podcast artwork |
| `website_link` | string | Podcast website; only present when the feed has one |
| `latest_published_episode_utc` | date \| null | Publish date of the newest episode |

## Example

```
GET /api/v1/podcasts/?category=Business&limit=1
```

```
{
  "success": true,
  "results": [
    {
      "sub_id": "a1b2c3d4e5",
      "podcast_name": "Example Business Show",
      "feed_title": "Example Business Show",
      "author": "Example Media",
      "owner_name": "Example Media",
      "owner_email": "podcast@example.com",
      "description": "Weekly conversations about business, markets and culture.",
      "categories": ["Business", "News"],
      "language": "en",
      "explicit": null,
      "image_url": "https://example.com/artwork.jpg",
      "website_link": "https://example.com/podcast",
      "latest_published_episode_utc": "2026-09-24T16:38:09Z"
    }
  ],
  "returned_results": 1,
  "limit": 1,
  "next_cursor": "6a7cdd39fdbbf69e21a9ffbe"
}
```
