API documentation · Podcast endpoints

Podcast episodes API endpoint

GET /api/v1/podcast-episodes/ Cursor pagination · newest first

All requests go to https://subalytics.com/api/v1/ with your key in the X-API-key header. Authentication, pagination, date filters and responses & errors apply to every endpoint.

Episodes published since Subalytics started tracking each podcast; this is not the podcast's full back catalogue. Only episodes with a transcript are returned. Every episode listed here has a transcript at /api/v1/podcast-transcripts/?episode_sub_id=<episode_sub_id>. An episode that hasn't been transcribed yet returns an empty results list.

New episodes are transcribed daily and usually appear within a few hours of 05:00 UTC. Some take longer, and a few may never appear (for example, if the audio is unavailable).

Query parameters

ParameterTypeDescription
sub_idstringEpisodes of one podcast
episode_sub_idstringOne episode
published_fromdatePublished by the podcast on or after
published_todatePublished by the podcast on or before
transcribed_fromdateBecame available in the API on or after (use for sync)
transcribed_todateBecame available in the API on or before
limitintResults per page (default 25, max 100)
cursorstringnext_cursor from the previous page

Response fields

FieldTypeDescription
episode_sub_idstringPublic episode ID
sub_idstringThe podcast it belongs to
podcast_namestringPodcast name
guidstringThe episode's ID in its podcast feed (unique within that feed only)
titlestring | nullEpisode title
descriptionstring | nullAs published in the feed, often HTML
linkstring | nullEpisode web page
image_urlstring | nullEpisode artwork, if the feed has one
audio_urlstringOriginal audio file, hosted by the podcast
duration_secondsint | nullFrom the feed; null when the feed doesn't state it
explicitboolean | nullExplicit flag as declared in the feed; null when the feed doesn't say
published_utcdateWhen the podcast published the episode
transcribed_atdateWhen the transcript became available
created_atdateWhen Subalytics first found the episode
updated_atdateWhen the episode details were last refreshed

Example

GET /api/v1/podcast-episodes/?sub_id=a1b2c3d4e5&published_from=2026-09-20&limit=1
{
  "success": true,
  "results": [
    {
      "episode_sub_id": "c41f7a09e2b85d13",
      "sub_id": "a1b2c3d4e5",
      "podcast_name": "Example Business Show",
      "guid": "088561f8-cd50-429d-963c-8f74c8193baa",
      "title": "Rate Cuts, Robotaxis and the Week in Markets",
      "description": "The panel breaks down this week's biggest business stories.",
      "link": "https://example.com/podcast/episodes/248",
      "image_url": null,
      "audio_url": "https://example.com/audio/episode-248.mp3",
      "duration_seconds": 6875,
      "explicit": null,
      "published_utc": "2026-09-24T16:38:09Z",
      "transcribed_at": "2026-09-25T06:12:47Z",
      "created_at": "2026-09-25T05:01:12Z",
      "updated_at": "2026-09-26T05:01:09Z"
    }
  ],
  "returned_results": 1,
  "limit": 1,
  "next_cursor": "6a7d976dc8173839e225382f"
}