TIDAL Search API
Search the TIDAL catalog with personalized search results, type-ahead suggestions, and per-user search history. Supports filtering by entity type and respects user locale and country.
Search the TIDAL catalog with personalized search results, type-ahead suggestions, and per-user search history. Supports filtering by entity type and respects user locale and country.
openapi: 3.0.1
info:
title: TIDAL Search API
version: 1.10.14
description: Search the TIDAL catalog with personalized search results, suggestions, and per-user search history.
x-source: https://tidal-music.github.io/tidal-api-reference/tidal-api-oas.json
servers:
- url: https://openapi.tidal.com/v2
description: Production
paths:
/searchHistoryEntries:
get:
description: Retrieves multiple searchHistoryEntries by available filters, or without if applicable.
parameters:
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: Opaque identifier for a search history entry (e.g. `MjcyNjg5OTAjamF5`)
in: query
name: filter[id]
required: false
schema:
type: array
items:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchHistoryEntries_Multi_Resource_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get multiple searchHistoryEntries.
tags:
- searchHistoryEntries
x-path-item-properties:
required-access-tier: INTERNAL
/searchHistoryEntries/{id}:
delete:
description: Deletes existing searchHistoryEntrie.
parameters:
- description: Opaque identifier for a search history entry
example: MjcyNjg5OTAjamF5
in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/IdempotencyKey'
responses:
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'409':
$ref: '#/components/responses/Idempotency409Response'
'415':
$ref: '#/components/responses/Default415Response'
'422':
$ref: '#/components/responses/Idempotency422Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE:
- search.write
- w_usr
summary: Delete single searchHistoryEntrie.
tags:
- searchHistoryEntries
x-path-item-properties:
required-access-tier: INTERNAL
/searchResults/{id}:
get:
description: Retrieves single searchResult by id.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: albums,
artists, playlists, topHits, tracks, videos'
example: albums
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: albums
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Single_Resource_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get single searchResult.
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchResults/{id}/relationships/albums:
get:
description: Retrieves albums relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: albums'
example: albums
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: albums
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get albums relationship ("to-many").
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchResults/{id}/relationships/artists:
get:
description: Retrieves artists relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: artists'
example: artists
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: artists
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get artists relationship ("to-many").
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchResults/{id}/relationships/playlists:
get:
description: Retrieves playlists relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: playlists'
example: playlists
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: playlists
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get playlists relationship ("to-many").
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchResults/{id}/relationships/topHits:
get:
description: Retrieves topHits relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: topHits'
example: topHits
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: topHits
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get topHits relationship ("to-many").
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchResults/{id}/relationships/tracks:
get:
description: Retrieves tracks relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: tracks'
example: tracks
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: tracks
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get tracks relationship ("to-many").
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchResults/{id}/relationships/videos:
get:
description: Retrieves videos relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: videos'
example: videos
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: videos
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchResults_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE:
- r_usr
- search.read
summary: Get videos relationship ("to-many").
tags:
- searchResults
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchSuggestions/{id}:
get:
description: Retrieves single searchSuggestion by id.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: directHits,
history'
example: directHits
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: directHits
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchSuggestions_Single_Resource_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get single searchSuggestion.
tags:
- searchSuggestions
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchSuggestions/{id}/relationships/directHits:
get:
description: Retrieves directHits relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: directHits'
example: directHits
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: directHits
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchSuggestions_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Client_Credentials: []
- Authorization_Code_PKCE: []
summary: Get directHits relationship ("to-many").
tags:
- searchSuggestions
x-path-item-properties:
required-access-tier: THIRD_PARTY
/searchSuggestions/{id}/relationships/history:
get:
description: Retrieves history relationship.
parameters:
- description: Search query string used as the resource identifier
example: hello
in: path
name: id
required: true
schema:
type: string
- description: 'Explicit filter. Valid values: INCLUDE or EXCLUDE'
example: INCLUDE
in: query
name: explicitFilter
required: false
schema:
type: string
enum:
- INCLUDE
- EXCLUDE
default: INCLUDE
- description: ISO 3166-1 alpha-2 country code
example: US
in: query
name: countryCode
required: false
schema:
type: string
- description: 'Allows the client to customize which related resources should be returned. Available options: history'
example: history
in: query
name: include
required: false
schema:
type: array
items:
type: string
example: history
- description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not specified
in: query
name: page[cursor]
required: false
schema:
type: string
responses:
'200':
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/SearchSuggestions_Multi_Relationship_Data_Document'
description: Successful response
'400':
$ref: '#/components/responses/Default400Response'
'404':
$ref: '#/components/responses/Default404Response'
'405':
$ref: '#/components/responses/Default405Response'
'406':
$ref: '#/components/responses/Default406Response'
'415':
$ref: '#/components/responses/Default415Response'
'429':
$ref: '#/components/responses/Default429Response'
'500':
$ref: '#/components/responses/Default500Response'
'503':
$ref: '#/components/responses/Default503Response'
security:
- Authorization_Code_PKCE: []
summary: Get history relationship ("to-many").
tags:
- searchSuggestions
x-path-item-properties:
required-access-tier: INTERNAL
components:
schemas:
Playlists_Attributes:
required:
- accessType
- bounded
- createdAt
- externalLinks
- lastModifiedAt
- name
- numberOfFollowers
- playlistType
type: object
properties:
accessType:
type: string
description: Access type
example: PUBLIC
enum:
- PUBLIC
- UNLISTED
bounded:
type: boolean
description: Indicates if the playlist has a duration and set number of tracks
createdAt:
type: string
description: Datetime of playlist creation (ISO 8601)
format: date-time
description:
type: string
description: Playlist description
duration:
type: string
description: Duration of playlist (ISO 8601)
example: P30M5S
externalLinks:
type: array
items:
$ref: '#/components/schemas/External_Link'
lastModifiedAt:
type: string
description: Datetime of last modification of the playlist (ISO 8601)
format: date-time
name:
minLength: 1
type: string
description: Playlist name
numberOfFollowers:
type: integer
description: The amount of followers of the playlist
format: int32
numberOfItems:
type: integer
description: Number of items in the playlist
format: int32
playlistType:
type: string
description: The type of the playlist
enum:
- EDITORIAL
- USER
- MIX
- ARTIST
PlayQueues_Future_Multi_Relationship_Data_Document:
required:
- links
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/PlayQueues_Future_Resource_Identifier'
included:
$ref: '#/components/schemas/Included'
links:
$ref: '#/components/schemas/Links'
ManualArtistClaims_Resource_Object:
required:
- id
- type
type: object
properties:
attributes:
$ref: '#/components/schemas/ManualArtistClaims_Attributes'
id:
type: string
description: Resource id
example: '12345'
type:
minLength: 1
type: string
description: Resource type
example: tracks
Playlists_Resource_Object:
required:
- id
- type
type: object
properties:
attributes:
$ref: '#/components/schemas/Playlists_Attributes'
id:
type: string
description: Resource id
example: '12345'
relationships:
$ref: '#/components/schemas/Playlists_Relationships'
type:
minLength: 1
type: string
description: Resource type
example: tracks
TracksMetadataStatus_Resource_Object:
required:
- id
- type
type: object
properties:
attributes:
$ref: '#/components/schemas/TracksMetadataStatus_Attributes'
id:
type: string
description: Resource id
example: '12345'
type:
minLength: 1
type: string
description: Resource type
example: tracks
StripeConnections_Attributes:
required:
- status
type: object
properties:
createdAt:
type: string
description: Timestamp when the connection was created
format: date-time
externalLinks:
type: array
description: External links for Stripe connection
items:
$ref: '#/components/schemas/External_Link'
lastModifiedAt:
type: string
description: Timestamp when the connection was last modified
format: date-time
status:
minLength: 1
type: string
description: Current status of this Stripe connection
enum:
- PENDING_REQUIREMENTS
- UNDER_REVIEW
- ACCEPTED
- REJECTED
- SUSPENDED
VideoManifests_Attributes:
type: object
properties:
drmData:
$ref: '#/components/schemas/DrmData'
link:
$ref: '#/components/schemas/Link_Object'
previewReason:
type: string
description: Why a preview is served instead of the full video
enum:
- FULL_REQUIRES_SUBSCRIPTION
- FULL_REQUIRES_PURCHASE
- FULL_REQUIRES_HIGHER_ACCESS_TIER
videoPresentation:
type: string
description: Video presentation
enum:
- FULL
- PREVIEW
UserOfflineMixes_Attributes:
type: object
Providers_Attributes:
required:
- name
type: object
properties:
name:
type: string
description: Provider name
example: Columbia/Legacy
Genres_Resource_Object:
required:
- id
- type
type: objec
# --- truncated at 32 KB (163 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tidal/refs/heads/main/openapi/tidal-search-api-openapi.yml