{
  "openapi": "3.0.1",
  "info": {
    "title": "Spotify Scraper - Play Counts, Playlists, Artists & Charts",
    "description": "Scrape Spotify without the Spotify API: track play counts, artist monthly listeners and followers, playlist tracks and followers, albums, podcasts, search results and top charts. No Spotify account, API key or cookies. No start fee. CSV, Excel or JSON.",
    "version": "1.0",
    "x-build-id": "Gokq81WSQ3apVPZ7O"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zaver.api~spotify-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zaver.api-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/zaver.api~spotify-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zaver.api-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/zaver.api~spotify-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zaver.api-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": {
          "urls": {
            "title": "Spotify links",
            "type": "array",
            "description": "Links or URIs of tracks, artists, albums, playlists, podcasts (shows) and episodes, for example <code>https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M</code> or <code>spotify:track:3C0nOe05EIt1390bVABLyN</code>. Mix any types in one list.",
            "items": {
              "type": "string"
            }
          },
          "listMode": {
            "title": "Playlists, albums and podcasts: what to return",
            "enum": [
              "tracks",
              "summary",
              "both"
            ],
            "type": "string",
            "description": "<b>Tracks</b> returns one row per track (or episode) with its play count. <b>Summary</b> returns one row per playlist, album or podcast with followers and totals. <b>Both</b> returns the summary row followed by the tracks.",
            "default": "tracks"
          },
          "maxItemsPerList": {
            "title": "Max tracks per playlist, album or podcast",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "How many tracks or episodes to read from each list. 0 means all of them.",
            "default": 100
          },
          "charts": {
            "title": "Charts",
            "type": "array",
            "description": "Spotify's own top charts, returned as ranked tracks with play counts.",
            "items": {
              "type": "string",
              "enum": [
                "top-50-global",
                "top-50-usa",
                "top-songs-global",
                "todays-top-hits"
              ],
              "enumTitles": [
                "Top 50 - Global",
                "Top 50 - USA",
                "Top Songs - Global",
                "Today's Top Hits"
              ]
            }
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search on Spotify, one per line: an artist name, a song title, a genre, a mood or a podcast topic.",
            "items": {
              "type": "string"
            }
          },
          "searchTypes": {
            "title": "Search for",
            "type": "array",
            "description": "Which kinds of results to return for each query.",
            "items": {
              "type": "string",
              "enum": [
                "track",
                "artist",
                "album",
                "playlist",
                "show",
                "episode"
              ],
              "enumTitles": [
                "Tracks",
                "Artists",
                "Albums",
                "Playlists",
                "Podcasts",
                "Podcast episodes"
              ]
            },
            "default": [
              "track"
            ]
          },
          "maxResultsPerQuery": {
            "title": "Max results per query and type",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Top N results of each selected type for each query.",
            "default": 20
          },
          "searchDetails": {
            "title": "Full details for search results",
            "type": "boolean",
            "description": "Search results alone carry names and links. Turn this on to add play counts to tracks, followers and monthly listeners to artists, follower counts to playlists, and labels and totals to albums. Slower, same price per result.",
            "default": false
          },
          "includeRelatedArtists": {
            "title": "Artists: add related artists",
            "type": "boolean",
            "description": "Add the list of similar artists (\"Fans also like\") to each artist row.",
            "default": false
          },
          "includeConcerts": {
            "title": "Artists: add upcoming concerts",
            "type": "boolean",
            "description": "Add upcoming concert dates and cities to each artist row.",
            "default": false
          },
          "maxItems": {
            "title": "Max results in total",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Hard cap on results for the whole run. 0 means no cap.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}