{
  "openapi": "3.0.1",
  "info": {
    "title": "Deezer Scraper - Tracks, Albums, Artists, Playlists & Lyrics",
    "description": "Scrape Deezer by keyword or URL. Extract tracks, albums, artists, playlists, lyrics, radios, charts and public profiles. Get BPM, ISRC, contributors, release dates, availability, full tracklists, artist top tracks and discographies.",
    "version": "1.0",
    "x-build-id": "WoaZcYbx7Zft2B2am"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~deezer-com-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-deezer-com-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~deezer-com-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-deezer-com-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~deezer-com-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-deezer-com-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Choose 'search' to query the catalog by keyword (or read the charts), or 'url' to scrape pasted Deezer links: track, album, artist, playlist, radio, genre and public user-profile pages."
          },
          "queries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Keywords to search for, one search per row (e.g. \"daft punk\"). Combined with Entity type below.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Entity type",
            "enum": [
              "track",
              "album",
              "artist",
              "playlist",
              "user",
              "radio"
            ],
            "type": "string",
            "description": "What to search for: tracks (default), albums, artists, playlists, radios, or public user profiles.",
            "default": "track"
          },
          "source": {
            "title": "Source",
            "enum": [
              "search",
              "chart"
            ],
            "type": "string",
            "description": "Search reads keyword results. Charts reads Deezer's global or per-genre charts for the entity type above (charts cover tracks, albums, artists and playlists).",
            "default": "search"
          },
          "chartGenreId": {
            "title": "Chart genre id",
            "minimum": 0,
            "type": "integer",
            "description": "Deezer genre id whose chart to read (0 = all genres). Find ids via a genre URL like https://www.deezer.com/en/genre/116 - the number at the end is the id.",
            "default": 0
          },
          "urls": {
            "title": "Deezer URLs",
            "type": "array",
            "description": "Paste track, album, artist, playlist, radio, genre, chart or public user-profile URLs (e.g. https://www.deezer.com/track/3135556 or https://www.deezer.com/playlist/3155776842). Playlists and albums return the collection record plus one row per track.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeArtistReleases": {
            "title": "Artist: also return their albums",
            "type": "boolean",
            "description": "When an artist link is pasted, also return one album row per release in their discography (paged). Off by default.",
            "default": false
          },
          "includeUserCollections": {
            "title": "User: also return their public playlists",
            "type": "boolean",
            "description": "When a user-profile link is pasted, also return one playlist row per public playlist they published. Off by default.",
            "default": false
          },
          "excludeExplicit": {
            "title": "Exclude explicit tracks",
            "type": "boolean",
            "description": "Drop records flagged explicit. Off by default.",
            "default": false
          },
          "minDurationSec": {
            "title": "Min duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only records at least this many seconds long (tracks, and track rows of playlists/albums). Leave 0 to disable.",
            "default": 0
          },
          "maxDurationSec": {
            "title": "Max duration (seconds)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only records at most this many seconds long. Leave 0 to disable.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance",
              "title",
              "duration"
            ],
            "type": "string",
            "description": "Relevance keeps the catalog's own ranking (default). Title and Duration sort client-side, ascending.",
            "default": "relevance"
          },
          "fetchDetails": {
            "title": "Fetch full track detail (search mode)",
            "type": "boolean",
            "description": "In search mode, also open each track's own endpoint for BPM, the full contributor list, ISRC, release date, disk and track positions, and the per-country availability list. Adds one request per track and a per-track surcharge. Off by default.",
            "default": false
          },
          "includeLyrics": {
            "title": "Include lyrics (any mode)",
            "type": "boolean",
            "description": "Also return each track's lyrics: plain text, time-synced LRC lines (when Deezer has them), songwriters and publisher. Works in every mode, including album, playlist and chart track rows. Lyrics are licensed per country, so the connection's exit country decides which tracks have them. Read in batches of 25 tracks, so it adds very little run time. Charged per track where lyrics were found; tracks without lyrics are not charged. Off by default.",
            "default": false
          },
          "lyricsWordTiming": {
            "title": "Lyrics: word-level timing (karaoke)",
            "type": "boolean",
            "description": "With Include lyrics on, also return per-word start and end times (milliseconds) for tracks where Deezer has them, in the lyricsWords field: one entry per line, each with its words. Most popular tracks have word timing. No extra charge; rows get larger. Off by default.",
            "default": false
          },
          "maxItems": {
            "title": "Max records",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of records to return across the whole run. This is the run's cap. Use 0 for unlimited.",
            "default": 20
          },
          "maxPages": {
            "title": "Max result pages per keyword or link",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of result pages read per keyword or link. 0 means no limit, which is the default: the run then stops only at Max records, at the end of the results, or when a page returns nothing new.",
            "default": 0
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large crawl that stopped part-way: this run skips records already collected there and returns only the remaining ones. For recurring monitoring of the same search instead, use Incremental changes below (the two are mutually exclusive once Incremental has saved state)."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns every matching record as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED records, which is how a fan-count jump or a track-listing change is spotted. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed).",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the mode, keywords, links and filters, so different searches never mix state with each other."
          },
          "emitUnchanged": {
            "title": "Emit unchanged records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max records capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you want removal tracking.",
            "default": false
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "The catalog API is open and reads fine on the default connection; a residential connection is available if you want one for large runs.",
            "default": {
              "useApifyProxy": true
            }
          },
          "mcpConnectors": {
            "title": "MCP connectors",
            "type": "array",
            "description": "Optional. Each selected connector receives a condensed summary per record; the full record always stays in the dataset. Leave empty to skip."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which record pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max records per connector export",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on records written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}