Spotify Shows API

The Shows API from Spotify — 5 operation(s) for shows.

Operations 7

GET /shows/{id} Get Show #
GET /shows Get Several Shows #
GET /shows/{id}/episodes Get Show Episodes #
GET /me/shows Get User's Saved Shows #
PUT /me/shows Save Shows for Current User #
DELETE /me/shows Remove User's Saved Shows #
GET /me/shows/contains Check User's Saved Shows #

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/spotify-shows-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

spotify-shows-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: You can use Spotify's Web API to discover music and podcasts, manage your Spotify library, control audio playback, and much more.
  version: 1.0.0
  title: Spotify Web Shows API
  termsOfService: https://developer.spotify.com/terms/
  contact:
    name: Spotify for Developers Community
    url: https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer
servers:
- url: https://api.spotify.com/v1
tags:
- name: Shows
paths:
  /shows/{id}:
    get:
      tags:
      - Shows
      operationId: get-a-show
      x-spotify-policy-list:
        $ref: '#/components/x-spotify-policy/metadataPolicyList'
      summary: Get Show
      description: 'Get Spotify catalog information for a single show identified by its

        unique Spotify ID.'
      parameters:
      - $ref: '#/components/parameters/QueryMarket'
      - $ref: '#/components/parameters/PathShowId'
      responses:
        '200':
          $ref: '#/components/responses/OneShow'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - oauth_2_0:
        - user-read-playback-position
  /shows:
    get:
      deprecated: true
      tags:
      - Shows
      operationId: get-multiple-shows
      x-spotify-policy-list:
        $ref: '#/components/x-spotify-policy/metadataPolicyList'
      summary: Get Several Shows
      description: Get Spotify catalog information for several shows based on their Spotify IDs.
      parameters:
      - $ref: '#/components/parameters/QueryMarket'
      - $ref: '#/components/parameters/QueryShowIds'
      responses:
        '200':
          $ref: '#/components/responses/ManySimplifiedShows'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - oauth_2_0: []
  /shows/{id}/episodes:
    get:
      tags:
      - Shows
      operationId: get-a-shows-episodes
      x-spotify-policy-list:
        $ref: '#/components/x-spotify-policy/metadataPolicyList'
      summary: Get Show Episodes
      description: Get Spotify catalog information about an show’s episodes. Optional parameters can be used to limit the number of episodes returned.
      parameters:
      - $ref: '#/components/parameters/PathShowId'
      - $ref: '#/components/parameters/QueryMarket'
      - $ref: '#/components/parameters/QueryLimit'
      - $ref: '#/components/parameters/QueryOffset'
      responses:
        '200':
          $ref: '#/components/responses/PagingSimplifiedEpisodeObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - oauth_2_0:
        - user-read-playback-position
  /me/shows:
    get:
      tags:
      - Shows
      operationId: get-users-saved-shows
      summary: Get User's Saved Shows
      description: Get a list of shows saved in the current Spotify user's library. Optional parameters can be used to limit the number of shows returned.
      parameters:
      - $ref: '#/components/parameters/QueryLimit'
      - $ref: '#/components/parameters/QueryOffset'
      responses:
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '200':
          $ref: '#/components/responses/PagingSavedShowObject'
      security:
      - oauth_2_0:
        - user-library-read
    put:
      deprecated: true
      tags:
      - Shows
      operationId: save-shows-user
      summary: Save Shows for Current User
      description: 'Save one or more shows to current Spotify user''s library.


        **Note:** This endpoint is deprecated. Use Save Items to Library instead.'
      parameters:
      - $ref: '#/components/parameters/QueryShowIds'
      responses:
        '200':
          description: Show saved
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - oauth_2_0:
        - user-library-modify
    delete:
      deprecated: true
      tags:
      - Shows
      operationId: remove-shows-user
      summary: Remove User's Saved Shows
      description: 'Delete one or more shows from current Spotify user''s library.


        **Note:** This endpoint is deprecated. Use Remove Items from Library instead.'
      parameters:
      - $ref: '#/components/parameters/QueryShowIds'
      - $ref: '#/components/parameters/QueryMarket'
      responses:
        '200':
          description: Show removed
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - oauth_2_0:
        - user-library-modify
  /me/shows/contains:
    get:
      tags:
      - Shows
      operationId: check-users-saved-shows
      summary: Check User's Saved Shows
      deprecated: true
      description: 'Check if one or more shows is already saved in the current Spotify user''s library.


        **Note:** This endpoint is deprecated. Use Check User''s Saved Items instead.'
      parameters:
      - $ref: '#/components/parameters/QueryShowIds'
      responses:
        '200':
          $ref: '#/components/responses/ArrayOfBooleans'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
      - oauth_2_0:
        - user-library-read
components:
  schemas:
    EpisodeBase:
      type: object
      required:
      - audio_preview_url
      - description
      - html_description
      - duration_ms
      - explicit
      - external_urls
      - href
      - id
      - images
      - is_externally_hosted
      - is_playable
      - languages
      - name
      - release_date
      - release_date_precision
      - type
      - uri
      properties:
        audio_preview_url:
          deprecated: true
          type:
          - string
          - 'null'
          example: https://p.scdn.co/mp3-preview/2f37da1d4221f40b9d1a98cd191f4d6f1646ad17
          description: 'A URL to a 30 second preview (MP3 format) of the episode. `null` if not available.

            '
          x-spotify-policy-list:
          - $ref: '#/components/x-spotify-policy/policies/StandalonePreview'
        description:
          type: string
          example: 'A Spotify podcast sharing fresh insights on important topics of the moment—in a way only Spotify can. You’ll hear from experts in the music, podcast and tech industries as we discover and uncover stories about our work and the world around us.

            '
          description: 'A description of the episode. HTML tags are stripped away from this field, use `html_description` field in case HTML tags are needed.

            '
        html_description:
          type: string
          example: '<p>A Spotify podcast sharing fresh insights on important topics of the moment—in a way only Spotify can. You’ll hear from experts in the music, podcast and tech industries as we discover and uncover stories about our work and the world around us.</p>

            '
          description: 'A description of the episode. This field may contain HTML tags.

            '
        duration_ms:
          type: integer
          example: 1686230
          description: 'The episode length in milliseconds.

            '
        explicit:
          type: boolean
          description: 'Whether or not the episode has explicit content (true = yes it does; false = no it does not OR unknown).

            '
        external_urls:
          allOf:
          - $ref: '#/components/schemas/ExternalUrlObject'
          description: 'External URLs for this episode.

            '
        href:
          type: string
          example: https://api.spotify.com/v1/episodes/5Xt5DXGzch68nYYamXrNxZ
          description: 'A link to the Web API endpoint providing full details of the episode.

            '
        id:
          type: string
          example: 5Xt5DXGzch68nYYamXrNxZ
          description: 'The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the episode.

            '
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageObject'
          description: 'The cover art for the episode in various sizes, widest first.

            '
        is_externally_hosted:
          type: boolean
          description: 'True if the episode is hosted outside of Spotify''s CDN.

            '
        is_playable:
          type: boolean
          description: 'True if the episode is playable in the given market. Otherwise false.

            '
        language:
          type: string
          deprecated: true
          example: en
          description: 'The language used in the episode, identified by a [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code. This field is deprecated and might be removed in the future. Please use the `languages` field instead.

            '
        languages:
          type: array
          items:
            type: string
          example:
          - fr
          - en
          description: 'A list of the languages used in the episode, identified by their [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639) code.

            '
        name:
          type: string
          example: 'Starting Your Own Podcast: Tips, Tricks, and Advice From Anchor Creators

            '
          description: 'The name of the episode.

            '
        release_date:
          type: string
          example: '1981-12-15'
          description: 'The date the episode was first released, for example `"1981-12-15"`. Depending on the precision, it might be shown as `"1981"` or `"1981-12"`.

            '
        release_date_precision:
          type: string
          example: day
          enum:
          - year
          - month
          - day
          description: 'The precision with which `release_date` value is known.

            '
        resume_point:
          allOf:
          - $ref: '#/components/schemas/ResumePointObject'
          description: 'The user''s most recent position in the episode. Set if the supplied access token is a user token and has the scope ''user-read-playback-position''.

            '
        type:
          type: string
          enum:
          - episode
          description: 'The object type.

            '
        uri:
          type: string
          example: spotify:episode:0zLhl3WsOCQHbe1BPTiHgr
          description: 'The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the episode.

            '
        restrictions:
          allOf:
          - $ref: '#/components/schemas/EpisodeRestrictionObject'
          description: 'Included in the response when a content restriction is applied.

            '
    PagingSavedShowObject:
      type: object
      x-spotify-docs-type: PagingShowObject
      allOf:
      - $ref: '#/components/schemas/PagingObject'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/SavedShowObject'
    EpisodeRestrictionObject:
      type: object
      x-spotify-docs-type: EpisodeRestrictionObject
      properties:
        reason:
          type: string
          description: 'The reason for the restriction. Supported values:

            - `market` - The content item is not available in the given market.

            - `product` - The content item is not available for the user''s subscription type.

            - `explicit` - The content item is explicit and the user''s account is set to not play explicit content.


            Additional reasons may be added in the future.

            **Note**: If you use this field, make sure that your application safely handles unknown values.

            '
    SimplifiedEpisodeObject:
      x-spotify-docs-type: SimplifiedEpisodeObject
      type: object
      allOf:
      - $ref: '#/components/schemas/EpisodeBase'
      - type: object
    SimplifiedShowObject:
      x-spotify-docs-type: SimplifiedShowObject
      allOf:
      - $ref: '#/components/schemas/ShowBase'
      - type: object
    ErrorObject:
      type: object
      x-spotify-docs-type: ErrorObject
      required:
      - status
      - message
      properties:
        status:
          type: integer
          minimum: 400
          maximum: 599
          description: 'The HTTP status code (also returned in the response header; see [Response Status Codes](/documentation/web-api/concepts/api-calls#response-status-codes) for more information).

            '
        message:
          type: string
          description: 'A short description of the cause of the error.

            '
    PagingObject:
      type: object
      x-spotify-docs-type: PagingObject
      required:
      - href
      - items
      - limit
      - next
      - offset
      - previous
      - total
      properties:
        href:
          type: string
          example: 'https://api.spotify.com/v1/me/shows?offset=0&limit=20

            '
          description: 'A link to the Web API endpoint returning the full result of the request

            '
        limit:
          type: integer
          example: 20
          description: 'The maximum number of items in the response (as set in the query or by default).

            '
        next:
          type:
          - string
          - 'null'
          example: https://api.spotify.com/v1/me/shows?offset=1&limit=1
          description: 'URL to the next page of items. ( `null` if none)

            '
        offset:
          type: integer
          example: 0
          description: 'The offset of the items returned (as set in the query or by default)

            '
        previous:
          type:
          - string
          - 'null'
          example: https://api.spotify.com/v1/me/shows?offset=1&limit=1
          description: 'URL to the previous page of items. ( `null` if none)

            '
        total:
          type: integer
          example: 4
          description: 'The total number of items available to return.

            '
    ShowObject:
      x-spotify-docs-type: ShowObject
      allOf:
      - $ref: '#/components/schemas/ShowBase'
      - type: object
        required:
        - episodes
        properties:
          episodes:
            type: object
            allOf:
            - $ref: '#/components/schemas/PagingSimplifiedEpisodeObject'
            description: 'The episodes of the show.

              '
    PagingSimplifiedEpisodeObject:
      type: object
      x-spotify-docs-type: PagingEpisodeObject
      allOf:
      - $ref: '#/components/schemas/PagingObject'
      - type: object
        properties:
          items:
            type: array
            items:
              $ref: '#/components/schemas/SimplifiedEpisodeObject'
    SavedShowObject:
      type: object
      x-spotify-docs-type: SavedShowObject
      properties:
        added_at:
          type: string
          format: date-time
          x-spotify-docs-type: Timestamp
          description: 'The date and time the show was saved.

            Timestamps are returned in ISO 8601 format as Coordinated Universal Time (UTC) with a zero offset: YYYY-MM-DDTHH:MM:SSZ.

            If the time is imprecise (for example, the date/time of an album release), an additional field indicates the precision; see for example, release_date in an album object.

            '
        show:
          allOf:
          - $ref: '#/components/schemas/SimplifiedShowObject'
          description: Information about the show.
    ShowBase:
      type: object
      required:
      - available_markets
      - copyrights
      - description
      - explicit
      - external_urls
      - href
      - html_description
      - id
      - images
      - is_externally_hosted
      - languages
      - media_type
      - name
      - publisher
      - total_episodes
      - type
      - uri
      properties:
        available_markets:
          deprecated: true
          type: array
          items:
            type: string
          description: 'A list of the countries in which the show can be played, identified by their [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code.

            '
        copyrights:
          type: array
          items:
            $ref: '#/components/schemas/CopyrightObject'
          description: 'The copyright statements of the show.

            '
        description:
          type: string
          description: 'A description of the show. HTML tags are stripped away from this field, use `html_description` field in case HTML tags are needed.

            '
        html_description:
          type: string
          description: 'A description of the show. This field may contain HTML tags.

            '
        explicit:
          type: boolean
          description: 'Whether or not the show has explicit content (true = yes it does; false = no it does not OR unknown).

            '
        external_urls:
          allOf:
          - $ref: '#/components/schemas/ExternalUrlObject'
          description: 'External URLs for this show.

            '
        href:
          type: string
          description: 'A link to the Web API endpoint providing full details of the show.

            '
        id:
          type: string
          description: 'The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the show.

            '
        images:
          type: array
          items:
            $ref: '#/components/schemas/ImageObject'
          description: 'The cover art for the show in various sizes, widest first.

            '
        is_externally_hosted:
          type: boolean
          description: 'True if all of the shows episodes are hosted outside of Spotify''s CDN. This field might be `null` in some cases.

            '
        languages:
          type: array
          items:
            type: string
          description: 'A list of the languages used in the show, identified by their [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code.

            '
        media_type:
          type: string
          description: 'The media type of the show.

            '
        name:
          type: string
          description: 'The name of the episode.

            '
        publisher:
          deprecated: true
          type: string
          description: 'The publisher of the show.

            '
        type:
          type: string
          enum:
          - show
          description: 'The object type.

            '
        uri:
          type: string
          description: 'The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the show.

            '
        total_episodes:
          type: integer
          description: 'The total number of episodes in the show.

            '
    CopyrightObject:
      type: object
      x-spotify-docs-type: CopyrightObject
      properties:
        text:
          type: string
          description: 'The copyright text for this content.

            '
        type:
          type: string
          description: 'The type of copyright: `C` = the copyright, `P` = the sound recording (performance) copyright.

            '
    ExternalUrlObject:
      type: object
      x-spotify-docs-type: ExternalUrlObject
      properties:
        spotify:
          type: string
          description: 'The [Spotify URL](/documentation/web-api/concepts/spotify-uris-ids) for the object.

            '
    ImageObject:
      type: object
      x-spotify-docs-type: ImageObject
      required:
      - url
      - height
      - width
      properties:
        url:
          type: string
          example: 'https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228

            '
          description: 'The source URL of the image.

            '
        height:
          type:
          - integer
          - 'null'
          example: 300
          description: 'The image height in pixels.

            '
        width:
          type:
          - integer
          - 'null'
          example: 300
          description: 'The image width in pixels.

            '
    ResumePointObject:
      type: object
      x-spotify-docs-type: ResumePointObject
      properties:
        fully_played:
          type: boolean
          description: 'Whether or not the episode has been fully played by the user.

            '
        resume_position_ms:
          type: integer
          description: 'The user''s most recent position in the episode in milliseconds.

            '
  responses:
    Unauthorized:
      description: 'Bad or expired token. This can happen if the user revoked a token or

        the access token has expired. You should re-authenticate the user.

        '
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            properties:
              error:
                $ref: '#/components/schemas/ErrorObject'
    TooManyRequests:
      description: 'The app has exceeded its rate limits.

        '
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            properties:
              error:
                $ref: '#/components/schemas/ErrorObject'
    ArrayOfBooleans:
      description: Array of booleans
      content:
        application/json:
          schema:
            type: array
            example:
            - false
            - true
            items:
              type: boolean
    OneShow:
      description: A show
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ShowObject'
    PagingSavedShowObject:
      description: Pages of shows
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PagingSavedShowObject'
    Forbidden:
      description: 'Bad OAuth request (wrong consumer key, bad nonce, expired

        timestamp...). Unfortunately, re-authenticating the user won''t help here.

        '
      content:
        application/json:
          schema:
            type: object
            required:
            - error
            properties:
              error:
                $ref: '#/components/schemas/ErrorObject'
    PagingSimplifiedEpisodeObject:
      description: Pages of episodes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PagingSimplifiedEpisodeObject'
    ManySimplifiedShows:
      description: A set of shows
      content:
        application/json:
          schema:
            type: object
            required:
            - shows
            properties:
              shows:
                type: array
                items:
                  $ref: '#/components/schemas/SimplifiedShowObject'
  x-spotify-policy:
    metadataPolicyList:
    - $ref: '#/components/x-spotify-policy/policies/Downloading'
    - $ref: '#/components/x-spotify-policy/policies/VisualAlteration'
    - $ref: '#/components/x-spotify-policy/policies/Attribution'
  parameters:
    QueryOffset:
      name: offset
      required: false
      in: query
      schema:
        title: Offset
        description: 'The index of the first item to return. Default: 0 (the first item). Use with limit to get the next set of items.

          '
        default: 0
        example: 5
        type: integer
    QueryMarket:
      name: market
      required: false
      in: query
      schema:
        title: Market
        description: "An [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).\n  If a country code is specified, only content that is available in that market will be returned.<br/>\n  If a valid user access token is specified in the request header, the country associated with\n  the user account will take priority over this parameter.<br/>\n  _**Note**: If neither market or user country are provided, the content is considered unavailable for the client._<br/>\n  Users can view the country that is associated with their account in the [account settings](https://www.spotify.com/account/overview/).\n"
        example: ES
        type: string
    QueryLimit:
      name: limit
      required: false
      in: query
      schema:
        title: Limit
        description: 'The maximum number of items to return. Default: 20. Minimum: 1. Maximum: 50.

          '
        default: 20
        example: 10
        type: integer
        minimum: 0
        maximum: 50
    PathShowId:
      name: id
      required: true
      in: path
      schema:
        title: Spotify Show ID
        description: 'The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids)

          for the show.

          '
        example: 38bS44xjbVVZ3No3ByF1dJ
        type: string
    QueryShowIds:
      name: ids
      required: true
      in: query
      schema:
        title: Ids
        description: 'A comma-separated list of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids) for the shows. Maximum: 50 IDs.

          '
        example: 5CfCWKI5pZ28U0uOzXkDHe,5as3aKmN2k11yfDDDSrvaZ
        type: string
  securitySchemes:
    oauth_2_0:
      type: oauth2
      description: Spotify supports OAuth 2.0 for authenticating all API requests.
      flows:
        authorizationCode:
          authorizationUrl: https://accounts.spotify.com/authorize
          tokenUrl: https://accounts.spotify.com/api/token
          scopes:
            app-remote-control: 'Communicate with the Spotify app on your device.

              '
            playlist-read-private: 'Access your private playlists.

              '
            playlist-read-collaborative: 'Access your collaborative playlists.

              '
            playlist-modify-public: 'Manage your public playlists.

              '
            playlist-modify-private: 'Manage your private playlists.

              '
            user-library-read: 'Access your saved content.

              '
            user-library-modify: 'Manage your saved content.

              '
            user-read-private: 'Access your subscription details.

              '
            user-read-email: 'Get your real email address.

              '
            user-follow-read: 'Access your followers and who you are following.

              '
            user-follow-modify: 'Manage your saved content.

              '
            user-top-read: 'Read your top artists and content.

              '
            user-read-playback-position: 'Read your position in content you have played.

              '
            user-read-playback-state: 'Read your currently playing content and Spotify Connect devices information.

              '
            user-read-recently-played: 'Access your recently played items.

              '
            user-read-currently-playing: 'Read your currently playing content.

              '
            user-modify-playback-state: 'Control playback on your Spotify clients and Spotify Connect devices.

              '
            ugc-image-upload: 'Upload images to Spotify on your behalf.

              '
            streaming: 'Play content and control playback on your other devices.

              '