{
  "openapi": "3.0.1",
  "info": {
    "title": "Spotify Scraper: Artists, Tracks, Playlists, Podcasts",
    "description": "Scrape Spotify artists, tracks, albums, playlists, podcasts and curator profiles by link, search or ISRC. Play counts, monthly listeners, followers, ISRC, UPC, credits, playlist followers, podcast ratings. $4 per 1,000 results.",
    "version": "0.0",
    "x-build-id": "cXkv3JxDmsl7YZAlB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/epicscrapers~spotify-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-epicscrapers-spotify-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/epicscrapers~spotify-scraper/runs": {
      "post": {
        "operationId": "runs-sync-epicscrapers-spotify-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/epicscrapers~spotify-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-epicscrapers-spotify-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",
        "properties": {
          "startUrls": {
            "title": "Spotify links, IDs, ISRCs or UPCs",
            "type": "array",
            "description": "One per line: artist, album, track, playlist, podcast (show), episode or user profile URLs (e.g. https://open.spotify.com/artist/3TVXtAsR1Inumwj472S9r4), spotify: URIs, bare IDs, ISRCs (e.g. USUG11904206) or album UPCs. Each link gives one row with all its data.",
            "items": {
              "type": "string"
            }
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search Spotify for, one per line (e.g. lofi study, drake). Each term gives up to \"Max results per search term\" rows of the type below.",
            "items": {
              "type": "string"
            }
          },
          "searchType": {
            "title": "Search for",
            "enum": [
              "tracks",
              "artists",
              "albums",
              "playlists",
              "podcasts",
              "episodes",
              "profiles"
            ],
            "type": "string",
            "description": "What the search terms look for.",
            "default": "tracks"
          },
          "maxResultsPerSearch": {
            "title": "Max results per search term",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stop after this many rows per search term. Spotify returns about 200 results per query; above that the Actor adds related queries (\"lofi playlist\", \"best lofi\", \"lofi 2026\"…) to find more.",
            "default": 50
          },
          "scrapeDetails": {
            "title": "Open every search result",
            "type": "boolean",
            "description": "Open each search result for its full data: play counts, monthly listeners, playlist followers, podcast ratings. Turn off for quick lists (name, link, artist, owner) without these numbers.",
            "default": true
          },
          "maxItemsPerResult": {
            "title": "Max tracks or episodes per result",
            "minimum": 0,
            "type": "integer",
            "description": "How many tracks to list in each album and playlist row (with play counts and dates added), episodes in each podcast row (newest first) and playlists in each user row. Included in the result price. 0 lists none.",
            "default": 1000
          },
          "includeIsrc": {
            "title": "ISRC, UPC and label",
            "type": "boolean",
            "description": "Paid add-on ($1 per 1,000 lookups): add ISRC, label, language and popularity (0–100) to tracks, including each track listed in an album or playlist, and UPC and popularity to albums. ISRC and UPC inputs always include it.",
            "default": false
          },
          "includeCredits": {
            "title": "Track credits",
            "type": "boolean",
            "description": "Paid add-on ($2 per 1,000 tracks): add songwriters, producers, engineers and performers to track rows.",
            "default": false
          },
          "includeDiscography": {
            "title": "Artist discography",
            "type": "boolean",
            "description": "Add every album, single and compilation of the artist (name, date, label, link). Without it, artist rows have the 10 top tracks, latest release and release counts.",
            "default": false
          },
          "compareWithPreviousRun": {
            "title": "Compare with previous run",
            "type": "boolean",
            "description": "Remember the numbers between runs and add the previous value and the change: play counts, monthly listeners, followers, world rank, playlist followers, podcast ratings. Use it in a schedule (e.g. daily) to track growth.",
            "default": false
          },
          "minFollowers": {
            "title": "Min playlist followers",
            "minimum": 0,
            "type": "integer",
            "description": "For playlist searches: skip playlists with fewer followers. Skipped playlists are free.",
            "default": 0
          },
          "maxFollowers": {
            "title": "Max playlist followers",
            "minimum": 0,
            "type": "integer",
            "description": "For playlist searches: skip playlists with more followers. 0 means no maximum.",
            "default": 0
          },
          "excludeSpotifyPlaylists": {
            "title": "Skip Spotify's own playlists",
            "type": "boolean",
            "description": "For playlist searches: skip editorial and algorithmic playlists made by Spotify, which don't take submissions.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}