{
  "openapi": "3.0.1",
  "info": {
    "title": "Spotify Users Search and Profile Scraper 👤",
    "description": "👤 Scrape Spotify user profiles with public playlists, follower & following counts, profile images, display names & playlist metadata. Fetch full profile enrichment with all public playlist data. The most complete Spotify user data scraper available ✨Spotify Users Search and Profile Scraper 👤",
    "version": "0.0",
    "x-build-id": "uO97FToFB8aoYwERG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apiharvest~spotify-users-search-and-profile-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apiharvest-spotify-users-search-and-profile-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/apiharvest~spotify-users-search-and-profile-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apiharvest-spotify-users-search-and-profile-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/apiharvest~spotify-users-search-and-profile-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apiharvest-spotify-users-search-and-profile-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": {
          "keyword": {
            "title": "🔍 Search Keyword(s)",
            "type": "array",
            "description": "One or more search terms to find user profiles on Spotify.\n\n💡 Leave empty and fill Spotify URIs below to use Get Details mode instead.",
            "items": {
              "type": "string"
            }
          },
          "spotifyUris": {
            "title": "🔗 Spotify User URIs / URLs",
            "type": "array",
            "description": "One or more Spotify user URIs or URLs to scrape full profile data.\nExamples: spotify:user:ID · https://open.spotify.com/user/ID\n\n⚠️ SLOW: Each profile takes 5-10 minutes (headless browser scraping).\n💡 Leave empty and fill Search Keywords above to use Search mode instead.",
            "items": {
              "type": "string"
            }
          },
          "proxyCountry": {
            "title": "🌐 Proxy Country",
            "enum": [
              "US",
              "GB",
              "AU",
              "CA",
              "DE",
              "FR",
              "NL",
              "IT",
              "ES",
              "SE",
              "NO",
              "DK",
              "FI",
              "BE",
              "AT",
              "CH",
              "IE",
              "PL",
              "PT",
              "CZ",
              "HU",
              "RO",
              "GR",
              "BG",
              "HR",
              "SK",
              "RS",
              "JP",
              "KR",
              "SG",
              "HK",
              "TW",
              "TH",
              "MY",
              "ID",
              "PH",
              "VN",
              "IN",
              "BR",
              "MX",
              "AR",
              "CL",
              "CO",
              "PE",
              "ZA",
              "NG",
              "KE",
              "EG",
              "SA",
              "AE",
              "TR",
              "IL",
              "UA",
              "RU",
              "BY"
            ],
            "type": "string",
            "description": "Select a proxy country for scraping. ⭐ US recommended for best results.",
            "default": "US"
          },
          "users_search_offset": {
            "title": "📄 Search Offset",
            "minimum": 0,
            "type": "integer",
            "description": "Starting position for search pagination.",
            "default": 0
          },
          "users_search_limit": {
            "title": "📊 Search Limit",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of results per keyword.",
            "default": 30
          },
          "users_search_numberOfTopResults": {
            "title": "🏆 Top Results Count",
            "minimum": 1,
            "type": "integer",
            "description": "Number of top-ranked items.",
            "default": 20
          },
          "users_fetchDetails": {
            "title": "🔄 Fetch Full Profile Details",
            "type": "boolean",
            "description": "Search mode only — Get Details mode always fetches full details.\n\n✅ When ON — scrapes each user's full profile using a headless browser. You get: public playlists with cover images, follower/following counts, bio, profile image, and recently played artists.\n\n❌ When OFF — you only get basic search data: username, display name, image, URI, and follower count. You will NOT get public playlists, bio, or detailed profile data.\n\n⚠️⚠️ VERY SLOW: 5-10 minutes per profile! Only enable for small batches.",
            "default": false
          },
          "includePlaylists": {
            "title": "📋 Include Public Playlists",
            "type": "boolean",
            "description": "✅ When ON — scrapes all public playlists with cover images and estimated creation dates. Included by default.\n\n❌ When OFF — playlists will not be scraped. You will only get profile info without any playlist data. Turn ON to include user's public playlists.\n\n⚠️ For faster results, keep this OFF. The more playlists a profile has, the longer it takes to process.\n\nOnly applies when Fetch Full Profile Details is ON or in Get Details mode.",
            "default": true
          },
          "maxPlaylists": {
            "title": "📊 Max Playlists Per Profile",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of playlists to scrape per user profile. Set to 0 to scrape ALL playlists.\n\n⚠️ The more playlists you scrape, the longer each profile takes. Each playlist requires a browser page load (~1-2 minutes per 10 playlists).\n\nRecommended: 10-30 for fast results, 0 for complete data.\n\nOnly applies when Include Public Playlists is ON.",
            "default": 0
          },
          "includeRecentlyPlayedArtists": {
            "title": "🎵 Include Recently Played Artists",
            "type": "boolean",
            "description": "✅ When ON — scrapes recently played artists with images. Shows the user's listening activity. Included by default.\n\n❌ When OFF — recently played artists will not be scraped. Turn ON to see what artists the user listens to.\n\nOnly applies when Fetch Full Profile Details is ON or in Get Details mode.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}