Skip to content
DocumentationAPI Reference

Get Several Chapters

chapters.bulk_retrieve(ChapterBulkRetrieveParams**kwargs) -> ChapterBulkRetrieveResponse
GET/chapters

Get Spotify catalog information for several audiobook chapters identified by their Spotify IDs. Chapters are only available within the US, UK, Canada, Ireland, New Zealand and Australia markets.

ParametersExpand Collapse
ids: str

A comma-separated list of the Spotify IDs. For example: ids=0IsXVP0JmcB2adSE338GkK,3ZXb8FKZGU0EHALYX6uCzU. Maximum: 50 IDs.

market: Optional[str]

An ISO 3166-1 alpha-2 country code. If a country code is specified, only content that is available in that market will be returned.
If a valid user access token is specified in the request header, the country associated with the user account will take priority over this parameter.
Note: If neither market or user country are provided, the content is considered unavailable for the client.
Users can view the country that is associated with their account in the account settings.

ReturnsExpand Collapse
class ChapterBulkRetrieveResponse:
chapters: List[Chapter]
id: str

The Spotify ID for the chapter.

Deprecatedaudio_preview_url: Optional[str]

A URL to a 30 second preview (MP3 format) of the chapter. null if not available.

audiobook: AudiobookBase

The audiobook for which the chapter belongs.

id: str

The Spotify ID for the audiobook.

authors: List[AuthorObject]

The author(s) for the audiobook.

name: Optional[str]

The name of the author.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

available_markets: List[str]

A list of the countries in which the audiobook can be played, identified by their ISO 3166-1 alpha-2 code.

copyrights: List[CopyrightObject]

The copyright statements of the audiobook.

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

The copyright text for this content.

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

description: str

A description of the audiobook. HTML tags are stripped away from this field, use html_description field in case HTML tags are needed.

explicit: bool

Whether or not the audiobook has explicit content (true = yes it does; false = no it does not OR unknown).

external_urls: ExternalURLObject

External URLs for this audiobook.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

spotify: Optional[str]

The Spotify URL for the object.

href: str

A link to the Web API endpoint providing full details of the audiobook.

html_description: str

A description of the audiobook. This field may contain HTML tags.

images: List[ImageObject]

The cover art for the audiobook in various sizes, widest first.

height: Optional[int]

The image height in pixels.

url: str

The source URL of the image.

width: Optional[int]

The image width in pixels.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

languages: List[str]

A list of the languages used in the audiobook, identified by their ISO 639 code.

media_type: str

The media type of the audiobook.

name: str

The name of the audiobook.

narrators: List[NarratorObject]

The narrator(s) for the audiobook.

name: Optional[str]

The name of the Narrator.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

publisher: str

The publisher of the audiobook.

total_chapters: int

The number of chapters in this audiobook.

type: Literal["audiobook"]

The object type.

uri: str

The Spotify URI for the audiobook.

edition: Optional[str]

The edition of the audiobook.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

chapter_number: int

The number of the chapter

description: str

A description of the chapter. HTML tags are stripped away from this field, use html_description field in case HTML tags are needed.

duration_ms: int

The chapter length in milliseconds.

explicit: bool

Whether or not the chapter has explicit content (true = yes it does; false = no it does not OR unknown).

external_urls: ExternalURLObject

External URLs for this chapter.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

spotify: Optional[str]

The Spotify URL for the object.

href: str

A link to the Web API endpoint providing full details of the chapter.

html_description: str

A description of the chapter. This field may contain HTML tags.

images: List[ImageObject]

The cover art for the chapter in various sizes, widest first.

height: Optional[int]

The image height in pixels.

url: str

The source URL of the image.

width: Optional[int]

The image width in pixels.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

is_playable: bool

True if the chapter is playable in the given market. Otherwise false.

languages: List[str]

A list of the languages used in the chapter, identified by their ISO 639-1 code.

name: str

The name of the chapter.

release_date: str

The date the chapter was first released, for example "1981-12-15". Depending on the precision, it might be shown as "1981" or "1981-12".

release_date_precision: Literal["year", "month", "day"]

The precision with which release_date value is known.

Accepts one of the following:
"year"
"month"
"day"
type: Literal["episode"]

The object type.

uri: str

The Spotify URI for the chapter.

available_markets: Optional[List[str]]

A list of the countries in which the chapter can be played, identified by their ISO 3166-1 alpha-2 code.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

restrictions: Optional[ChapterRestrictionObject]

Included in the response when a content restriction is applied.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

reason: Optional[str]

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.
  • payment_required - Payment is required to play the content item.

Additional reasons may be added in the future. Note: If you use this field, make sure that your application safely handles unknown values.

resume_point: Optional[ResumePointObject]

The user's most recent position in the chapter. Set if the supplied access token is a user token and has the scope 'user-read-playback-position'.

fully_played: Optional[bool]

Whether or not the episode has been fully played by the user.

published: Optional[bool]

The playlist's public/private status (if it should be added to the user's profile or not): true the playlist will be public, false the playlist will be private, null the playlist status is not relevant. For more about public/private status, see Working with Playlists

resume_position_ms: Optional[int]

The user's most recent position in the episode in milliseconds.

Get Several Chapters

import os
from spotted import Spotted

client = Spotted(
    access_token=os.environ.get("SPOTIFY_ACCESS_TOKEN"),  # This is the default and can be omitted
)
response = client.chapters.bulk_retrieve(
    ids="0IsXVP0JmcB2adSE338GkK,3ZXb8FKZGU0EHALYX6uCzU,0D5wENdkdwbqlrHoaJ9g29",
)
print(response.chapters)
{
  "chapters": [
    {
      "id": "5Xt5DXGzch68nYYamXrNxZ",
      "audio_preview_url": "https://p.scdn.co/mp3-preview/2f37da1d4221f40b9d1a98cd191f4d6f1646ad17",
      "audiobook": {
        "id": "id",
        "authors": [
          {
            "name": "name",
            "published": true
          }
        ],
        "available_markets": [
          "string"
        ],
        "copyrights": [
          {
            "published": true,
            "text": "text",
            "type": "type"
          }
        ],
        "description": "description",
        "explicit": true,
        "external_urls": {
          "published": true,
          "spotify": "spotify"
        },
        "href": "href",
        "html_description": "html_description",
        "images": [
          {
            "height": 300,
            "url": "https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228\n",
            "width": 300,
            "published": true
          }
        ],
        "languages": [
          "string"
        ],
        "media_type": "media_type",
        "name": "name",
        "narrators": [
          {
            "name": "name",
            "published": true
          }
        ],
        "publisher": "publisher",
        "total_chapters": 0,
        "type": "audiobook",
        "uri": "uri",
        "edition": "Unabridged",
        "published": true
      },
      "chapter_number": 1,
      "description": "We kept on ascending, with occasional periods of quick descent, but in the main always ascending. Suddenly, I became conscious of the fact that the driver was in the act of pulling up the horses in the courtyard of a vast ruined castle, from whose tall black windows came no ray of light, and whose broken battlements showed a jagged line against the moonlit sky.\n",
      "duration_ms": 1686230,
      "explicit": true,
      "external_urls": {
        "published": true,
        "spotify": "spotify"
      },
      "href": "https://api.spotify.com/v1/episodes/5Xt5DXGzch68nYYamXrNxZ",
      "html_description": "<p>We kept on ascending, with occasional periods of quick descent, but in the main always ascending. Suddenly, I became conscious of the fact that the driver was in the act of pulling up the horses in the courtyard of a vast ruined castle, from whose tall black windows came no ray of light, and whose broken battlements showed a jagged line against the moonlit sky.</p>\n",
      "images": [
        {
          "height": 300,
          "url": "https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228\n",
          "width": 300,
          "published": true
        }
      ],
      "is_playable": true,
      "languages": [
        "fr",
        "en"
      ],
      "name": "Starting Your Own Podcast: Tips, Tricks, and Advice From Anchor Creators\n",
      "release_date": "1981-12-15",
      "release_date_precision": "day",
      "type": "episode",
      "uri": "spotify:episode:0zLhl3WsOCQHbe1BPTiHgr",
      "available_markets": [
        "string"
      ],
      "published": true,
      "restrictions": {
        "published": true,
        "reason": "reason"
      },
      "resume_point": {
        "fully_played": true,
        "published": true,
        "resume_position_ms": 0
      }
    }
  ]
}
Returns Examples
{
  "chapters": [
    {
      "id": "5Xt5DXGzch68nYYamXrNxZ",
      "audio_preview_url": "https://p.scdn.co/mp3-preview/2f37da1d4221f40b9d1a98cd191f4d6f1646ad17",
      "audiobook": {
        "id": "id",
        "authors": [
          {
            "name": "name",
            "published": true
          }
        ],
        "available_markets": [
          "string"
        ],
        "copyrights": [
          {
            "published": true,
            "text": "text",
            "type": "type"
          }
        ],
        "description": "description",
        "explicit": true,
        "external_urls": {
          "published": true,
          "spotify": "spotify"
        },
        "href": "href",
        "html_description": "html_description",
        "images": [
          {
            "height": 300,
            "url": "https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228\n",
            "width": 300,
            "published": true
          }
        ],
        "languages": [
          "string"
        ],
        "media_type": "media_type",
        "name": "name",
        "narrators": [
          {
            "name": "name",
            "published": true
          }
        ],
        "publisher": "publisher",
        "total_chapters": 0,
        "type": "audiobook",
        "uri": "uri",
        "edition": "Unabridged",
        "published": true
      },
      "chapter_number": 1,
      "description": "We kept on ascending, with occasional periods of quick descent, but in the main always ascending. Suddenly, I became conscious of the fact that the driver was in the act of pulling up the horses in the courtyard of a vast ruined castle, from whose tall black windows came no ray of light, and whose broken battlements showed a jagged line against the moonlit sky.\n",
      "duration_ms": 1686230,
      "explicit": true,
      "external_urls": {
        "published": true,
        "spotify": "spotify"
      },
      "href": "https://api.spotify.com/v1/episodes/5Xt5DXGzch68nYYamXrNxZ",
      "html_description": "<p>We kept on ascending, with occasional periods of quick descent, but in the main always ascending. Suddenly, I became conscious of the fact that the driver was in the act of pulling up the horses in the courtyard of a vast ruined castle, from whose tall black windows came no ray of light, and whose broken battlements showed a jagged line against the moonlit sky.</p>\n",
      "images": [
        {
          "height": 300,
          "url": "https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228\n",
          "width": 300,
          "published": true
        }
      ],
      "is_playable": true,
      "languages": [
        "fr",
        "en"
      ],
      "name": "Starting Your Own Podcast: Tips, Tricks, and Advice From Anchor Creators\n",
      "release_date": "1981-12-15",
      "release_date_precision": "day",
      "type": "episode",
      "uri": "spotify:episode:0zLhl3WsOCQHbe1BPTiHgr",
      "available_markets": [
        "string"
      ],
      "published": true,
      "restrictions": {
        "published": true,
        "reason": "reason"
      },
      "resume_point": {
        "fully_played": true,
        "published": true,
        "resume_position_ms": 0
      }
    }
  ]
}