Search Podcasts

POST https://api.podengine.ai/api/v1/search/podcasts

Search for podcasts by title, description, or RSS feed URL

Request

Request body

Search terms1
searchTermsarray of object4 fields

Terms to search for in podcast title and description

searchTermstringrequiredmin 2 characters

The text to look for. Wrapping it in single or double quotes forces a phrase match, the same as setting searchTermOptions.phraseMatch.

searchTypeenumrequired

How to match the term. 'text' runs keyword matching against each of the searchTargets.

text
searchTargetsarray of enumrequired

Which fields to match this term against. A result matches if the term hits any one of its targets, so listing several widens the search rather than narrowing it.

podcast-titlepodcast-description
searchTermOptionsobject4 fields

How this term is matched: whether it is required, treated as a phrase, or matched loosely.

matchModeenumdefault "optional"

How this term combines with the others. 'optional' (the default) lets the term raise a result's relevance without being required, though a result still has to match at least one term. 'must' requires it. 'not' excludes anything it matches.

mustnotoptional

Whether to match the search term as a phrase

slopnumber

How many words apart tokens can appear in a document to be considered a match

fuzzyboolean

Whether to use fuzzy matching

Filters21
includeItunesGenresarray of string

iTunes genres to include in results

excludeItunesGenresarray of string

iTunes genres to exclude from results

includePodcastIdsarray of string

Specific podcast IDs to include in results

excludePodcastIdsarray of string

Specific podcast IDs to exclude from results

excludeEpisodeIdsarray of string

Specific episode IDs to exclude from results

languagesarray of string

Filter podcasts by language

podcastCountriesarray of string

Filter podcasts by country of origin using ISO 3166-1 alpha-2 codes, for example us

Filter by explicit content rating

cleanexplicit

Filter podcasts founded after this date

Filter podcasts with episodes published after this date

minTotalEpisodesintegermin 1

Minimum number of total episodes

maxTotalEpisodesintegermin 1

Maximum number of total episodes

minItunesRatingnumber0 – 5

Minimum iTunes rating score

Minimum number of iTunes ratings

minSpotifyRatingnumber0 – 5

Minimum Spotify rating score

Minimum number of Spotify ratings

minCastboxPlaysintegermin 1

Minimum number of Castbox plays

Minimum number of Castbox subscribers

Filter podcasts that have primary contact information

hasSocialsarray of enum

Filter podcasts with specific social media presence from beehiiv, behance, bluesky, discord, facebook, github, instagram, linkedin, linktree, mastodon, medium, patreon, pinterest, reddit, snapchat, soundcloud, substack, threads, tiktok, tumblr, twitch, twitter, vimeo, whatsapp, youtube

beehiivbehanceblueskydiscordfacebookgithubinstagramlinkedinlinktreemastodonmediumpatreonpinterestredditsnapchatsoundcloudsubstackthreadstiktoktumblrtwitchtwittervimeowhatsappyoutube

Filter podcasts that feature guests

Audience & scores2
podcastAuthorityScoreobject5 fields

Filter podcasts by their Authority Score

authorityScoreobject2 fields

Restrict results to podcasts whose overall Authority Score falls in this range. The overall score combines the quality, engagement, social and YouTube components; podcasts we have not scored are excluded. See https://www.podengine.ai/podcast-authority-score.

minnumberrequirednullable0 – 100

Inclusive lower bound for the overall Authority Score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the overall Authority Score. Null or omitted leaves the range open at the top.

qualityScoreobject2 fields

Restrict results by the quality component of the Authority Score, which rates how well the show is produced and maintained: release consistency, episode length, artwork, show notes, transcript coverage, contact details and RSS completeness. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the quality score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the quality score. Null or omitted leaves the range open at the top.

engagementScoreobject2 fields

Restrict results by the engagement component of the Authority Score, which rates how strongly listeners respond to the show: review counts and ratings, recent Apple US chart position, and Castbox plays and subscribers. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the engagement score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the engagement score. Null or omitted leaves the range open at the top.

socialScoreobject2 fields

Restrict results by the social component of the Authority Score, which rates follower counts across the show's linked Facebook, Instagram, LinkedIn, TikTok and Twitter accounts. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the social score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the social score. Null or omitted leaves the range open at the top.

youtubeScoreobject2 fields

Restrict results by the YouTube component of the Authority Score, which rates the channel's subscribers, total views and most-viewed video. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the YouTube score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the YouTube score. Null or omitted leaves the range open at the top.

podcastAudienceEstimatedMonthlyListenersobject2 fields

Filter by the published podcast monthly audience estimate (audio downloads plus YouTube views over 30 days). Bounds are inclusive; omit min or max for an open-ended range. Podcasts without an estimate are excluded. Example: { "min": 10000, "max": 100000 }.

minintegermin 0

Inclusive minimum monthly audience estimate

maxintegermin 0

Inclusive maximum monthly audience estimate

Project2
projectobject6 fields

Details about any Project this search is associated with. If included will filter out podcasts related to the project.

projectIdstringrequired

The Pod Engine Project ID

If true, will not include any podcasts marked as ignored on this project in the results.

If true, will not include any podcasts on the project list in the results.

If the podcast relevancy should be included with the search results. Note that including this will limit your search results to 20 total and also slow down the search results response

excludeRelvancyValuesarray of number

If provided, will exclude podcasts with these relevancy values. Valid values are 1-5. Note this is a server side filter and will only work if includePodcastRelevancy is set.

If true, will force a recalculation of the podcast relevancy values for this search. Note this will slow down the search results response and should only be used if you believe the relevancy values are out of date.

projectIdstring

[DEPRECATED] Project ID to associate the search with

Sorting1
sortOrderarray of object3 fields

Specify how results should be sorted

fieldenumrequired

What to order by. 'relevance' is the search score. 'recentActivity' is the episode's publication date when searching episodes, and the podcast's most recent episode date when searching podcasts. 'title' orders alphabetically. 'appleReviews' and 'spotifyReviews' order by a rating that weighs the number of reviews as well as the average, so a 5.0 from three listeners does not outrank a 4.7 from thousands.

relevancerecentActivitytitleappleReviewsspotifyReviews

Sort direction. Defaults to 'asc' for 'title' and 'desc' for every other field.

ascdesc

Where results that have no value for this field go. Defaults to 'last'. Ignored for 'relevance', which every result has.

firstlast
Pagination2
cursorstringnullable

Pagination cursor for fetching the next page of results. This cursor is stateless and does not expire. However, because it uses search_after pagination, results may be inconsistent if the underlying data changes between requests (e.g., you may see duplicate or missing results if documents are added/removed).

pageSizeinteger1 – 1000

Number of results to return per page

Response

200 application/json
statusliteral: OKrequired
dataobjectrequired6 fields
searchModeliteral: podcastsrequired
searchIdstringrequired
searchOptionsobjectrequired29 fields
cursorstringnullable

Pagination cursor for fetching the next page of results. This cursor is stateless and does not expire. However, because it uses search_after pagination, results may be inconsistent if the underlying data changes between requests (e.g., you may see duplicate or missing results if documents are added/removed).

pageSizeinteger1 – 1000

Number of results to return per page

projectobject6 fields

Details about any Project this search is associated with. If included will filter out podcasts related to the project.

projectIdstringrequired

The Pod Engine Project ID

If true, will not include any podcasts marked as ignored on this project in the results.

If true, will not include any podcasts on the project list in the results.

If the podcast relevancy should be included with the search results. Note that including this will limit your search results to 20 total and also slow down the search results response

excludeRelvancyValuesarray of number

If provided, will exclude podcasts with these relevancy values. Valid values are 1-5. Note this is a server side filter and will only work if includePodcastRelevancy is set.

If true, will force a recalculation of the podcast relevancy values for this search. Note this will slow down the search results response and should only be used if you believe the relevancy values are out of date.

projectIdstring

[DEPRECATED] Project ID to associate the search with

searchTermsarray of object4 fields

Terms to search for in podcast title and description

searchTermstringrequiredmin 2 characters

The text to look for. Wrapping it in single or double quotes forces a phrase match, the same as setting searchTermOptions.phraseMatch.

searchTypeenumrequired

How to match the term. 'text' runs keyword matching against each of the searchTargets.

text
searchTargetsarray of enumrequired

Which fields to match this term against. A result matches if the term hits any one of its targets, so listing several widens the search rather than narrowing it.

podcast-titlepodcast-description
searchTermOptionsobject4 fields

How this term is matched: whether it is required, treated as a phrase, or matched loosely.

matchModeenumdefault "optional"

How this term combines with the others. 'optional' (the default) lets the term raise a result's relevance without being required, though a result still has to match at least one term. 'must' requires it. 'not' excludes anything it matches.

mustnotoptional

Whether to match the search term as a phrase

slopnumber

How many words apart tokens can appear in a document to be considered a match

fuzzyboolean

Whether to use fuzzy matching

excludeItunesGenresarray of string

iTunes genres to exclude from results

excludePodcastIdsarray of string

Specific podcast IDs to exclude from results

excludeEpisodeIdsarray of string

Specific episode IDs to exclude from results

Filter by explicit content rating

cleanexplicit

Filter podcasts founded after this date

Filter podcasts that have primary contact information

hasSocialsarray of enum

Filter podcasts with specific social media presence from beehiiv, behance, bluesky, discord, facebook, github, instagram, linkedin, linktree, mastodon, medium, patreon, pinterest, reddit, snapchat, soundcloud, substack, threads, tiktok, tumblr, twitch, twitter, vimeo, whatsapp, youtube

beehiivbehanceblueskydiscordfacebookgithubinstagramlinkedinlinktreemastodonmediumpatreonpinterestredditsnapchatsoundcloudsubstackthreadstiktoktumblrtwitchtwittervimeowhatsappyoutube
includeItunesGenresarray of string

iTunes genres to include in results

includePodcastIdsarray of string

Specific podcast IDs to include in results

languagesarray of string

Filter podcasts by language

Filter podcasts with episodes published after this date

maxTotalEpisodesintegermin 1

Maximum number of total episodes

minCastboxPlaysintegermin 1

Minimum number of Castbox plays

Minimum number of Castbox subscribers

minItunesRatingnumber0 – 5

Minimum iTunes rating score

Minimum number of iTunes ratings

minSpotifyRatingnumber0 – 5

Minimum Spotify rating score

Minimum number of Spotify ratings

minTotalEpisodesintegermin 1

Minimum number of total episodes

podcastCountriesarray of string

Filter podcasts by country of origin using ISO 3166-1 alpha-2 codes, for example us

Filter podcasts that feature guests

podcastAuthorityScoreobject5 fields

Filter podcasts by their Authority Score

authorityScoreobject2 fields

Restrict results to podcasts whose overall Authority Score falls in this range. The overall score combines the quality, engagement, social and YouTube components; podcasts we have not scored are excluded. See https://www.podengine.ai/podcast-authority-score.

minnumberrequirednullable0 – 100

Inclusive lower bound for the overall Authority Score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the overall Authority Score. Null or omitted leaves the range open at the top.

qualityScoreobject2 fields

Restrict results by the quality component of the Authority Score, which rates how well the show is produced and maintained: release consistency, episode length, artwork, show notes, transcript coverage, contact details and RSS completeness. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the quality score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the quality score. Null or omitted leaves the range open at the top.

engagementScoreobject2 fields

Restrict results by the engagement component of the Authority Score, which rates how strongly listeners respond to the show: review counts and ratings, recent Apple US chart position, and Castbox plays and subscribers. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the engagement score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the engagement score. Null or omitted leaves the range open at the top.

socialScoreobject2 fields

Restrict results by the social component of the Authority Score, which rates follower counts across the show's linked Facebook, Instagram, LinkedIn, TikTok and Twitter accounts. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the social score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the social score. Null or omitted leaves the range open at the top.

youtubeScoreobject2 fields

Restrict results by the YouTube component of the Authority Score, which rates the channel's subscribers, total views and most-viewed video. Podcasts we have not scored are excluded.

minnumberrequirednullable0 – 100

Inclusive lower bound for the YouTube score. Null or omitted leaves the range open at the bottom.

maxnumberrequirednullable0 – 100

Inclusive upper bound for the YouTube score. Null or omitted leaves the range open at the top.

podcastAudienceEstimatedMonthlyListenersobject2 fields

Filter by the published podcast monthly audience estimate (audio downloads plus YouTube views over 30 days). Bounds are inclusive; omit min or max for an open-ended range. Podcasts without an estimate are excluded. Example: { "min": 10000, "max": 100000 }.

minintegermin 0

Inclusive minimum monthly audience estimate

maxintegermin 0

Inclusive maximum monthly audience estimate

sortOrderarray of object3 fields

Specify how results should be sorted

fieldenumrequired

What to order by. 'relevance' is the search score. 'recentActivity' is the episode's publication date when searching episodes, and the podcast's most recent episode date when searching podcasts. 'title' orders alphabetically. 'appleReviews' and 'spotifyReviews' order by a rating that weighs the number of reviews as well as the average, so a 5.0 from three listeners does not outrank a 4.7 from thousands.

relevancerecentActivitytitleappleReviewsspotifyReviews

Sort direction. Defaults to 'asc' for 'title' and 'desc' for every other field.

ascdesc

Where results that have no value for this field go. Defaults to 'last'. Ignored for 'relevance', which every result has.

firstlast
searchResultsStatsobjectrequired3 fields
timeobjectrequired3 fields
totalTimeTakenMsnumberrequired
totalSearchTimeMsnumberrequired
totalsobjectrequired6 fields
blacklistedPodcastsnumberrequired
totalResultsAvailablenumberrequired
resultsProcessednumberrequired
resultsFilterednumberrequired
resultsReturnednumberrequired
filtersobjectrequired2 fields
relevancyScoresTotalsrecordrequired

If includePodcastRelevancy is true this will be included with 1 record for each unique podcast in the results

resultobjectrequired4 fields
totalobjectrequired2 fields

Elasticsearch match count before application filtering.

valuenumberrequired

Number of matching results, or a lower bound when relation is gte.

relationstring

eq for an exact count; gte for a lower bound.

maxScorenumberrequirednullable

Highest relevance score in the result set, or null when unavailable.

hitsReturnednumberrequired

Number of hits returned in this page.

hitsarray of objectrequired115 fields

Matching podcasts. Optional fields depend on the field selection used by the search service.

appleIdnumber
applePodcastsRatingnumbernullable
castboxPlaysnumbernullable
castboxSubscribersnumbernullable
castboxIdstringnullable
chartPositionsarray of objectnullable10 fields
datestringrequired

The date of the chart position in YYYY-MM-DD format.

chart_typestringrequired

The type of chart (e.g., "apple", "spotify").

country_codestringrequired

The ISO country code where this chart position applies.

categorystringrequired

The main category of the chart (e.g., "top podcasts").

sub_categorystringrequirednullable

The sub-category of the chart, if applicable.

positionnumberrequired

The current position of the podcast on the chart.

previous_positionnumberrequirednullable

The previous position of the podcast on the chart.

position_changenumberrequirednullable

The change in position from the previous chart (positive = moved up, negative = moved down).

total_days_in_chartnumberrequired

The total number of days the podcast has been on this chart.

days_streak_countnumberrequired

The number of consecutive days the podcast has been on this chart.

ignorebooleannullable
podcastAuthorityScoreEngagementnumberrequirednullable
podcastAuthorityScoreQualitynumberrequirednullable
podcastAuthorityScoreSocialnumberrequirednullable
podcastAuthorityScoreTotalnumberrequirednullable
podcastAuthorityScoreYoutubenumberrequirednullable
podcastEmailsarray of stringnullable
podcastWebsitesarray of stringnullable
podcastCountriesarray of string
foundedDatedaterequirednullable
lastEpisodeDatedaterequirednullable
podcastHasSponsorsbooleannullable
podcastHasGuestsbooleannullable
podcastIdstringrequired
podcastImageUrlstringrequirednullable
podcastGuidstringnullable
podcastHostNamesarray of stringnullable
podcastRssAuthorstringnullable
podcastRssDescriptionstringrequirednullable
podcastRssTitleLateststringrequirednullable
podcastRssTitlestringrequired
podcastSlugstringrequired
podcastWebsiteUrlstringrequirednullable
updateFrequencystringnullable
primaryContactstringnullable
rssCategoriesarray of stringnullable
rssLanguagestringrequirednullable
podchaserUrlSlugstringnullable
podnewsUrlSlugstringnullable
rephonicUrlSlugstringnullable
similarPodcastsarray of object4 fields
podcast_idstringrequired
titlestringrequired
image_urlstringrequirednullable
slugstringrequired
socialsFacebookarray of objectnullable9 fields
idstringrequired

The unique Facebook page ID.

namestringrequired

The name of the Facebook page.

followers_countnumberrequired

The number of followers the Facebook page has.

likes_countnumberrequired

The number of likes the Facebook page has.

following_countnumberrequired

The number of pages this Facebook page is following.

talking_about_countnumberrequired

The number of people talking about this Facebook page.

image_urlstringrequirednullable

The URL of the Facebook page profile image.

urlstringrequired

The URL of the Facebook page.

data_last_updateddaterequired
socialsInstagramarray of objectnullable7 fields
idstringrequired

The unique Instagram profile ID.

usernamestringrequired

The Instagram username/handle.

followers_countnumberrequired

The number of followers the Instagram profile has.

following_countnumberrequired

The number of accounts this Instagram profile is following.

posts_countnumberrequired

The number of posts the Instagram profile has.

image_urlstringrequirednullable

The URL of the Instagram profile image.

data_last_updateddaterequired
socialsLinkedinCompanyarray of objectnullable11 fields
idstringrequired

The unique LinkedIn company ID.

namestringrequired

The name of the LinkedIn company.

aboutstringrequirednullable

The "About" section text of the LinkedIn company.

descriptionstringrequirednullable

The description of the LinkedIn company.

company_sizestringrequirednullable

The size of the company (e.g., "11-50 employees").

country_codestringrequirednullable

The ISO country code where the company is located.

industriesstringrequirednullable

The industries the company operates in.

followers_countnumberrequired

The number of followers the LinkedIn company has.

employees_countnumberrequired

The number of employees at the company.

image_urlstringrequirednullable

The URL of the LinkedIn company logo/image.

data_last_updateddaterequired
socialsLinkedinPersonarray of objectnullable9 fields
idstringrequired

The unique LinkedIn person ID.

namestringrequired

The name of the LinkedIn person.

aboutstringrequirednullable

The "About" section text of the LinkedIn person.

descriptionstringrequirednullable

The description of the LinkedIn person.

followers_countnumberrequired

The number of followers the LinkedIn person has.

connections_countnumberrequired

The number of connections the LinkedIn person has.

country_codestringrequirednullable

The ISO country code where the person is located.

image_urlstringrequirednullable

The URL of the LinkedIn person profile image.

data_last_updateddaterequired
socialsTiktokarray of objectnullable9 fields
idstringrequired

The unique TikTok profile ID.

handlestringrequired

The TikTok handle/username.

profile_namestringrequired

The display name of the TikTok profile.

biographystringrequirednullable

The biography text of the TikTok profile.

followers_countnumberrequired

The number of followers the TikTok profile has.

following_countnumberrequired

The number of accounts this TikTok profile is following.

likes_countnumberrequired

The number of likes the TikTok profile has received.

image_urlstringrequirednullable

The URL of the TikTok profile image.

data_last_updateddaterequired
socialsTwitterarray of objectnullable9 fields
idstringrequired

The unique Twitter profile ID.

date_joineddaterequirednullable
biographystringrequirednullable

The biography text of the Twitter profile.

handlestringrequired

The Twitter handle/username.

followers_countnumberrequired

The number of followers the Twitter profile has.

following_countnumberrequired

The number of accounts this Twitter profile is following.

posts_countnumberrequired

The number of posts/tweets the Twitter profile has.

image_urlstringrequirednullable

The URL of the Twitter profile image.

data_last_updateddaterequired
spotifyIdstringnullable
spotifyRatingnumbernullable
spotifyRatingsCountnumbernullable
transcriptionModeenumrequired
noneallepisodes-since
youtubeChannelCountnumberrequirednullable
youtubeTotalSubscribersnumberrequirednullable
youtubeTotalVideosnumberrequirednullable
youtubeTotalViewsnumberrequirednullable
youtubeChannelsarray of object10 fields
channel_descriptionstringrequirednullable
channel_handlestringrequirednullable
channel_idstringrequired
channel_titlestringrequirednullable
channel_published_datedaterequirednullable
total_subscribersnumberrequired
total_videosnumberrequired
total_viewsnumberrequired
scorenumberrequired

Search relevance score; zero when Elasticsearch does not return a score.

podcastTitleHighlightsarray of string
cursorstringrequirednullable