GET /search

listennotes.com

Summary: Full-text search
Operation ID: search
Auth: unknown
Description

Full-text search on episodes, podcasts, or curated lists of podcasts. Use the `offset` parameter to paginate through search results. The FREE plan allows to see up to 30 search results (or `offset` < 30) per query. The PRO plan allows to see up to 300 search results (or `offset` < 300) per query. The ENTERPRISE plan allows to see up to 10,000 search results (or `offset` < 10000) per query.

Parameters (22)

X-ListenAPI-Key (string, header, required)

Get API Key on listennotes.com/api

episode_count_max (integer, query, optional)

Maximum number of episodes. Applicable only when type parameter is **podcast**.

episode_count_min (integer, query, optional)

Minimum number of episodes. Applicable only when type parameter is **podcast**.

genre_ids (string, query, optional)

A comma-delimited string of a list of genre ids. If not specified, then all genres are included. You can find the id and the name of all genres from `GET /genres`. It works only when **type** is *episode* or *podcast*.

language (string, query, optional)

Limit search results to a specific language. If not specified, it'll be any language. You can get a list of supported languages from `GET /languages`. It works only when **type** is *episode* or *podcast*.

len_max (integer, query, optional)

Maximum audio length in minutes. Applicable only when **type** parameter is **episode** or **podcast**. If **type** parameter is **episode**, it's for audio length of an episode. If **type** parameter is **podcast**, it's for average audio length of all episodes in a podcast.

len_min (integer, query, optional, default: 0)

Minimum audio length in minutes. Applicable only when **type** parameter is **episode** or **podcast**. If **type** parameter is **episode**, it's for audio length of an episode. If **type** parameter is **podcast**, it's for average audio length of all episodes in a podcast.

ncid (string, query, optional)

A comma-delimited string of podcast ids (up to 5 podcasts) - you can get a podcast id from the **podcast_id** field in response. This parameter is to exclude search results of a few specific podcasts. It works only when **type** is *episode*.

ocid (string, query, optional)

A comma-delimited string of podcast ids (up to 5 podcasts) - you can get a podcast id from the **podcast_id** field in response. This parameter is to limit search results from only a few specific podcasts. It works only when **type** is *episode*.

offset (integer, query, optional, default: 0)

Offset for search results, for pagination. You'll use **next_offset** from response for this parameter.

only_in (string, query, optional, default: title,description,author,audio)

A comma-delimited string to search only in specific fields. Allowed values are title, description, author, and audio. If not specified, then search every fields.

page_size (integer, query, optional, default: 10)

The maximum number of search results per page. A valid value should be an integer between 1 and 10 (inclusive).

published_after (integer, query, optional, default: 0)

Only show episodes/podcasts/curated lists published after this timestamp (in milliseconds). If **published_before** & **published_after** are used at the same time, **published_before** should be bigger than **published_after**.

published_before (integer, query, optional)

Only show episodes/podcasts/curated lists published before this timestamp (in milliseconds). If **published_before** & **published_after** are used at the same time, **published_before** should be bigger than **published_after**.

q (string, query, required)

Search term, e.g., person, place, topic... You can use double quotes to do verbatim match, e.g., "game of thrones". Otherwise, it's fuzzy search.

region (string, query, optional)

Limit search results to a specific region (e.g., us, gb, in...). If not specified, it'll be any region. You can get the supported country codes from `GET /regions`. It works only when **type** is *episode* or *podcast*.

safe_mode (integer, query, optional, default: 0)

Whether or not to exclude podcasts/episodes with explicit language. 1 is yes and 0 is no. It works only when **type** is *episode* or *podcast*.

Constraints: {'enum': [0, 1]}

sort_by_date (integer, query, optional, default: 0)

Sort by date or not? If 0, then sort by relevance. If 1, then sort by date.

Constraints: {'enum': [0, 1]}

type (string, query, optional, default: episode)

What type of contents do you want to search for?

Constraints: {'enum': ['episode', 'podcast', 'curated']}

unique_podcasts (integer, query, optional, default: 0)

Whether or not to keep only one episode per podcast in search results. 1 is yes and 0 is no. It works only when **type** is *episode*.

Constraints: {'enum': [0, 1]}

update_freq_max (integer, query, optional)

Maximum update frequency in hours (how frequently does a podcast release a new episode). For example, if you want to find "weekly" podcasts, then you can set **update_freq_min**=144 hours (or 6 days) and **update_freq_max**=192 hours (or 8 days). Applicable only when type parameter is **podcast**.

update_freq_min (integer, query, optional)

Minimum update frequency in hours (how frequently does a podcast release a new episode). For example, if you want to find "weekly" podcasts, then you can set **update_freq_min**=144 hours (or 6 days) and **update_freq_max**=192 hours (or 8 days). Applicable only when type parameter is **podcast**.

No probe data for this endpoint yet.