PodcastIndex Search API

Search the index

Operations 4

GET /search/byterm Search Podcasts #
GET /search/bytitle Search Podcasts by Title #
GET /search/byperson Search Episodes by Person #
GET /search/music/byterm Search Music Podcasts #

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/podcastindex-search-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

podcastindex-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.12.1
  title: PodcastIndex.org Search API
  termsOfService: https://github.com/Podcastindex-org/legal/blob/main/TermsOfService.md
  contact:
    email: info@podcastindex.org
    url: https://podcastindex.org/
  license:
    name: MIT
    url: https://github.com/Podcastindex-org/docs-api/blob/master/LICENSE
  x-logo:
    url: logo.svg
    href: /
  description: Download the openapi spec in json or yaml format.
servers:
- url: https://api.podcastindex.org/api/1.0
tags:
- name: Search
  description: Search the index
paths:
  /search/byterm:
    get:
      tags:
      - Search
      summary: Search Podcasts
      description: 'This call returns all of the feeds that match the search terms in the `title`, `author` or `owner` of the feed.


        Example: https://api.podcastindex.org/api/1.0/search/byterm?q=batman+university&pretty'
      operationId: search/byterm
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/val'
      - $ref: '#/components/parameters/max'
      - $ref: '#/components/parameters/aponly'
      - $ref: '#/components/parameters/clean'
      - $ref: '#/components/parameters/similar'
      - $ref: '#/components/parameters/fulltext'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/search_byterm'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
      x-codeSamples:
      - lang: PHP
        source: "//Required values\n$apiKey = \"UXKCGDSYGUUEVQJSYDZH\";\n$apiSecret = \"yzJe2eE7XV-3eY576dyRZ6wXyAbndh6LUrCZ8KN|\";\n$apiHeaderTime = time();\n\n//Hash them to get the Authorization token\n$hash = sha1($apiKey.$apiSecret.$apiHeaderTime);\n\n//Set the required headers\n$headers = [\n  \"User-Agent: SuperPodcastPlayer/1.3\",\n  \"X-Auth-Key: $apiKey\",\n  \"X-Auth-Date: $apiHeaderTime\",\n  \"Authorization: $hash\"\n];\n\n//Make the request to an API endpoint\n$ch = curl_init();\ncurl_setopt($ch, CURLOPT_URL,\"https://api.podcastindex.org/api/1.0/search/byterm?q=bastiat\");\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPHEADER, $headers);\n\n//Collect and show the results\n$response = curl_exec ($ch);\ncurl_close ($ch);\necho print_r(json_decode($response), TRUE);\n"
      - lang: C#
        source: "//Required values\nstring apiKey = \"UXKCGDSYGUUEVQJSYDZH\";\nstring apiSecret = \"yzJe2eE7XV-3eY576dyRZ6wXyAbndh6LUrCZ8KN|\";\nTimeSpan t = DateTime.UtcNow - new DateTime(1970, 1, 1);\nint apiHeaderTime = (int)t.TotalSeconds;\n\n//Hash them to get the Authorization token\nstring hash = \"\";\nusing (SHA1Managed sha1 = new SHA1Managed())\n{\n    var hashed = sha1.ComputeHash(Encoding.UTF8.GetBytes(apiKey + apiSecret + apiHeaderTime));\n    var sb = new StringBuilder(hashed.Length * 2);\n\n    foreach (byte b in hashed)\n    {\n        // can be \"x2\" if you want lowercase\n        sb.Append(b.ToString(\"x2\"));\n    }\n\n    hash = sb.ToString();\n}\n\n//Create the web request and add the required headers\nHttpWebRequest request = (HttpWebRequest)WebRequest.Create(\"https://api.podcastindex.org/api/1.0/search/byterm?q=bastiat\");\nrequest.Headers.Add(\"User-Agent\", \"SuperPodcastPlayer/1.3\");\nrequest.Headers.Add(\"X-Auth-Date\", apiHeaderTime.ToString());\nrequest.Headers.Add(\"X-Auth-Key\", apiKey);\nrequest.Headers.Add(\"Authorization\", hash);\n\n//Send the request and collect/show the results\ntry\n{\n    WebResponse webResponse2 = request.GetResponse();\n    Stream stream2 = webResponse2.GetResponseStream();\n    StreamReader reader2 = new StreamReader(stream2);\n\n    Console.WriteLine(reader2.ReadToEnd());\n\n    webResponse2.Close();\n}\ncatch (Exception e)\n{\n    Console.WriteLine(\"Error.\");\n}\n"
      - lang: Swift
        source: "import Foundation\nimport CommonCrypto\n\nextension String {\n  func sha1() -> String {\n  let data = Data(self.utf8)\n  var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH))\n      data.withUnsafeBytes {\n      _ = CC_SHA1($0.baseAddress, CC_LONG(data.count), &digest)\n  }\n  let hexBytes = digest.map { String(format: \"%02hhx\", $0) }\n      return hexBytes.joined()\n  }\n}\n\nlet apiKey = \"UXKCGDSYGUUEVQJSYDZH\"\nlet apiSecret = \"yzJe2eE7XV-3eY576dyRZ6wXyAbndh6LUrCZ8KN|\"\nlet apiHeaderTime = String(Int(Date().timeIntervalSince1970))\nlet hash = (apiKey + apiSecret + apiHeaderTime).sha1()\n\nvar semaphore = DispatchSemaphore (value: 0)\nvar request = URLRequest(url: URL(string: \"https://api.podcastindex.org/api/1.0/search/byterm?q=bastiat\")!,timeoutInterval: Double.infinity)\nrequest.addValue(\"SuperPodcastPlayer/1.3\", forHTTPHeaderField: \"User-Agent\")\nrequest.addValue(apiKey, forHTTPHeaderField: \"X-Auth-Key\")\nrequest.addValue(apiHeaderTime, forHTTPHeaderField: \"X-Auth-Date\")\nrequest.addValue(hash, forHTTPHeaderField: \"Authorization\")\n\nrequest.httpMethod = \"GET\"\n\nlet task = URLSession.shared.dataTask(with: request) { data, response, error in\n    guard let data = data else {\n        print(String(describing: error))\n        return\n    }\n    print(String(data: data, encoding: .utf8)!)\n    semaphore.signal()\n}\n\ntask.resume()\nsemaphore.wait()\n"
  /search/bytitle:
    get:
      tags:
      - Search
      summary: Search Podcasts by Title
      description: 'This call returns all of the feeds where the `title` of the feed matches the search term (ignores case).


        Example "everything everywhere daily" will match the podcast

        Everything Everywhere Daily by "everything everywhere" will not.


        Example: https://api.podcastindex.org/api/1.0/search/bytitle?q=everything+everywhere+daily&pretty'
      operationId: search/bytitle
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/val'
      - $ref: '#/components/parameters/max'
      - $ref: '#/components/parameters/clean'
      - $ref: '#/components/parameters/fulltext'
      - $ref: '#/components/parameters/pretty'
      - $ref: '#/components/parameters/similar'
      responses:
        '200':
          $ref: '#/components/responses/search_byterm'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /search/byperson:
    get:
      tags:
      - Search
      summary: Search Episodes by Person
      description: 'This call returns all of the episodes where the specified person is mentioned.


        It searches the following fields:


        - Person tags

        - Episode title

        - Episode description

        - Feed owner

        - Feed author


        Examples:


        - https://api.podcastindex.org/api/1.0/search/byperson?q=adam%20curry&pretty

        - https://api.podcastindex.org/api/1.0/search/byperson?q=Martin+Mouritzen&pretty

        - https://api.podcastindex.org/api/1.0/search/byperson?q=Klaus+Schwab&pretty'
      operationId: search/byperson
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/q_person'
      - $ref: '#/components/parameters/max'
      - $ref: '#/components/parameters/fulltext'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/search_byperson'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /search/music/byterm:
    get:
      tags:
      - Search
      summary: Search Music Podcasts
      description: 'This call returns all of the feeds that match the search terms in the `title`, `author` or `owner` of the

        where the medium is `music`.


        Example: https://api.podcastindex.org/api/1.0/search/music/byterm?q=able+kirby&pretty'
      operationId: search/music/byterm
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/q'
      - $ref: '#/components/parameters/val'
      - $ref: '#/components/parameters/aponly'
      - $ref: '#/components/parameters/max'
      - $ref: '#/components/parameters/clean'
      - $ref: '#/components/parameters/fulltext'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/search_byterm'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
components:
  responses:
    search_byperson:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: '#/components/schemas/status'
              items:
                $ref: '#/components/schemas/items_byperson'
              count:
                $ref: '#/components/schemas/count'
              query:
                $ref: '#/components/schemas/query_search'
              description:
                $ref: '#/components/schemas/description_response'
    '401':
      description: Not authenticated
      content:
        application/json:
          schema:
            type: string
          example: Authorization header value either not set or blank.
    search_byterm:
      description: Success
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: '#/components/schemas/status'
              feeds:
                $ref: '#/components/schemas/feeds'
              count:
                $ref: '#/components/schemas/count'
              query:
                $ref: '#/components/schemas/query_search'
              description:
                $ref: '#/components/schemas/description_response'
    '400':
      description: Invalid request
      content:
        application/json:
          schema:
            type: object
            properties:
              status:
                $ref: '#/components/schemas/status'
              description:
                $ref: '#/components/schemas/description_response'
          example:
            status: 'false'
            description: Invalid parameters
  schemas:
    podcastguid:
      description: 'The GUID from the `podcast:guid` tag in the feed. This value is a unique, global identifier for the podcast.



        See the namespace spec for

        [guid](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#guid) for details.

        '
      type: string
      example: 9b024349-ccf0-5f69-a609-6b82873eab3c
    image_episode:
      description: 'The item-level image for the episode

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11
    items_byperson:
      description: 'List of episodes matching request

        '
      type: array
      items:
        $ref: '#/components/schemas/item_search_byperson'
    season:
      description: 'Season number. May be null for `liveItem`.

        '
      type:
      - integer
      - 'null'
      example: 3
    lastCrawlTime:
      description: 'The last time we attempted to pull this feed from its url.

        '
      type: integer
      format: Unix Epoch
      example: 1613394034
    query_search:
      description: 'Search terms passed to request

        '
      type: string
      example: batman university
    parseErrors:
      description: 'The number of errors we’ve encountered trying to parse the feed content.

        Errors here are things like not well-formed xml, bad character encoding, etc.



        We fix many of these types of issues on the fly when parsing.

        We only increment the errors count when we can’t fix it.

        '
      type: integer
      example: 0
    explicit_feed:
      description: 'Is feed marked as explicit

        '
      type: boolean
      example: false
    title_episode:
      description: 'Name of the episode

        '
      type: string
      example: Gotham
    lastHttpStatus:
      description: 'The last http status code we got when pulling this feed from its url.



        You will see some made up status codes sometimes. These are what we use to track state within the feed puller.

        These all start with 9xx.

        '
      type: integer
      example: 200
    lastParseTime:
      description: 'The last time we tried to parse the downloaded feed content.

        '
      type: integer
      format: Unix Epoch
      example: 1613394045
    type:
      description: "Type of source feed where:\n\n  - 0: RSS\n  - 1: Atom\n"
      type: integer
      enum:
      - 0
      - 1
      example: 0
    crawlErrors:
      description: 'The number of errors we’ve encountered trying to pull a copy of the feed.

        Errors are things like a 500 or 404 response, a server timeout, bad encoding, etc.

        '
      type: integer
      example: 0
    image_feed:
      description: 'The channel-level image element.

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11
    lastGoodHttpStatusTime:
      description: 'Timestamp of the last time we got a "good", meaning non-4xx/non-5xx, status code when pulling this feed from its url.

        '
      type: integer
      format: Unix Epoch
      example: 1613394034
    episode_number:
      description: 'Episode number

        '
      type:
      - integer
      - 'null'
      example: 19
    feed_search:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/id_feed'
        podcastGuid:
          $ref: '#/components/schemas/podcastguid'
        title:
          $ref: '#/components/schemas/title_feed'
        url:
          $ref: '#/components/schemas/url_feed'
        originalUrl:
          $ref: '#/components/schemas/originalUrl'
        link:
          $ref: '#/components/schemas/link_feed'
        description:
          $ref: '#/components/schemas/description_feed'
        author:
          $ref: '#/components/schemas/author'
        ownerName:
          $ref: '#/components/schemas/ownerName'
        image:
          $ref: '#/components/schemas/image_feed'
        artwork:
          $ref: '#/components/schemas/artwork'
        lastUpdateTime:
          $ref: '#/components/schemas/lastUpdateTime'
        lastCrawlTime:
          $ref: '#/components/schemas/lastCrawlTime'
        lastParseTime:
          $ref: '#/components/schemas/lastParseTime'
        lastGoodHttpStatusTime:
          $ref: '#/components/schemas/lastGoodHttpStatusTime'
        lastHttpStatus:
          $ref: '#/components/schemas/lastHttpStatus'
        contentType:
          $ref: '#/components/schemas/contentType'
        itunesId:
          $ref: '#/components/schemas/itunesId_feed'
        generator:
          $ref: '#/components/schemas/generator'
        language:
          $ref: '#/components/schemas/language'
        explicit:
          $ref: '#/components/schemas/explicit_feed'
        type:
          $ref: '#/components/schemas/type'
        medium:
          $ref: '#/components/schemas/medium_feed'
        dead:
          $ref: '#/components/schemas/dead'
        episodeCount:
          $ref: '#/components/schemas/episodeCount'
        crawlErrors:
          $ref: '#/components/schemas/crawlErrors'
        parseErrors:
          $ref: '#/components/schemas/parseErrors'
        categories:
          $ref: '#/components/schemas/categories'
        locked:
          $ref: '#/components/schemas/locked'
        imageUrlHash:
          $ref: '#/components/schemas/imageUrlHash'
        newestItemPubdate:
          $ref: '#/components/schemas/newestItemPublishTime'
    id_feed:
      description: 'The internal PodcastIndex.org Feed ID.

        '
      type: integer
      example: 75075
    language:
      description: 'The channel-level language specification of the feed.


        Languages accord with the [RSS Language Spec](https://www.rssboard.org/rss-language-codes).

        '
      type: string
      example: en-us
    guid:
      description: 'The unique identifier for the episode

        '
      type: string
      example: incomparable/batman/19
    dateCrawled:
      description: 'The time this episode was found in the feed

        '
      type: integer
      format: Unix Epoch
      example: 1598369047
    artwork:
      description: 'The seemingly best artwork we can find for the feed.


        Might be the same as `image` in most instances.

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11
    newestItemPublishTime:
      description: "The time the most recent episode in the feed was published.\n\n\nNote: some endpoints use `newestItemPubdate` while others use `newestItemPublishTime`. \nThey return the same information. See https://github.com/Podcastindex-org/api/issues/3 to track when the property name is updated.\n"
      type: integer
      format: Unix Epoch
      example: 1546399813
    enclosureLength:
      description: 'The length of the item specified by the `enclosureUrl` in bytes

        '
      type: integer
      format: bytes
      example: 26385472
    originalUrl:
      description: 'The URL of the feed, before it changed to the current `url` value.

        '
      type: string
      format: URL
      example: https://feeds.theincomparable.com/batmanuniversity
    status:
      description: 'Indicates API request status

        '
      type: string
      enum:
      - 'true'
      - 'false'
      example: 'true'
    title_feed:
      description: 'Name of the feed

        '
      type: string
      example: Batman University
    episodeType:
      description: 'The type of episode. May be null for `liveItem`.

        '
      type:
      - string
      - 'null'
      enum:
      - full
      - trailer
      - bonus
      example: full
    description_response:
      description: 'Description of the response

        '
      type: string
      example: Found matching feed
    dead:
      description: 'At some point, we give up trying to process a feed and mark it as dead.

        This is usually after 1000 errors without a successful pull/parse cycle.

        Once the feed is marked dead, we only check it once per month.

        '
      type: integer
      example: 0
    generator:
      description: 'The channel-level generator element if there is one.

        '
      type: string
      example: my podcast host
    medium_feed:
      description: 'The value of the `podcast:medium` attribute for the feed.



        See the [medium](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#medium) description in the Podcast Namespace for more information.

        '
      type: string
      example: music
    lastUpdateTime:
      description: 'The channel-level pubDate for the feed, if it’s sane.


        If not, this is a heuristic value, arrived at by analyzing other parts of the feed, like item-level pubDates.

        '
      type: integer
      format: Unix Epoch
      example: 1613394044
    chaptersUrl:
      description: 'Link to the JSON file containing the episode chapters

        '
      type:
      - string
      - 'null'
      format: URL
      example: https://studio.hypercatcher.com/chapters/podcast/http:feed.nashownotes.comrss.xml/episode/http:1322.noagendanotes.com
    contentType:
      description: 'The Content-Type header from the last time we pulled this feed from its url.

        '
      type: string
      example: application/rss+xml
    count:
      description: 'Number of items returned in request

        '
      type: integer
      example: 1
    url_feed:
      description: 'Current feed URL

        '
      type: string
      format: URL
      example: https://feeds.theincomparable.com/batmanuniversity
    enclosureUrl:
      description: 'URL/link to the episode file

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/podcast/batmanuniversity302.mp3
    author:
      description: 'The channel-level author element.



        Usually iTunes specific, but could be from another namespace if not present.

        '
      type: string
      example: Tony Sindelar
    enclosureType:
      description: 'The Content-Type for the item specified by the `enclosureUrl`

        '
      type: string
      example: audio/mp3
    transcriptUrl:
      description: 'Link to the file containing the episode transcript



        Note: in most use cases, the `transcripts` value should be used instead

        '
      type:
      - string
      - 'null'
      format: URL
      example: https://mp3s.nashownotes.com/NA-1322-Captions.srt
    categories:
      description: 'An array of categories, where the index is the Category ID and the value is the Category Name.



        All Category numbers and names are returned by the `categories/list` endpoint.

        '
      type: object
      example:
        '104': Tv
        '105': Film
        '107': Reviews
    imageUrlHash:
      description: 'A CRC32 hash of the `image` URL with the protocol (`http://`, `https://`) removed. 64bit integer.

        '
      type: integer
      example: 3969216649
    transcript:
      description: 'This tag is used to link to a transcript or closed captions file. Multiple tags can be present for multiple transcript formats.


        Detailed file format information and example files are [here](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/tags/transcript.md).

        '
      type: object
      properties:
        url:
          description: URL of the podcast transcript.
          type: string
          format: URL
          example: https://mp3s.nashownotes.com/NA-1385-Captions.srt
        type:
          description: 'Mime type of the file such as `text/plain`, `text/html`, `application/srt`, `text/vtt`, `application/json`

            '
          type: string
          enum:
          - application/json
          - application/srt
          - text/html
          - text/plain
          - text/srt
          - text/vtt
          example: application/srt
    ownerName:
      description: 'The channel-level owner:name element.



        Usually iTunes specific, but could be from another namespace if not present.

        '
      type: string
      example: The Incomparable
    locked:
      description: "Tell other podcast platforms whether they are allowed to import this feed.\nA value of 1 means that any attempt to import this feed into a new platform should be rejected.\n\nContains the value of the feed's channel-level `podcast:locked` tag where:\n\n  - 0: 'no'\n  - 1: 'yes'\n"
      type: integer
      enum:
      - 0
      - 1
      example: 0
    description_episode:
      description: 'The item-level description of the episode.



        Uses the longer of the possible fields in the feed: `<description>`, `<itunes:summary>` and `<content:encoded>`

        '
      type: string
      example: Batman University is back in session! James Thomson and Nathan Alderman join Tony for a discussion of Fox’s “Gotham.” Tune in to hear our thoughts on how a half-baked comic book show was reborn into an unmissable train wreck.
    id_episode:
      description: 'The internal PodcastIndex.org episode ID.

        '
      type: integer
      example: 16795088
    explicit_episode:
      description: "Is feed or episode marked as explicit\n\n  - 0: not marked explicit\n  - 1: marked explicit\n"
      type: integer
      enum:
      - 0
      - 1
      example: 0
    datePublished:
      description: 'The date and time the episode was published

        '
      type: integer
      format: Unix Epoch
      example: 1546399813
    item_search_byperson:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/id_episode'
        title:
          $ref: '#/components/schemas/title_episode'
        link:
          $ref: '#/components/schemas/link_feed'
        description:
          $ref: '#/components/schemas/description_episode'
        guid:
          $ref: '#/components/schemas/guid'
        datePublished:
          $ref: '#/components/schemas/datePublished'
        dateCrawled:
          $ref: '#/components/schemas/dateCrawled'
        enclosureUrl:
          $ref: '#/components/schemas/enclosureUrl'
        enclosureType:
          $ref: '#/components/schemas/enclosureType'
        enclosureLength:
          $ref: '#/components/schemas/enclosureLength'
        duration:
          $ref: '#/components/schemas/duration'
        explicit:
          $ref: '#/components/schemas/explicit_episode'
        episode:
          $ref: '#/components/schemas/episode_number'
        episodeType:
          $ref: '#/components/schemas/episodeType'
        season:
          $ref: '#/components/schemas/season'
        image:
          $ref: '#/components/schemas/image_episode'
        feedItunesId:
          $ref: '#/components/schemas/itunesId_feed'
        feedImage:
          $ref: '#/components/schemas/image_feed'
        feedId:
          $ref: '#/components/schemas/id_feed'
        feedUrl:
          $ref: '#/components/schemas/url_feed'
        feedAuthor:
          $ref: '#/components/schemas/author'
        feedTitle:
          $ref: '#/components/schemas/title_feed'
        feedLanguage:
          $ref: '#/components/schemas/language'
        chaptersUrl:
          $ref: '#/components/schemas/chaptersUrl'
        transcriptUrl:
          $ref: '#/components/schemas/transcriptUrl'
        transcripts:
          $ref: '#/components/schemas/transcripts'
    duration:
      description: 'The estimated length of the item specified by the `enclosureUrl` in seconds. Will be null for `liveItem`.

        '
      type:
      - integer
      - 'null'
      format: seconds
      example: 54
    itunesId_feed:
      description: 'The iTunes ID of this feed if there is one, and we know what it is.

        '
      type:
      - integer
      - 'null'
      example: 1441923632
    link_feed:
      description: 'The channel-level link in the feed

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/batmanuniversity/
    episodeCount:
      description: 'Number of episodes for this feed known to the index.

        '
      type: integer
      example: 19
    description_feed:
      description: 'The channel-level description



        Uses the longer of the possible fields in the feed: `<description>`, `<itunes:summary>` and `<content:encoded>`

        '
      type: string
      example: 'Batman University is a seasonal podcast about you know who. It began with an analysis of episodes of “Batman: The Animated Series” but has now expanded to cover other series, movies, and media. Your professor is Tony Sindelar.'
    feeds:
      description: 'List of feeds matching request

        '
      type: array
      items:
        $ref: '#/components/schemas/feed_search'
    transcripts:
      description: 'List of transcripts for the episode. May not be reported.

        '
      type:
      - array
      - 'null'
      items:
        $ref: '#/components/schemas/transcript'
  parameters:
    pretty:
      name: pretty
      in: query
      description: 'If present, makes the output “pretty” to help with debugging.



        Parameter shall not have a value

        '
      schema:
        type: boolean
      allowEmptyValue: true
    clean:
      name: clean
      in: query
      description: 'If present, only non-explicit feeds will be returned.

        Meaning, feeds where the `itunes:explicit` flag is set to `false`.



        Parameter shall not have a value

        '
      schema:
        type: boolean
      allowEmptyValue: true
    max:
      name: max
      in: query
      description: 'Maximum number of results to return.

        '
      schema:
        type: integer
        minimum: 1
        maximum: 1000
      example: 10
    q_person:
      name: q
      in: query
      description: 'Person search for

        '
      required: true
      schema:
        type: string
      example: adam curry
    q:
      name: q
      in: query
      description: 'Terms to search for

        '
      required: true
      schema:
        type: string
      example: batman university
    fulltext:
      name: fulltext
      in: query
      description: 'If present, return the full text value of any text fields (ex: `description`).

        If not provided, field value is truncated to 100 words.



        Parameter shall not have a value

        '
      schema:
        type: boolean
      allowEmptyValue: true
    similar:
      name: similar
      in: query
      description: 'If present, include similar matches in search response. For `search/byterm`, prioritizes title matches.

        '
      schema:
        type: boolean
      allowEmptyValue: true
    val:
      name: val
      in: query
      description: 'Only returns feeds with a `value` block of the specified type. Use `any` to return feeds with any `value` block.

        '
      schema:
        type: string
        enum:
        - any
        - lightning
        - hive
        - webmonetization
      example: ''
    aponly:
      name: aponly
      in: query
      description: 'Only returns feeds with an `itunesId`.

        '
      schema:
        type: boolean
      example: 'true'
  securitySchemes:
    User-Agent:
      type: apiKey
      in: header
      name: User-Agent
      description: 'Please identify the system/product you are using to make this request.



        *Example*: `SuperPodcastPlayer/1.3`

        '
    API-Key:
      type: apiKey
      in: header
      name: X-Auth-Key
      description: 'Your API key string



        *Example*: `UXKCGDSYGUUEVQJSYDZH`

        '
    Date:
      type: apiKey
      in: header
      name: X-Auth-Date
      description: 'The current UTC unix epoch time as a string. 3 minute window.



        This value is an integer; round down if needed. The value shall not include a decimal point.



        Value generated should match the value shown on the website https://www.epochconverter.com/.



        *Example*: `1613713388`

        '
    Authorization:
      type: apiKey
      in: header
      name: Authorization
      description: "A SHA-1 hash of the `X-Auth-Key`, the corresponding secret and the `X-Auth-Date` value concatenated as a string.\nThe resulting hash should be encoded as a hexadecimal value, two digits per byte, using lower case letters for\nthe hex digits \"a\" through \"f\".\n\n\nThe Authorization header is computed with something like this (pseudo-code):\n\n    authHeader = sha1(apiKey+apiSecret+unixTime)\n\nExample value, uses example values of `X-Auth-Key` and `X-Auth-Date` and an api secret of\n`yzJe2eE7XV-3eY576dyRZ6wXyAbndh6LUrCZ8KN|`\n\n\n*Example*: `UXKCGDSYGUUEVQJSYDZH`\n"