# Listen Notes API

> Listen Notes returns podcast episode and podcast data as a workflow and API.

Listen Notes, also called ListenNotes, searches podcast episodes by required topic or person, with optional language, date, sorting, and page inputs. Get podcast returns podcast details, rankings, publishing information, and links using a required podcast name and optional publisher.

- Page: https://fous.com/workflows/listen-notes
- Handle: `@listen-notes`
- Category: [Entertainment](https://fous.com/workflows/category/entertainment)
- Source website: https://listennotes.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Listen Notes.

## Methods

### Get podcast

Operation `get_podcast`, version 1. 1 credit per call.

Look up a podcast by name and get its Listen Score, global rank, publishing details, and links. Exact name matches are checked among the first 50 public search results; missing details remain blank.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `podcast` | string | yes | `"Radiolab"` | Name of the podcast, for example The Daily. |
| `publisher` | string | no | `"The New York Times"` | Publisher to distinguish podcasts with the same name, for example The New York Times. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "podcast"
  ],
  "properties": {
    "podcast": {
      "type": "string",
      "minLength": 1,
      "description": "Name of the podcast, for example The Daily.",
      "examples": [
        "Radiolab",
        "The Daily"
      ]
    },
    "publisher": {
      "type": "string",
      "default": "",
      "description": "Publisher to distinguish podcasts with the same name, for example The New York Times.",
      "examples": [
        "The New York Times"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "podcast": "Radiolab"
    },
    {
      "podcast": "The Daily",
      "publisher": "The New York Times"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `genres` | array |  |  |
| `country` | string or null | `"United States"` |  |
| `website` | string or null | `"https://www.radiolab.org?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website"` |  |
| `language` | string or null | `"English"` |  |
| `publisher` | string or null | `"WNYC Studios"` |  |
| `podcast_id` | string or null | `"535815a492a941d79b95be6ae1c5cc9c"` |  |
| `global_rank` | string or null | `"0.01%"` |  |
| `listen_score` | integer or null | `85` |  |
| `podcast_name` | string | `"Radiolab"` |  |
| `social_links` | array |  |  |
| `social_links[].link` | string | `"https://x.com/Radiolab"` |  |
| `social_links[].platform` | string | `"X"` |  |
| `rss_feed_link` | string or null | `"https://feeds.simplecast.com/EmVW7VGp"` |  |
| `total_episodes` | integer or null | `672` |  |
| `cover_image_link` | string or null | `"https://cdn-images-3.listennotes.com/podcasts/radiolab-wnyc-studios-kKCxy1Zi7R6-LcwYyVzfJx9.300x300.jpg"` |  |
| `listen_notes_link` | string | `"https://www.listennotes.com/podcasts/radiolab-wnyc-studios-LcwYyVzfJx9/"` |  |
| `short_description` | string or null | `"Radiolab is on a curiosity bender. We ask deep questions and use investigative journalism to get the answers. A given e` |  |
| `first_episode_date` | string or null | `"2006-05-05"` |  |
| `latest_episode_date` | string or null | `"2026-09-25"` |  |
| `publishing_frequency` | string or null | `"Weekly"` |  |

**Example input**

```json
{
  "podcast": "Radiolab"
}
```

**Example output**

```json
{
  "genres": [
    "Society & Culture",
    "Documentary",
    "Kids & Family"
  ],
  "country": "United States",
  "website": "https://www.radiolab.org?utm_source=listennotes.com&utm_campaign=Listen+Notes&utm_medium=website",
  "language": "English",
  "publisher": "WNYC Studios",
  "podcast_id": "535815a492a941d79b95be6ae1c5cc9c",
  "global_rank": "0.01%",
  "listen_score": 85,
  "podcast_name": "Radiolab",
  "social_links": [
    {
      "link": "https://x.com/Radiolab",
      "platform": "X"
    },
    {
      "link": "https://facebook.com/Radiolab",
      "platform": "Facebook"
    }
  ],
  "rss_feed_link": "https://feeds.simplecast.com/EmVW7VGp",
  "total_episodes": 672,
  "cover_image_link": "https://cdn-images-3.listennotes.com/podcasts/radiolab-wnyc-studios-kKCxy1Zi7R6-LcwYyVzfJx9.300x300.jpg",
  "listen_notes_link": "https://www.listennotes.com/podcasts/radiolab-wnyc-studios-LcwYyVzfJx9/",
  "short_description": "Radiolab is on a curiosity bender. We ask deep questions and use investigative journalism to get the answers. A given episode might whirl you through science, legal history, and into the home of someo…",
  "first_episode_date": "2006-05-05",
  "latest_episode_date": "2026-09-25",
  "publishing_frequency": "Weekly"
}
```

### Search episodes

Operation `search_episodes`, version 1. 1 credit per call.

Search Listen Notes podcast episodes by topic or person, with language, date, and sorting options. Anonymous search exposes only the first 50 results; the publish-date cutoff is applied within that accessible window, and later pages require login.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `page` | integer | no | `2` | Page of 10 search results to begin with, for example 2; pages after 5 require login. |
| `sort` | string | no | `"newest"` | Order results by relevance or newest, for example newest. |
| `query` | string | yes | `"intelligence artificielle"` | Words or a person to find in podcast episodes, for example Satya Nadella. |
| `language` | string | no | `"French"` | Podcast language name, for example English or French; use any for all languages. |
| `max_results` | integer | no | `5` | Maximum number of episodes to return, for example 20 (up to 50). |
| `published_after` | string | no | `"2026-01-01"` | Only return episodes published after this date, for example 2026-01-01. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1,
      "description": "Page of 10 search results to begin with, for example 2; pages after 5 require login.",
      "x-fous-developer": true,
      "examples": [
        2
      ]
    },
    "sort": {
      "enum": [
        "relevance",
        "newest"
      ],
      "type": "string",
      "default": "relevance",
      "description": "Order results by relevance or newest, for example newest.",
      "examples": [
        "newest"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Words or a person to find in podcast episodes, for example Satya Nadella.",
      "examples": [
        "intelligence artificielle",
        "Satya Nadella",
        "zxqvnotapodcastperson987654321"
      ]
    },
    "language": {
      "type": "string",
      "default": "any",
      "description": "Podcast language name, for example English or French; use any for all languages.",
      "examples": [
        "French"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum number of episodes to return, for example 20 (up to 50).",
      "x-fous-developer": true,
      "examples": [
        5
      ]
    },
    "published_after": {
      "type": "string",
      "format": "date",
      "description": "Only return episodes published after this date, for example 2026-01-01.",
      "examples": [
        "2026-01-01"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "page": 2,
      "sort": "newest",
      "query": "intelligence artificielle",
      "language": "French",
      "max_results": 5,
      "published_after": "2026-01-01"
    },
    {
      "query": "Satya Nadella"
    },
    {
      "query": "zxqvnotapodcastperson987654321",
      "max_results": 5
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `episodes` | array |  |  |
| `episodes[].length` | string or null | `"21 min"` |  |
| `episodes[].publisher` | string or null | `"Jerome Colombain"` |  |
| `episodes[].audio_link` | string or null | `"https://audio.listennotes.com/e/p/e37bd98980d54871a14ab5337a7bc385/"` |  |
| `episodes[].episode_id` | string or null | `"e37bd98980d54871a14ab5337a7bc385"` |  |
| `episodes[].listen_score` | integer or null | `49` |  |
| `episodes[].podcast_name` | string or null | `"Monde Numérique (Actu tech & IA)"` |  |
| `episodes[].publish_date` | string or null | `"2026-09-29"` |  |
| `episodes[].episode_title` | string | `"L’IA peut-elle vraiment détecter l’IA ? (🎤 Thomas Jacquesson, Lucide AI)"` |  |
| `episodes[].length_seconds` | integer or null | `1314` |  |
| `episodes[].episode_page_link` | string | `"https://www.listennotes.com/podcasts/monde-numérique/lia-peut-elle-vraiment-zjRO2KDQ3bU/"` |  |
| `episodes[].short_description` | string or null | `"...Les détecteurs d’IA peuvent-ils réellement identifier un texte généré par une machine ? Thomas Jacquesson, président` |  |

**Example input**

```json
{
  "page": 2,
  "sort": "newest",
  "query": "intelligence artificielle",
  "language": "French",
  "max_results": 5,
  "published_after": "2026-01-01"
}
```

**Example output**

```json
{
  "episodes": [
    {
      "length": "21 min",
      "publisher": "Jerome Colombain",
      "audio_link": "https://audio.listennotes.com/e/p/e37bd98980d54871a14ab5337a7bc385/",
      "episode_id": "e37bd98980d54871a14ab5337a7bc385",
      "listen_score": 49,
      "podcast_name": "Monde Numérique (Actu tech & IA)",
      "publish_date": "2026-09-29",
      "episode_title": "L’IA peut-elle vraiment détecter l’IA ? (🎤 Thomas Jacquesson, Lucide AI)",
      "length_seconds": 1314,
      "episode_page_link": "https://www.listennotes.com/podcasts/monde-numérique/lia-peut-elle-vraiment-zjRO2KDQ3bU/",
      "short_description": "...Les détecteurs d’IA peuvent-ils réellement identifier un texte généré par une machine ? Thomas Jacquesson, président de Lucide AI, explique comment ces outils sont entraînés et pourquoi leur verdic…"
    },
    {
      "length": "55 min",
      "publisher": "Jean baptiste Vennin",
      "audio_link": "https://audio.listennotes.com/e/p/7ed6a7cbbf5e4ee69f6b356d4e8559b3/",
      "episode_id": "7ed6a7cbbf5e4ee69f6b356d4e8559b3",
      "listen_score": null,
      "podcast_name": "Les Voix de l'Impact",
      "publish_date": "2026-09-29",
      "episode_title": "Alain Bosetti : 27 ans à faire grandir les entrepreneurs",
      "length_seconds": 3300,
      "episode_page_link": "https://www.listennotes.com/podcasts/les-voix-de-limpact/alain-bosetti-27-ans-à-faire-Mmt9_KGNQ-f/",
      "short_description": "...Une transformation encore accélérée par l’intelligence artificielle , qu’il considère à la fois comme une opportunité majeure et comme une menace, notamment pour les jeunes qui cherchent à entrer s…"
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@listen-notes",
  "visibility": "public",
  "operation": "get_podcast",
  "version": 1,
  "input": {
    "podcast": "Radiolab"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@listen-notes\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_podcast\",\n  \"version\": 1,\n  \"input\": {\n    \"podcast\": \"Radiolab\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@listen-notes",
  "visibility": "public",
  "operation": "get_podcast",
  "version": 1,
  "input": {
    "podcast": "Radiolab"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@listen-notes","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find episodes mentioning a person or topic.
- Compare podcast details and global rankings.
- Review episode titles, publishers, and publication dates.
- Find podcast links, genres, and publishing frequency.

## FAQ

### Is Fous affiliated with Listen Notes?

No. Fous is not affiliated with Listen Notes. This workflow reads the public listennotes.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Listen Notes account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from listennotes.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### Which episodes mention a topic or person?

Search episodes finds episodes matching the required query, with optional language, publication date, and sorting inputs.

### What are a podcast’s details and ranking?

Get podcast returns details such as Listen Score, global rank, publisher, language, and publishing information for a podcast name.

## Related

- [Apple Podcasts API](https://fous.com/workflows/apple-podcasts.md): Apple Podcasts returns chart listings, relevant show search results, show details with newest available episodes, and country-specific ratings and reviews; results are capped, and older or subscription episodes may be unavailable.
- [Spotify API](https://fous.com/workflows/spotify.md): Spotify returns public artist profiles, album credits and ordered tracks, song details and play counts, up to 500 playlist songs, keyword results, and country-based podcast charts; dates and regional options vary.
- [NPR API](https://fous.com/workflows/npr.md): NPR returns displayed section headlines, searchable articles with summaries and publication details, and available article text; date-filtered searches may miss older stories edited much later.
- [WEBTOON API](https://fous.com/workflows/webtoon.md): WEBTOON helps readers find comics and discover popular or trending series, with public series details and newest publicly listed episodes; app-only episodes and numeric series ratings aren’t shown.
- [Audible API](https://fous.com/workflows/audible.md): Audible offers audiobooks, podcasts, and audio entertainment, with public book details and current bestselling audiobook charts; availability and categories vary by store.
- [Hacker News API](https://fous.com/workflows/hacker-news.md): Hacker News provides current ranked story lists, searchable stories and comments, discussion threads with up to 500 visible comments excluding deleted or flagged ones, and monthly hiring posts with details when stated.
- [SoundCloud API](https://fous.com/workflows/soundcloud.md): SoundCloud lets people listen to and share music, find public tracks with play stats, and browse artists’ tracks, with popular lists limited to 30.
- [AP News API](https://fous.com/workflows/ap-news.md): AP News provides reporting, up to 50 public-page headlines, searchable articles visible in its search, and full text when accessible.
- [All Entertainment workflows](https://fous.com/workflows/category/entertainment)
