{
  "openapi": "3.0.1",
  "info": {
    "title": "SoundCloud Charts, Search & Artist Catalog Scraper",
    "description": "Scrape SoundCloud without an API key: global and genre New & Hot charts, keyword search with real genre filters, full artist catalogs, playlist contents, comments, followers, engagement metrics, artwork, waveform and stream metadata.",
    "version": "1.1",
    "x-build-id": "kzMuZBsSVkEqN6Prx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nimbryxo-studio~soundcloud-charts-search-and-artist-catalog/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nimbryxo-studio-soundcloud-charts-search-and-artist-catalog",
        "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/nimbryxo-studio~soundcloud-charts-search-and-artist-catalog/runs": {
      "post": {
        "operationId": "runs-sync-nimbryxo-studio-soundcloud-charts-search-and-artist-catalog",
        "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/nimbryxo-studio~soundcloud-charts-search-and-artist-catalog/run-sync": {
      "post": {
        "operationId": "run-sync-nimbryxo-studio-soundcloud-charts-search-and-artist-catalog",
        "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": "What to collect",
            "enum": [
              "search",
              "charts",
              "artistTracks",
              "byUrl",
              "comments",
              "followers"
            ],
            "type": "string",
            "description": "Choose the intent. Keyword search, New & Hot charts, an artist catalog, specific URLs, track comments, or an artist's followers.",
            "default": "search"
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "One or more keywords or artist names (mode=search). Example: lofi, techno, ambient jazz.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "searchType": {
            "title": "Search result type",
            "enum": [
              "tracks",
              "users",
              "playlists",
              "albums",
              "all"
            ],
            "type": "string",
            "description": "What kind of results to return (mode=search).",
            "default": "tracks"
          },
          "chartGenre": {
            "title": "Chart genre",
            "enum": [
              "all",
              "all-genres",
              "trap",
              "hip-hop",
              "pop",
              "electronic",
              "r-n-b",
              "alternative-hip-hop",
              "indie",
              "dubstep",
              "house",
              "folk",
              "alternative-rock",
              "ambient",
              "hardcore",
              "rock",
              "reggae",
              "latin",
              "metal",
              "dancehall",
              "afrobeat"
            ],
            "type": "string",
            "description": "Global New & Hot returns up to 100 tracks. Genre values use SoundCloud's current trending-by-genre lists (about 50 tracks each).",
            "default": "all"
          },
          "searchGenre": {
            "title": "Genre filter",
            "enum": [
              "",
              "Alternative Rock",
              "Ambient",
              "Classical",
              "Country",
              "Dance & EDM",
              "Dancehall",
              "Deep House",
              "Disco",
              "Drum & Bass",
              "Dubstep",
              "Electronic",
              "Folk & Singer-Songwriter",
              "Hip-hop & Rap",
              "House",
              "Indie",
              "Jazz & Blues",
              "Latin",
              "Metal",
              "Piano",
              "Pop",
              "R&B & Soul",
              "Reggae",
              "Reggaeton",
              "Rock",
              "Soundtrack",
              "Techno",
              "Trance",
              "Trap",
              "Trip Hop",
              "World",
              "Lo-fi",
              "Lofi"
            ],
            "type": "string",
            "description": "Optional SoundCloud genre filter for track and playlist searches. Leave as any genre to search everything. This is a real SoundCloud filter, not a client-side guess.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort fetched rows",
            "enum": [
              "relevance",
              "newest",
              "mostPlayed",
              "mostLiked"
            ],
            "type": "string",
            "description": "How to order the rows already fetched. SoundCloud search itself is relevance-ordered, so this is a client-side sort of that result set.",
            "default": "relevance"
          },
          "minPlayCount": {
            "title": "Minimum plays",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Drop track/playlist rows below this play count after fetching. 0 means no filter.",
            "default": 0
          },
          "minLikeCount": {
            "title": "Minimum likes",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Drop track/playlist rows below this like count after fetching. 0 means no filter.",
            "default": 0
          },
          "artistUrls": {
            "title": "Artists",
            "type": "array",
            "description": "Artist profile URLs, usernames, or numeric user IDs. Used by artistTracks and followers modes.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "includeTracks": {
            "title": "Include tracks",
            "type": "boolean",
            "description": "Include the artist's uploaded tracks.",
            "default": true
          },
          "includeAlbums": {
            "title": "Include albums",
            "type": "boolean",
            "description": "Include the artist's albums/EPs as playlist rows.",
            "default": false
          },
          "includePlaylists": {
            "title": "Include playlists",
            "type": "boolean",
            "description": "Include the artist's playlists as playlist rows.",
            "default": false
          },
          "includeTopTracks": {
            "title": "Include top tracks",
            "type": "boolean",
            "description": "Include SoundCloud's small top-tracks list for each artist.",
            "default": false
          },
          "includeWebProfiles": {
            "title": "Include web profiles",
            "type": "boolean",
            "description": "Add the artist's public social/web profile links to the profile row.",
            "default": false
          },
          "startUrls": {
            "title": "SoundCloud URLs or IDs",
            "type": "array",
            "description": "Track, playlist/album, or artist URLs. Numeric track IDs are also accepted. Used by mode=byUrl.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "SoundCloud track, playlist, album, user, or search URL."
                }
              }
            },
            "default": []
          },
          "includePlaylistTracks": {
            "title": "Expand playlist tracks",
            "type": "boolean",
            "description": "For playlist URLs, hydrate and emit every track (not just the first five).",
            "default": true
          },
          "includeUserProfile": {
            "title": "Include artist profile row",
            "type": "boolean",
            "description": "For artist URLs in mode=byUrl, emit the profile row before the tracks.",
            "default": true
          },
          "trackUrls": {
            "title": "Track URLs or IDs",
            "type": "array",
            "description": "Tracks whose public comments should be collected. Used by mode=comments.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "SoundCloud track URL used for comments mode."
                }
              }
            },
            "default": []
          },
          "commentsSort": {
            "title": "Comment order",
            "enum": [
              "newest",
              "oldest",
              "track-timestamp"
            ],
            "type": "string",
            "description": "How SoundCloud should order comments.",
            "default": "newest"
          },
          "relationship": {
            "title": "Follower relationship",
            "enum": [
              "followers",
              "followings"
            ],
            "type": "string",
            "description": "For mode=followers, collect the artist's followers or the accounts the artist follows.",
            "default": "followers"
          },
          "resolveStreamUrls": {
            "title": "Resolve playable stream URLs",
            "type": "boolean",
            "description": "Add a playable signed stream URL plus protocol, preview and expiry fields. Signed URLs expire after about two hours. Turn off for large runs if you only need the stable API endpoint.",
            "default": true
          },
          "maxItems": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on dataset rows. SoundCloud search still returns at most 300 rows per query; charts and per-artist sections have their own source limits.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}