Listen Notes Search API API

Endpoints to search podcasts and episodes.

Operations 6

GET /typeahead Typeahead search #
GET /search_episode_titles Search episodes by title #
GET /trending_searches Trending search terms #
GET /related_searches Related search terms #
GET /spellcheck Spell check #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/listennotes-search-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

listennotes-search-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 'Listen API: Podcast Search, Directory, and Insights Directory Search API'
  description: 'Simple and no-nonsense podcast search and directory API from Listen Notes.

    Full-text search all podcasts and episodes by people, places, or topics;

    fetch podcast and episode metadata; browse best-podcasts charts, curated

    lists, and genres; retrieve recommendations; power typeahead autocomplete;

    and pull audience demographics. All requests are authenticated with an

    `X-ListenAPI-Key` request header. FREE, PRO, and ENTERPRISE plans are billed

    on a per-request basis.


    This document was authored by API Evangelist and grounded in the official

    Listen API OpenAPI specification published at

    https://listen-api.listennotes.com/api/v2/openapi.yaml. Endpoints and

    parameters reflect the published specification.

    '
  termsOfService: https://www.listennotes.com/api/terms/
  contact:
    name: Listen Notes
    url: https://www.listennotes.com/api/
    email: hello@listennotes.com
  version: '2.0'
servers:
- url: https://listen-api.listennotes.com/api/v2
  description: API Production Server
security:
- apiKeyHeader: []
tags:
- name: Search API
  description: Endpoints to search podcasts and episodes.
paths:
  /search:
    get:
      tags:
      - Search API
      summary: Full-text search
      description: 'Full-text search on episodes, podcasts, or curated lists of podcasts.

        Use the `offset` parameter to paginate through results. FREE plan sees up

        to 30 results per query, PRO up to 300, ENTERPRISE up to 10,000.

        '
      operationId: search
      parameters:
      - name: q
        in: query
        required: true
        description: Search term.
        schema:
          type: string
      - name: sort_by_date
        in: query
        description: 0 = relevance
        1 = date.: null
        schema:
          type: integer
          default: 0
      - name: type
        in: query
        description: episode, podcast, or curated.
        schema:
          type: string
          enum:
          - episode
          - podcast
          - curated
          default: episode
      - name: offset
        in: query
        description: Offset for pagination.
        schema:
          type: integer
          default: 0
      - name: len_min
        in: query
        description: Minimum audio length in minutes.
        schema:
          type: integer
      - name: len_max
        in: query
        description: Maximum audio length in minutes.
        schema:
          type: integer
      - name: episode_count_min
        in: query
        description: Minimum episode count (podcast search).
        schema:
          type: integer
      - name: episode_count_max
        in: query
        description: Maximum episode count (podcast search).
        schema:
          type: integer
      - name: genre_ids
        in: query
        description: Comma-separated genre ids to filter by.
        schema:
          type: string
      - name: published_before
        in: query
        description: Only results published before this timestamp (ms).
        schema:
          type: integer
      - name: published_after
        in: query
        description: Only results published after this timestamp (ms).
        schema:
          type: integer
      - name: only_in
        in: query
        description: Comma-separated fields to search in (e.g. title
        description).: null
        schema:
          type: string
      - name: language
        in: query
        description: Filter by language.
        schema:
          type: string
          default: Any language
      - name: region
        in: query
        description: Filter by country/region.
        schema:
          type: string
      - name: safe_mode
        in: query
        description: 1 = exclude explicit content.
        schema:
          type: integer
          default: 0
      - name: unique_podcasts
        in: query
        description: 1 = at most one episode per podcast.
        schema:
          type: integer
          default: 0
      - name: interviews_only
        in: query
        description: 1 = only interview episodes.
        schema:
          type: integer
          default: 0
      - name: sponsored_only
        in: query
        description: 1 = only sponsored content.
        schema:
          type: integer
          default: 0
      - name: page_size
        in: query
        description: Number of results per page (max 10 by default).
        schema:
          type: integer
          default: 10
      responses:
        '200':
          description: Search results.
  /typeahead:
    get:
      tags:
      - Search API
      summary: Typeahead search
      description: Suggest search terms, podcasts, and genres based on a partial query.
      operationId: typeahead
      parameters:
      - name: q
        in: query
        required: true
        description: Search term.
        schema:
          type: string
      - name: show_podcasts
        in: query
        description: 1 = include podcast suggestions.
        schema:
          type: integer
          default: 0
      - name: show_genres
        in: query
        description: 1 = include genre suggestions.
        schema:
          type: integer
          default: 0
      - name: safe_mode
        in: query
        description: 1 = exclude explicit content.
        schema:
          type: integer
          default: 0
      responses:
        '200':
          description: Typeahead suggestions.
  /search_episode_titles:
    get:
      tags:
      - Search API
      summary: Search episodes by title
      description: Find individual episodes by searching only their titles.
      operationId: searchEpisodeTitles
      parameters:
      - name: q
        in: query
        required: true
        description: Search term.
        schema:
          type: string
      - name: podcast_id
        in: query
        description: Restrict search to a single podcast id.
        schema:
          type: string
      - name: sort_by_date
        in: query
        description: 0 = relevance
        1 = date.: null
        schema:
          type: integer
          default: 0
      - name: page_size
        in: query
        description: Number of results per page.
        schema:
          type: integer
          default: 10
      responses:
        '200':
          description: Matching episodes.
  /trending_searches:
    get:
      tags:
      - Search API
      summary: Trending search terms
      description: Fetch up-to-date trending search terms on the Listen Notes platform.
      operationId: trendingSearches
      responses:
        '200':
          description: Trending search terms.
  /related_searches:
    get:
      tags:
      - Search API
      summary: Related search terms
      description: Fetch up-to-date related search terms for a given search term.
      operationId: relatedSearches
      parameters:
      - name: q
        in: query
        required: true
        description: Search term.
        schema:
          type: string
      responses:
        '200':
          description: Related search terms.
  /spellcheck:
    get:
      tags:
      - Search API
      summary: Spell check
      description: Suggest a spell-corrected version of a search term.
      operationId: spellcheck
      parameters:
      - name: q
        in: query
        required: true
        description: Search term to spell check.
        schema:
          type: string
      responses:
        '200':
          description: Spell-check suggestions.
components:
  securitySchemes:
    apiKeyHeader:
      type: apiKey
      in: header
      name: X-ListenAPI-Key
      description: Your Listen API key, sent in the X-ListenAPI-Key request header.