The Listen Notes connector lets your AI agent act in each user's Listen Notes account. Each user connects their own Listen Notes API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 23 tools.
- Tools
- 23
- What they doRead · write · destructive
- 23 · 0 · 023 read0 write0 destructive
- Users sign in with
- API key
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Listen Notes connection
In AgentKit > Connections, create a Listen Notes connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'listennotes'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Listen Notes:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'listennotes_get_podcasts_batch',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "listennotes"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Listen Notes:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="listennotes_get_podcasts_batch",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Listen Notes credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toollistennotes_get_curated_listGet one curated podcast list with full metadata for every podcast in it.Read-onlyGet Curated Podcast List
Get one curated podcast list with full metadata for every podcast in it. Same data as listennotes.com/curated-podcasts. Returns id, title, description, source_url, source_domain, pub_date_ms, total and podcasts (id, title, publisher, description, listen_score and other metadata). Use listennotes_get_curated_list once you have a list ID. Use listennotes_list_curated_lists or listennotes_search with type curated to find list IDs.
Inputs
idstringrequired- Curated list ID, from listennotes_list_curated_lists or a listennotes_search result with type curated. Example: SDFKduyJ47r.
listennotes_get_episodeGet one episode's full metadata, optionally with its transcript.Read-onlyGet Episode
Get one episode's full metadata, optionally with its transcript. Returns title, description, audio URL, audio_length_sec, pub_date_ms, explicit_content, link, listennotes_url, the parent podcast's metadata and, when show_transcript is 1 and one exists, transcript. Fewer than 1% of episodes have transcripts, and transcripts need a PRO or ENTERPRISE plan. Use listennotes_get_episode for one episode's details. Use listennotes_get_episodes_batch for basic metadata on up to 10 episodes at once.
Inputs
idstringrequired- Listen Notes episode ID (32-character hex string), from the id field of a search or podcast episode result. Example: 6b6d65930c5a4f71b254465871fed370.
show_transcriptinteger- Set to 1 to include the transcript, when one exists. Off (0) by default because it makes the response large. Needs a PRO or ENTERPRISE plan.one of
01
listennotes_get_episode_recommendationsGet up to 8 episodes similar to a given episode.Read-onlyGet Episode Recommendations
Get up to 8 episodes similar to a given episode. Returns recommendations: episodes with id, title, description, audio URL, length, pub_date_ms and parent podcast. Use listennotes_get_episode_recommendations for 'more like this' episodes. Use listennotes_get_podcast_recommendations for similar podcasts.
Inputs
idstringrequired- Listen Notes episode ID (32-character hex string), from the id field of a search or podcast episode result. Example: 6b6d65930c5a4f71b254465871fed370.
safe_modeinteger- Set to 1 to exclude episodes with explicit language; 0 (the default) keeps them.one of
01
listennotes_get_episodes_batchGet basic metadata for up to 10 episodes in one call.Read-onlyGet Episodes in Batch
Get basic metadata for up to 10 episodes in one call. Needs a PRO or ENTERPRISE plan. Returns episodes: id, title, description, audio URL, audio_length_sec, pub_date_ms and parent podcast for each ID found. IDs not found are left out. Use listennotes_get_episodes_batch to load several known episodes at once, for example a saved list. Use listennotes_get_episode for one episode's full details or transcript.
Inputs
idsstringrequired- Comma-separated Listen Notes episode IDs, up to 10. Example: c577d55b2b2b483c969fae3ceb58e362,0f34a9099579490993eec9e8c8cebb82.
listennotes_get_playlistGet a playlist's details and its items, 20 at a time.Read-onlyGet Playlist
Get a playlist's details and its items, 20 at a time. Works for playlists the API account can access and for any public or unlisted playlist. Returns id, name, description, visibility, type, total, total_audio_length_sec, last_timestamp_ms (the paging cursor) and items: id, type (episode, podcast or custom audio), notes, added_at_ms and the item's data. Use listennotes_get_playlist to read a playlist's contents. Use listennotes_list_playlists to find playlist IDs.
Inputs
idstringrequired- Playlist ID: 11 characters, also the last part of a playlist URL (listennotes.com/listen/podcasts-about-podcasting-m1pe7z60bsw has ID m1pe7z60bsw). Example: m1pe7z60bsw.
last_timestamp_msinteger- For paging through items: pass last_timestamp_ms from the previous response (a Unix timestamp in milliseconds). Omit or use 0 for the first 20 items. Example: 1600000000000.
sortstring- Item order: recent_added_first (the default), oldest_added_first, recent_published_first or oldest_published_first.one of
recent_added_firstoldest_added_firstrecent_published_firstoldest_published_first typestring- Which view to return: episode_list or podcast_list. Omit to use the playlist's saved default view.one of
episode_listpodcast_list
listennotes_get_podcastGet one podcast's full metadata and up to 10 of its episodes per call.Read-onlyGet Podcast
Get one podcast's full metadata and up to 10 of its episodes per call. Returns title, publisher, description, website, rss, language, country, genre_ids, total_episodes, listen_score, social links (extra), looking_for, and episodes (id, title, description, audio URL, length, pub_date_ms), plus next_episode_pub_date for paging. An empty episodes array means there are no more episodes. Use listennotes_get_podcast for one podcast and its episode list. Use listennotes_get_podcasts_batch for basic metadata on up to 10 podcasts at once.
Inputs
idstringrequired- Listen Notes podcast ID (32-character hex string), from the id field of a search, best-podcasts or other podcast result. Example: 4d3fe717742d4963a85562e9f84d8c79.
next_episode_pub_dateinteger- For paging through episodes: pass next_episode_pub_date from the previous response (a Unix timestamp in milliseconds). Omit to get the newest or oldest 10, depending on sort. Example: 1479154463000.
sortstring- Episode order: recent_first (the default) or oldest_first.one of
recent_firstoldest_first
listennotes_get_podcast_audienceGet a podcast's audience breakdown by country, as measured on Listen Notes.Read-onlyGet Podcast Audience
Get a podcast's audience breakdown by country, as measured on Listen Notes. Not every podcast has data. Returns by_regions: a list of region names with the share (ratio) of the audience from each. Use listennotes_get_podcast_audience to see where a podcast's listeners are. Use listennotes_get_podcast for the podcast's metadata and listen_score.
Inputs
idstringrequired- Listen Notes podcast ID (32-character hex string), from the id field of a search, best-podcasts or other podcast result. Example: 4d3fe717742d4963a85562e9f84d8c79.
listennotes_get_podcast_recommendationsGet up to 8 podcasts similar to a given podcast.Read-onlyGet Podcast Recommendations
Get up to 8 podcasts similar to a given podcast. Returns recommendations: podcasts with id, title, publisher, description, total_episodes, listen_score and other metadata. Use listennotes_get_podcast_recommendations for 'more like this' podcasts. Use listennotes_get_episode_recommendations for similar episodes.
Inputs
idstringrequired- Listen Notes podcast ID (32-character hex string), from the id field of a search, best-podcasts or other podcast result. Example: 4d3fe717742d4963a85562e9f84d8c79.
safe_modeinteger- Set to 1 to exclude podcasts with explicit language; 0 (the default) keeps them.one of
01
listennotes_get_podcasts_batchGet basic metadata for up to 10 podcasts in one call, identified by Listen Notes IDs, RSS URLs, Apple Podcasts IDs or Spotify IDs.Read-onlyGet Podcasts in Batch
Get basic metadata for up to 10 podcasts in one call, identified by Listen Notes IDs, RSS URLs, Apple Podcasts IDs or Spotify IDs. Needs a PRO or ENTERPRISE plan. Returns podcasts (id, title, publisher, rss, total_episodes, listen_score and other metadata, without episodes) and, when show_latest_episodes is 1, latest_episodes: up to 15 recent episodes across them, newest first. Identifiers not in the Listen Notes database are left out. Use listennotes_get_podcasts_batch to resolve several podcasts at once, for example an OPML import or a list of Apple Podcasts IDs. Use listennotes_get_podcast for one podcast with its episodes. Give at least one of ids, rsses, itunes_ids or spotify_ids.
Inputs
idsstring- Comma-separated Listen Notes podcast IDs. Example: 3302bc71139541baa46ecb27dbf6071a,68faf62be97149c280ebcc25178aa731.
itunes_idsstring- Comma-separated Apple Podcasts (iTunes) IDs. Example: 1457514703,1386234384.
next_episode_pub_dateinteger- For paging through latest_episodes: pass next_episode_pub_date from the previous response (a Unix timestamp in milliseconds). Omit to get the latest 15. Example: 1557394247000.
rssesstring- Comma-separated podcast RSS feed URLs. Example: https://rss.art19.com/the-daily,https://www.npr.org/rss/podcast.php?id=510331.
show_latest_episodesinteger- Set to 1 to also return up to 15 of the latest episodes from these podcasts, newest first; 0 (the default) leaves them out.one of
01 spotify_idsstring- Comma-separated Spotify show IDs. Example: 3DDfEsKDIDrTlnPOiG4ZF4,4qDNe5Gvl1XxdLinUGEXrC.
listennotes_get_random_episodeGet one random podcast episode; recently published episodes are more likely.Read-onlyGet Random Episode
Get one random podcast episode; recently published episodes are more likely. Returns the episode's id, title, description, audio URL, audio_length_sec, pub_date_ms, link and basic podcast info (id, title, publisher, image). Use listennotes_get_random_episode for a serendipitous pick. Use listennotes_search or listennotes_list_best_podcasts for targeted discovery.
Inputs
This tool takes no inputs.
listennotes_list_best_podcastsList Listen Notes' editor-picked best podcasts, overall or for one genre, filtered by audience region, publisher region and language.Read-onlyList Best Podcasts
List Listen Notes' editor-picked best podcasts, overall or for one genre, filtered by audience region, publisher region and language. Same data as listennotes.com/best-podcasts. Returns the genre id and name, total, page_number, has_next, next_page_number and podcasts (id, title, publisher, description, total_episodes, listen_score and other metadata). Use listennotes_list_best_podcasts to browse top podcasts in a genre or country. Use listennotes_search to find podcasts by keyword, and listennotes_get_podcast_recommendations for podcasts similar to one you have.
Inputs
genre_idstring- Genre ID from listennotes_list_genres. Omit for the overall best podcasts. Example: 93.
languagestring- Only include podcasts in this language, by name from listennotes_list_languages. Example: English.
pageinteger- Page number of results. Starts at 1. Use next_page_number from the previous response. Example: 2.
publisher_regionstring- Country code of where the podcast is produced, from listennotes_list_regions. Set both region and publisher_region (for example jp and jp) for a country's best home-grown podcasts. Example: jp.
regionstring- Country code of the audience the podcasts are popular with, from listennotes_list_regions. Defaults to us. A podcast popular in a country may be produced elsewhere. Example: gb.
safe_modeinteger- Set to 1 to exclude podcasts with explicit language; 0 (the default) keeps them.one of
01 sortstring- Sort order: recent_added_first (the default), oldest_added_first, recent_published_first, oldest_published_first, or listen_score for popularity.one of
recent_added_firstoldest_added_firstrecent_published_firstoldest_published_firstlisten_score
listennotes_list_curated_listsList curated podcast lists gathered from online media, newest first.Read-onlyList Curated Podcast Lists
List curated podcast lists gathered from online media, newest first. New lists are added daily. Returns total, page_number, has_next, next_page_number and curated_lists: id, title, description, source_url, source_domain, pub_date_ms, total and up to 5 sample podcasts each. Use listennotes_list_curated_lists to browse lists. Use listennotes_get_curated_list for every podcast in one list, and listennotes_search with type curated to find lists by keyword.
Inputs
pageinteger- Page number of curated lists. Starts at 1 (the default). Use next_page_number from the previous response. Example: 2.
listennotes_list_genresList the podcast genres Listen Notes supports.Read-onlyList Genres
List the podcast genres Listen Notes supports. Returns genres: id, name and parent_id for each genre. Use listennotes_list_genres to look up the genre IDs that listennotes_search (genre_ids) and listennotes_list_best_podcasts (genre_id) take. The list rarely changes, so it can be cached.
Inputs
top_level_onlyinteger- Set to 1 to list only top-level genres; 0 (the default) lists all genres, including sub-genres.one of
01
listennotes_list_languagesList the podcast languages in the Listen Notes database.Read-onlyList Languages
List the podcast languages in the Listen Notes database. Returns languages: an array of language names, such as English or Japanese. Use listennotes_list_languages to look up the language values that listennotes_search and listennotes_list_best_podcasts take.
Inputs
This tool takes no inputs.
listennotes_list_playlistsList the playlists the API account owns or is a member of (Listen Later playlists on listennotes.com).Read-onlyList Playlists
List the playlists the API account owns or is a member of (Listen Later playlists on listennotes.com). Returns total, page_number, has_next, next_page_number and playlists: id, name, description, visibility, type (episode_list or podcast_list), episode_count, podcast_count and listennotes_url. Use listennotes_list_playlists to find playlist IDs. Use listennotes_get_playlist for the episodes or podcasts in one playlist.
Inputs
pageinteger- Page number of playlists. Starts at 1 (the default). Use next_page_number from the previous response. Example: 2.
sortstring- Sort order: recent_added_first (the default), oldest_added_first, name_a_to_z or name_z_to_a.one of
recent_added_firstoldest_added_firstname_a_to_zname_z_to_a
listennotes_list_podcasts_by_domainList the podcasts published under a website domain, such as nytimes.com, wondery.com or npr.org, 10 per page.Read-onlyList Podcasts by Publisher Domain
List the podcasts published under a website domain, such as nytimes.com, wondery.com or npr.org, 10 per page. Returns page_number, has_next, next_page_number and podcasts: id, title, publisher, description, website, total_episodes, listen_score and other metadata. Use listennotes_list_podcasts_by_domain to find all shows from one publisher. Use listennotes_search to find podcasts by keyword.
Inputs
domain_namestringrequired- The publisher's domain name, without https:// or a path. Example: nytimes.com.
pageinteger- Page number of podcasts. Starts at 1 (the default). Use next_page_number from the previous response. Example: 2.
listennotes_list_regionsList the countries and regions Listen Notes supports.Read-onlyList Regions
List the countries and regions Listen Notes supports. Returns regions: a map of country code (for example us, gb) to country name. Use listennotes_list_regions to look up the region codes that listennotes_search and listennotes_list_best_podcasts take.
Inputs
This tool takes no inputs.
listennotes_list_trending_searchesList up to 10 search terms currently trending on Listen Notes.Read-onlyList Trending Searches
List up to 10 search terms currently trending on Listen Notes. Returns terms: an array of search strings. Use listennotes_list_trending_searches for what people are searching now. Use listennotes_list_related_searches for terms related to a query you have.
Inputs
This tool takes no inputs.
listennotes_searchRun a full-text search across podcast episodes, podcasts or curated podcast lists, with filters for genre, language, region, audio length, publish date and specific podcasts.Read-onlySearch Podcasts and Episodes
Run a full-text search across podcast episodes, podcasts or curated podcast lists, with filters for genre, language, region, audio length, publish date and specific podcasts. Returns total, count, next_offset and results: episodes (id, title, description, audio URL, length, pub_date_ms, parent podcast), podcasts (id, title, publisher, total_episodes, listen_score) or curated lists. Matches are highlighted in the *_highlighted fields. The FREE plan returns at most 30 results per query (offset below 30); PRO allows 300. Use listennotes_search for keyword or topic search. Use listennotes_search_episode_titles to find one episode by its exact title, and listennotes_typeahead for autocomplete suggestions.
Inputs
qstringrequired- Search term, such as a person, place or topic. Wrap it in double quotes for an exact-phrase match; otherwise matching is fuzzy. Example: star wars.
episode_count_maxinteger- Maximum number of episodes a podcast may have. Applies only when type is podcast. Example: 500.
episode_count_mininteger- Minimum number of episodes a podcast must have. Applies only when type is podcast. Example: 50.
genre_idsstring- Comma-separated genre IDs to search within; omit for all genres. Get IDs from listennotes_list_genres. Applies to episode and podcast searches. Example: 68,82.
interviews_onlyinteger- Set to 1 to return only podcasts that have guest interviews. Applies only when type is podcast. Needs a PRO or ENTERPRISE plan.one of
01 languagestring- Only return results in this language, by name as listed by listennotes_list_languages. Applies to episode and podcast searches. Example: English.
len_maxinteger- Maximum audio length in minutes. For type episode it filters episode length; for type podcast it filters the podcast's average episode length. Example: 30.
len_mininteger- Minimum audio length in minutes. For type episode it filters episode length; for type podcast it filters the podcast's average episode length. Example: 10.
ncidstring- Comma-separated podcast IDs (up to 5) to exclude from episode results. Applies only when type is episode. Example: 25212ac3c53240a880dd5032e547047b.
ocidstring- Comma-separated podcast IDs (up to 5) to limit episode results to. Applies only when type is episode. Example: 4d3fe717742d4963a85562e9f84d8c79.
offsetinteger- Number of results to skip, for pagination. Pass next_offset from the previous response. FREE plans can page only up to offset 29, PRO up to 299. Example: 10.
only_instring- Comma-separated fields to search in: any of title, description, author and audio. Omit to search all fields. Use title,author for better podcast-name matches. Example: title,description.
page_sizeinteger- Number of results per page, from 1 to 10. The API default is 10. Example: 5.
published_afterinteger- Only return items published after this time, as a Unix timestamp in milliseconds. Must be earlier than published_before when both are set. Example: 1580172454000.
published_beforeinteger- Only return items published before this time, as a Unix timestamp in milliseconds. Must be later than published_after when both are set. Example: 1700000000000.
regionstring- Only return results from this region, by country code as listed by listennotes_list_regions. Applies to episode and podcast searches. Example: us.
safe_modeinteger- Set to 1 to exclude podcasts or episodes with explicit language; 0 (the default) keeps them.one of
01 sort_by_dateinteger- Set to 1 to sort by publish date, newest first; 0 (the default) sorts by relevance.one of
01 sponsored_onlyinteger- Set to 1 to return only podcasts that have sponsors. Applies only when type is podcast. Needs a PRO or ENTERPRISE plan.one of
01 typestring- What to search: episode (the default), podcast, or curated (curated lists of podcasts).one of
episodepodcastcurated unique_podcastsinteger- Set to 1 to keep only one episode per podcast in the results. Applies only when type is episode.one of
01 update_freq_maxinteger- Maximum hours between a podcast's new episodes. For weekly shows use 192 here with update_freq_min 144. Applies only when type is podcast. Example: 192.
update_freq_mininteger- Minimum hours between a podcast's new episodes. For weekly shows use 144 here with update_freq_max 192. Applies only when type is podcast. Example: 144.
listennotes_search_episode_titlesSearch episodes by title only, optionally within one podcast identified by its Listen Notes, Apple Podcasts or Spotify ID or its RSS feed URL.Read-onlySearch Episode Titles
Search episodes by title only, optionally within one podcast identified by its Listen Notes, Apple Podcasts or Spotify ID or its RSS feed URL. Returns total, count and results: matching episodes with id, title, description, audio URL, length, pub_date_ms and parent podcast. Use listennotes_search_episode_titles to pin down a specific episode, for example one a user shared from Apple Podcasts or Spotify. Use listennotes_search for topic search across titles, descriptions and transcripts.
Inputs
qstringrequired- The episode title to look for. Wrap it in double quotes for an exact match; otherwise matching is fuzzy. Example: Jerusalem Demsas on The Dispossessed.
podcast_idstring- Limit results to one podcast. The format depends on podcast_id_type: a Listen Notes ID (cda18f20f1be4ac7b3cce7d0eb168fff), an Apple Podcasts ID (983795625), a Spotify ID (0Z1234tGXD2hVhjFrrhJ7g) or an RSS URL (https://cowenconvos.libsyn.com/rss).
podcast_id_typestring- The kind of ID given in podcast_id: listennotes_id (the default), itunes_id (Apple Podcasts), spotify_id or rss.one of
listennotes_iditunes_idspotify_idrss
listennotes_spellcheckSuggest spelling corrections for a search term.Read-onlySpell Check Search Term
Suggest spelling corrections for a search term. Needs a PRO or ENTERPRISE plan. Returns tokens (each misspelled token with its offset and suggestion) and corrected_text_html, the corrected query with fixes wrapped in <b> tags. An empty tokens array means nothing needed fixing. Use listennotes_spellcheck when a search returns few or no results. Use listennotes_list_related_searches to explore related topics.
Inputs
qstringrequired- Search term, such as a person, place or topic. Example: microsft stock.
listennotes_typeaheadSuggest search terms, and optionally genres and podcasts, for a partial query.Read-onlyTypeahead Suggestions
Suggest search terms, and optionally genres and podcasts, for a partial query. Returns terms (suggested search strings), genres (id, name, parent_id) when show_genres is 1, and up to 5 podcasts (id, title, publisher, image) when show_podcasts is 1. Use listennotes_typeahead for autocomplete as a user types. Use listennotes_list_related_searches for a broader list of related terms, and listennotes_search for full results.
Inputs
qstringrequired- The partial search term to complete. With show_podcasts set to 1 you can also pass an Apple Podcasts (iTunes) ID to look up that podcast. Example: star wars.
safe_modeinteger- Set to 1 to exclude podcasts with explicit language from the podcast suggestions. Applies only when show_podcasts is 1.one of
01 show_genresinteger- Set to 1 to also suggest matching genres; 0 (the default) leaves them out.one of
01 show_podcastsinteger- Set to 1 to also suggest up to 5 podcasts, matched on title and publisher. Slower, so it is off (0) by default.one of
01
No tools match.