{
  "data": {
    "id": "kzMuZBsSVkEqN6Prx",
    "actId": "xauSnBo64ZqngihHG",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-11-05T12:30:16.692Z",
    "finishedAt": "2026-11-05T12:30:25.938Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 9154,
      "runTimeSecs": 9.154,
      "computeUnits": 0.010171111111111112,
      "imageSizeBytes": 319053824
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"SoundCloud Scraper Input\",\n  \"description\": \"Search SoundCloud, read the global or genre New & Hot charts, export an artist catalog, resolve track/playlist/profile URLs, collect comments, or list followers.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"What to collect\",\n      \"type\": \"string\",\n      \"description\": \"Choose the intent. Keyword search, New & Hot charts, an artist catalog, specific URLs, track comments, or an artist's followers.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"charts\",\n        \"artistTracks\",\n        \"byUrl\",\n        \"comments\",\n        \"followers\"\n      ],\n      \"enumTitles\": [\n        \"Search by keyword - tracks, users, playlists or albums\",\n        \"Charts - global New & Hot or a genre trending list\",\n        \"Artist catalog - profile, tracks, albums, playlists\",\n        \"Track, playlist or artist URLs\",\n        \"Track comments\",\n        \"Artist followers or followings\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Search queries\",\n      \"type\": \"array\",\n      \"description\": \"One or more keywords or artist names (mode=search). Example: lofi, techno, ambient jazz.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": [\n        \"lofi\"\n      ]\n    },\n    \"searchType\": {\n      \"title\": \"Search result type\",\n      \"type\": \"string\",\n      \"description\": \"What kind of results to return (mode=search).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"tracks\",\n        \"users\",\n        \"playlists\",\n        \"albums\",\n        \"all\"\n      ],\n      \"enumTitles\": [\n        \"Tracks\",\n        \"Users / artists\",\n        \"Playlists\",\n        \"Albums\",\n        \"All result types\"\n      ],\n      \"default\": \"tracks\",\n      \"prefill\": \"tracks\"\n    },\n    \"chartGenre\": {\n      \"title\": \"Chart genre\",\n      \"type\": \"string\",\n      \"description\": \"Global New & Hot returns up to 100 tracks. Genre values use SoundCloud's current trending-by-genre lists (about 50 tracks each).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"all-genres\",\n        \"trap\",\n        \"hip-hop\",\n        \"pop\",\n        \"electronic\",\n        \"r-n-b\",\n        \"alternative-hip-hop\",\n        \"indie\",\n        \"dubstep\",\n        \"house\",\n        \"folk\",\n        \"alternative-rock\",\n        \"ambient\",\n        \"hardcore\",\n        \"rock\",\n        \"reggae\",\n        \"latin\",\n        \"metal\",\n        \"dancehall\",\n        \"afrobeat\"\n      ],\n      \"enumTitles\": [\n        \"Global New & Hot (100)\",\n        \"All Genres (system list, ~50)\",\n        \"Trap\",\n        \"Hip Hop\",\n        \"Pop\",\n        \"Electronic\",\n        \"R&B\",\n        \"Alternative Hip Hop\",\n        \"Indie\",\n        \"Dubstep\",\n        \"House\",\n        \"Folk\",\n        \"Alternative Rock\",\n        \"Ambient\",\n        \"Hardcore\",\n        \"Rock\",\n        \"Reggae\",\n        \"Latin\",\n        \"Metal\",\n        \"Dancehall\",\n        \"Afrobeat\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"searchGenre\": {\n      \"title\": \"Genre filter\",\n      \"type\": \"string\",\n      \"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.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"Alternative Rock\",\n        \"Ambient\",\n        \"Classical\",\n        \"Country\",\n        \"Dance & EDM\",\n        \"Dancehall\",\n        \"Deep House\",\n        \"Disco\",\n        \"Drum & Bass\",\n        \"Dubstep\",\n        \"Electronic\",\n        \"Folk & Singer-Songwriter\",\n        \"Hip-hop & Rap\",\n        \"House\",\n        \"Indie\",\n        \"Jazz & Blues\",\n        \"Latin\",\n        \"Metal\",\n        \"Piano\",\n        \"Pop\",\n        \"R&B & Soul\",\n        \"Reggae\",\n        \"Reggaeton\",\n        \"Rock\",\n        \"Soundtrack\",\n        \"Techno\",\n        \"Trance\",\n        \"Trap\",\n        \"Trip Hop\",\n        \"World\",\n        \"Lo-fi\",\n        \"Lofi\"\n      ],\n      \"enumTitles\": [\n        \"(any genre)\",\n        \"Alternative Rock\",\n        \"Ambient\",\n        \"Classical\",\n        \"Country\",\n        \"Dance & EDM\",\n        \"Dancehall\",\n        \"Deep House\",\n        \"Disco\",\n        \"Drum & Bass\",\n        \"Dubstep\",\n        \"Electronic\",\n        \"Folk & Singer-Songwriter\",\n        \"Hip-hop & Rap\",\n        \"House\",\n        \"Indie\",\n        \"Jazz & Blues\",\n        \"Latin\",\n        \"Metal\",\n        \"Piano\",\n        \"Pop\",\n        \"R&B & Soul\",\n        \"Reggae\",\n        \"Reggaeton\",\n        \"Rock\",\n        \"Soundtrack\",\n        \"Techno\",\n        \"Trance\",\n        \"Trap\",\n        \"Trip Hop\",\n        \"World\",\n        \"Lo-fi\",\n        \"Lofi\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\",\n      \"sectionCaption\": \"Search filters\",\n      \"sectionDescription\": \"Optional refinements for mode=search. Genre is applied by SoundCloud; sort and minimum counts are applied to the fetched rows.\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort fetched rows\",\n      \"type\": \"string\",\n      \"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.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"newest\",\n        \"mostPlayed\",\n        \"mostLiked\"\n      ],\n      \"enumTitles\": [\n        \"Relevance (source order)\",\n        \"Newest upload\",\n        \"Most played\",\n        \"Most liked\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\"\n    },\n    \"minPlayCount\": {\n      \"title\": \"Minimum plays\",\n      \"type\": \"integer\",\n      \"description\": \"Drop track/playlist rows below this play count after fetching. 0 means no filter.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"minLikeCount\": {\n      \"title\": \"Minimum likes\",\n      \"type\": \"integer\",\n      \"description\": \"Drop track/playlist rows below this like count after fetching. 0 means no filter.\",\n      \"minimum\": 0,\n      \"maximum\": 1000000000,\n      \"default\": 0,\n      \"prefill\": 0\n    },\n    \"artistUrls\": {\n      \"title\": \"Artists\",\n      \"type\": \"array\",\n      \"description\": \"Artist profile URLs, usernames, or numeric user IDs. Used by artistTracks and followers modes.\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": [],\n      \"sectionCaption\": \"Artist catalog\",\n      \"sectionDescription\": \"Controls what is exported for each artist profile. The profile row is always included in artistTracks.\"\n    },\n    \"includeTracks\": {\n      \"title\": \"Include tracks\",\n      \"type\": \"boolean\",\n      \"description\": \"Include the artist's uploaded tracks.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeAlbums\": {\n      \"title\": \"Include albums\",\n      \"type\": \"boolean\",\n      \"description\": \"Include the artist's albums/EPs as playlist rows.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includePlaylists\": {\n      \"title\": \"Include playlists\",\n      \"type\": \"boolean\",\n      \"description\": \"Include the artist's playlists as playlist rows.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeTopTracks\": {\n      \"title\": \"Include top tracks\",\n      \"type\": \"boolean\",\n      \"description\": \"Include SoundCloud's small top-tracks list for each artist.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeWebProfiles\": {\n      \"title\": \"Include web profiles\",\n      \"type\": \"boolean\",\n      \"description\": \"Add the artist's public social/web profile links to the profile row.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"startUrls\": {\n      \"title\": \"SoundCloud URLs or IDs\",\n      \"type\": \"array\",\n      \"description\": \"Track, playlist/album, or artist URLs. Numeric track IDs are also accepted. Used by mode=byUrl.\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\",\n            \"title\": \"URL\",\n            \"description\": \"SoundCloud track, playlist, album, user, or search URL.\"\n          }\n        }\n      },\n      \"default\": [],\n      \"prefill\": [],\n      \"sectionCaption\": \"URLs and playlists\",\n      \"sectionDescription\": \"Playlist URLs export the playlist row and, when enabled, every track in it. Artist URLs export the profile and uploaded tracks.\"\n    },\n    \"includePlaylistTracks\": {\n      \"title\": \"Expand playlist tracks\",\n      \"type\": \"boolean\",\n      \"description\": \"For playlist URLs, hydrate and emit every track (not just the first five).\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"includeUserProfile\": {\n      \"title\": \"Include artist profile row\",\n      \"type\": \"boolean\",\n      \"description\": \"For artist URLs in mode=byUrl, emit the profile row before the tracks.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"trackUrls\": {\n      \"title\": \"Track URLs or IDs\",\n      \"type\": \"array\",\n      \"description\": \"Tracks whose public comments should be collected. Used by mode=comments.\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\",\n            \"title\": \"URL\",\n            \"description\": \"SoundCloud track URL used for comments mode.\"\n          }\n        }\n      },\n      \"default\": [],\n      \"prefill\": [],\n      \"sectionCaption\": \"Comments and audience\",\n      \"sectionDescription\": \"Comment collection and follower/following collection. These modes keep the track or artist context on every row.\"\n    },\n    \"commentsSort\": {\n      \"title\": \"Comment order\",\n      \"type\": \"string\",\n      \"description\": \"How SoundCloud should order comments.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"newest\",\n        \"oldest\",\n        \"track-timestamp\"\n      ],\n      \"enumTitles\": [\n        \"Newest first\",\n        \"Oldest first\",\n        \"By time in track\"\n      ],\n      \"default\": \"newest\",\n      \"prefill\": \"newest\"\n    },\n    \"relationship\": {\n      \"title\": \"Follower relationship\",\n      \"type\": \"string\",\n      \"description\": \"For mode=followers, collect the artist's followers or the accounts the artist follows.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"followers\",\n        \"followings\"\n      ],\n      \"enumTitles\": [\n        \"Followers\",\n        \"Accounts followed\"\n      ],\n      \"default\": \"followers\",\n      \"prefill\": \"followers\"\n    },\n    \"resolveStreamUrls\": {\n      \"title\": \"Resolve playable stream URLs\",\n      \"type\": \"boolean\",\n      \"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.\",\n      \"default\": true,\n      \"prefill\": true,\n      \"sectionCaption\": \"Advanced\",\n      \"sectionDescription\": \"Stream resolution and the overall record cap.\"\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum records\",\n      \"type\": \"integer\",\n      \"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.\",\n      \"minimum\": 1,\n      \"maximum\": 5000,\n      \"default\": 100,\n      \"prefill\": 2\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# SoundCloud Charts, Search & Artist Catalog Scraper\n\nPull public SoundCloud data into one clean dataset: the current global New & Hot\nchart, 20 genre trending lists, keyword search across tracks, artists, playlists and\nalbums, complete artist catalogs, playlist contents, track comments, and artist\nfollowers. No SoundCloud account, cookie or API key is required.\n\n## What this actor does\n\n- **Search** tracks, users/artists, playlists or albums by keyword, with a real\n  SoundCloud genre filter for tracks and playlists.\n- **Charts** the global New & Hot list (up to 100 tracks) or one of 20 current\n  genre trending lists (about 50 tracks each).\n- **Artist catalog** exports the profile row plus uploaded tracks and, optionally,\n  albums, playlists, top tracks and public web profiles.\n- **URLs** resolves any public track, playlist/album or artist URL. Playlist URLs\n  expand into every track, not just the first page. Artist URLs return the profile\n  and uploaded tracks.\n- **Comments** collects public comments for one or more tracks, including the\n  commenter's profile fields and the time in the track.\n- **Followers** collects an artist's followers or the accounts the artist follows.\n- Empty fields are omitted from records. No `null`, blank strings or empty arrays\n  are pushed.\n\n## Output records\n\nEvery row has a `recordType`: `track`, `user`, `playlist` or `comment`. Existing\nfield names are preserved; the revamp adds fields beside them.\n\n### Track fields\n\n| Field | Meaning |\n|---|---|\n| `recordType` | `track` |\n| `title`, `url`, `trackId`, `urn` | Track identity and canonical page URL |\n| `artist`, `artistUrl`, `artistId` | Uploader identity |\n| `artistFollowers`, `artistVerified`, `artistCity`, `artistCountry`, `artistDescription` | Creator details when SoundCloud publishes them |\n| `duration` | `M:SS` / `H:MM:SS` (unchanged legacy field) |\n| `durationMs`, `durationSeconds` | Numeric duration |\n| `playCount`, `likeCount`, `repostCount`, `commentCount`, `downloadCount` | Engagement snapshot |\n| `genre`, `tags`, `description` | Uploader metadata when present |\n| `uploadDate`, `lastModified`, `releaseDate` | ISO-8601 dates |\n| `labelName`, `license`, `isrc`, `upc` | Release and rights metadata when present |\n| `publisherArtist`, `albumTitle`, `writerComposer`, `explicit` | Publisher metadata when present |\n| `streamable`, `downloadable`, `hasDownloadsLeft`, `policy`, `monetizationModel` | Source playback flags |\n| `streamUrl` | Playable signed media URL when `resolveStreamUrls=true`; otherwise the stable API transcoding URL |\n| `streamUrlApi` | Stable SoundCloud transcoding endpoint (not directly playable without a `client_id`) |\n| `streamUrlProtocol`, `streamUrlMimeType`, `streamUrlPreset` | Stream format details |\n| `streamUrlExpiresAt` | Expiry of the signed media URL (about two hours) |\n| `streamUrlIsPreview` | `true` for a 30-second preview / `SNIP` track |\n| `artworkUrl`, `artworkUrlOriginal` | Cover image at 500x500 and original size |\n| `waveformUrl` | Waveform amplitude JSON (not an image) |\n| `chartGenre`, `chartRank`, `chartScore`, `chartLastUpdated` | Chart context |\n| `playlistId`, `playlistTitle`, `playlistUrl`, `playlistPosition` | Playlist context when a playlist is expanded |\n| `sourceQuery`, `sourceType`, `sourceUrl` | What input produced the row |\n| `scrapedAt` | ISO-8601 scrape time |\n\n### User / artist fields\n\n`recordType=user`; keeps `title`, `url`, `trackId`, `artist`, `artistUrl`,\n`playCount`, `likeCount`, `repostCount`, `description`, `artworkUrl`, `scrapedAt`.\nAdds `userId`, `username`, `fullName`, `followersCount`, `followingsCount`,\n`trackCount`, `playlistCount`, `commentsCount`, `verified`, `pro`, `city`,\n`countryCode`, `lastModified`, `webProfiles`, `relationship` (followers mode),\n`sourceArtistId`, `sourceArtistUsername`.\n\n### Playlist / album fields\n\n`recordType=playlist`; keeps `title`, `url`, `trackId`, `artist`, `artistUrl`,\n`duration`, `likeCount`, `repostCount`, `genre`, `description`, `uploadDate`,\n`artworkUrl`, `scrapedAt`. Adds `playlistId`, `urn`, `trackCount`, `setType`,\n`isAlbum`, `tags`, `releaseDate`, `lastModified`, `durationMs`, `labelName`.\n\n### Comment fields\n\n`recordType=comment`; `commentId`, `body`, `createdAt`, `timestampMs`,\n`timestampFormatted`, `trackId`, `trackTitle`, `trackUrl`, `userId`, `username`,\n`userUrl`, `userFollowers`, `userCity`, `userCountry`, `scrapedAt`.\n\n## Input\n\n| Field | Type | Default | What it does |\n|---|---|---|---|\n| `mode` | select | `search` | `search`, `charts`, `artistTracks`, `byUrl`, `comments`, `followers` |\n| `searchQueries` | string list | `[]` | One or more search keywords |\n| `searchType` | select | `tracks` | `tracks`, `users`, `playlists`, `albums`, `all` |\n| `chartGenre` | select | `all` | Global New & Hot or one of 20 genre trending lists |\n| `searchGenre` | select | any genre | Real SoundCloud genre filter for track/playlist search |\n| `sortBy` | select | `relevance` | `relevance`, `newest`, `mostPlayed`, `mostLiked` (client-side) |\n| `minPlayCount`, `minLikeCount` | integer | `0` | Client-side thresholds after fetching |\n| `artistUrls` | string list | `[]` | Artist URLs, usernames or numeric user IDs |\n| `includeTracks` | boolean | `true` | Artist tracks |\n| `includeAlbums` | boolean | `false` | Artist albums/EPs |\n| `includePlaylists` | boolean | `false` | Artist playlists |\n| `includeTopTracks` | boolean | `false` | Artist top tracks |\n| `includeWebProfiles` | boolean | `false` | Public social/web profile links |\n| `startUrls` | URL list | `[]` | Track, playlist or artist URLs / numeric track IDs |\n| `includePlaylistTracks` | boolean | `true` | Expand every playlist track |\n| `includeUserProfile` | boolean | `true` | Emit the profile row for artist URLs in `byUrl` |\n| `trackUrls` | URL list | `[]` | Tracks for comments mode |\n| `commentsSort` | select | `newest` | `newest`, `oldest`, `track-timestamp` |\n| `relationship` | select | `followers` | `followers` or `followings` |\n| `resolveStreamUrls` | boolean | `true` | Resolve signed playable stream URLs + expiry |\n| `maxItems` | integer | `100` | Hard record cap (1-5000) |\n\n## Examples\n\n**Search tracks with a genre filter**\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"lofi\", \"ambient jazz\"],\n  \"searchType\": \"tracks\",\n  \"searchGenre\": \"Jazz & Blues\",\n  \"maxItems\": 100\n}\n```\n\n**Global New & Hot chart**\n\n```json\n{ \"mode\": \"charts\", \"chartGenre\": \"all\", \"maxItems\": 100 }\n```\n\n**Trap trending list**\n\n```json\n{ \"mode\": \"charts\", \"chartGenre\": \"trap\", \"maxItems\": 50 }\n```\n\n**Full artist catalog**\n\n```json\n{\n  \"mode\": \"artistTracks\",\n  \"artistUrls\": [\"https://soundcloud.com/chillhopdotcom\"],\n  \"includeTracks\": true,\n  \"includeAlbums\": true,\n  \"includePlaylists\": true,\n  \"maxItems\": 500\n}\n```\n\n**Expand a playlist**\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"startUrls\": [\"https://soundcloud.com/chillhopdotcom/sets/chillhop-essentials-summer-2026\"],\n  \"includePlaylistTracks\": true,\n  \"maxItems\": 300\n}\n```\n\n**Track comments**\n\n```json\n{\n  \"mode\": \"comments\",\n  \"trackUrls\": [\"https://soundcloud.com/user/track\"],\n  \"commentsSort\": \"newest\",\n  \"maxItems\": 200\n}\n```\n\n**Artist followers**\n\n```json\n{\n  \"mode\": \"followers\",\n  \"artistUrls\": [\"https://soundcloud.com/chillhopdotcom\"],\n  \"relationship\": \"followers\",\n  \"maxItems\": 500\n}\n```\n\n## Charts: what is available\n\nSoundCloud's current public chart surface is **New & Hot**, not the retired all-time\nTop chart. The actor returns:\n\n- the global New & Hot list (up to 100 tracks), and\n- 20 current genre trending lists (about 50 tracks each).\n\nThe old per-genre chart endpoint and the all-time Top chart are no longer available\nfrom SoundCloud's public API. Requests for the legacy `top` value are mapped to the\ncurrent global New & Hot list and the status message says so.\n\n## Stream URLs, previews and rights\n\nStream metadata comes from SoundCloud's public transcodings. `streamUrl` is a\n**signed** media URL and expires after about two hours; `streamUrlExpiresAt` records\nthe exact time. `streamUrlApi` is the stable API endpoint, but it is not playable on\nits own without a `client_id`.\n\nNot every track is fully playable: SoundCloud may return a 30-second preview\n(`streamUrlIsPreview=true`), use DRM/encrypted transcodings, or disable downloads.\nThe actor reports the metadata it can see and never fabricates an audio file. This\nactor does not download or rehost audio.\n\n## Limitations\n\n- Search returns at most **300 rows per query**. Use more queries or a genre filter\n  to reach further.\n- The all-time Top chart and regional/country charts are not available from the\n  current public surface.\n- Server-side BPM, duration, upload-date, license and access filters are not\n  available on SoundCloud's public v2 search; the actor only exposes the real\n  genre filter. `sortBy` and the minimum play/like thresholds are applied to the\n  rows already fetched.\n- SoundCloud does not publish a user join date or a user repost count in this API.\n- BPM and musical key are not exposed for tracks.\n- City/country, description, genre, tags, ISRC, UPC, label and release date are\n  conditional; fields are omitted when SoundCloud does not provide them.\n- Only public tracks, playlists and profiles are reachable. Private/unlisted\n  content is out of scope.\n- Huge follower lists can be expensive; use `maxItems` to cap them.\n\n## FAQ\n\n**Do I need a SoundCloud account or API key?** No. The actor reads the same public\npages and public v2 JSON the SoundCloud web player uses, with no login.\n\n**Why is `streamUrl` sometimes missing?** SoundCloud may expose only encrypted/DRM\ntranscodings or a preview for that track. `streamUrlApi`, `policy` and the preview\nflag still describe what is available.\n\n**Why does a search stop at 300 rows?** That is SoundCloud's public search window\nper query. Split the job into more queries or use `searchGenre` to partition it.\n\n**Why is `waveformUrl` a JSON file?** SoundCloud's waveform field points to amplitude\nJSON, not an image. It is kept under the existing field name for compatibility.\n\n**Can I schedule monitoring?** Yes. Run the actor on a schedule and compare\n`playCount`, `likeCount`, `repostCount` and `followersCount` snapshots. Monitoring\nhelpers are not part of this version; the dataset is designed for external diffing.\n\n**Is this affiliated with SoundCloud?** No. This is an independent actor that reads\npublicly visible data and is not endorsed by SoundCloud.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "soundcloud-charts-search-and-artist-catalog",
      "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",
      "buildTag": "latest",
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 3600,
        "memoryMbytes": 1024
      },
      "dockerfile": "./Dockerfile",
      "readme": "# SoundCloud Charts, Search & Artist Catalog Scraper\n\nPull public SoundCloud data into one clean dataset: the current global New & Hot\nchart, 20 genre trending lists, keyword search across tracks, artists, playlists and\nalbums, complete artist catalogs, playlist contents, track comments, and artist\nfollowers. No SoundCloud account, cookie or API key is required.\n\n## What this actor does\n\n- **Search** tracks, users/artists, playlists or albums by keyword, with a real\n  SoundCloud genre filter for tracks and playlists.\n- **Charts** the global New & Hot list (up to 100 tracks) or one of 20 current\n  genre trending lists (about 50 tracks each).\n- **Artist catalog** exports the profile row plus uploaded tracks and, optionally,\n  albums, playlists, top tracks and public web profiles.\n- **URLs** resolves any public track, playlist/album or artist URL. Playlist URLs\n  expand into every track, not just the first page. Artist URLs return the profile\n  and uploaded tracks.\n- **Comments** collects public comments for one or more tracks, including the\n  commenter's profile fields and the time in the track.\n- **Followers** collects an artist's followers or the accounts the artist follows.\n- Empty fields are omitted from records. No `null`, blank strings or empty arrays\n  are pushed.\n\n## Output records\n\nEvery row has a `recordType`: `track`, `user`, `playlist` or `comment`. Existing\nfield names are preserved; the revamp adds fields beside them.\n\n### Track fields\n\n| Field | Meaning |\n|---|---|\n| `recordType` | `track` |\n| `title`, `url`, `trackId`, `urn` | Track identity and canonical page URL |\n| `artist`, `artistUrl`, `artistId` | Uploader identity |\n| `artistFollowers`, `artistVerified`, `artistCity`, `artistCountry`, `artistDescription` | Creator details when SoundCloud publishes them |\n| `duration` | `M:SS` / `H:MM:SS` (unchanged legacy field) |\n| `durationMs`, `durationSeconds` | Numeric duration |\n| `playCount`, `likeCount`, `repostCount`, `commentCount`, `downloadCount` | Engagement snapshot |\n| `genre`, `tags`, `description` | Uploader metadata when present |\n| `uploadDate`, `lastModified`, `releaseDate` | ISO-8601 dates |\n| `labelName`, `license`, `isrc`, `upc` | Release and rights metadata when present |\n| `publisherArtist`, `albumTitle`, `writerComposer`, `explicit` | Publisher metadata when present |\n| `streamable`, `downloadable`, `hasDownloadsLeft`, `policy`, `monetizationModel` | Source playback flags |\n| `streamUrl` | Playable signed media URL when `resolveStreamUrls=true`; otherwise the stable API transcoding URL |\n| `streamUrlApi` | Stable SoundCloud transcoding endpoint (not directly playable without a `client_id`) |\n| `streamUrlProtocol`, `streamUrlMimeType`, `streamUrlPreset` | Stream format details |\n| `streamUrlExpiresAt` | Expiry of the signed media URL (about two hours) |\n| `streamUrlIsPreview` | `true` for a 30-second preview / `SNIP` track |\n| `artworkUrl`, `artworkUrlOriginal` | Cover image at 500x500 and original size |\n| `waveformUrl` | Waveform amplitude JSON (not an image) |\n| `chartGenre`, `chartRank`, `chartScore`, `chartLastUpdated` | Chart context |\n| `playlistId`, `playlistTitle`, `playlistUrl`, `playlistPosition` | Playlist context when a playlist is expanded |\n| `sourceQuery`, `sourceType`, `sourceUrl` | What input produced the row |\n| `scrapedAt` | ISO-8601 scrape time |\n\n### User / artist fields\n\n`recordType=user`; keeps `title`, `url`, `trackId`, `artist`, `artistUrl`,\n`playCount`, `likeCount`, `repostCount`, `description`, `artworkUrl`, `scrapedAt`.\nAdds `userId`, `username`, `fullName`, `followersCount`, `followingsCount`,\n`trackCount`, `playlistCount`, `commentsCount`, `verified`, `pro`, `city`,\n`countryCode`, `lastModified`, `webProfiles`, `relationship` (followers mode),\n`sourceArtistId`, `sourceArtistUsername`.\n\n### Playlist / album fields\n\n`recordType=playlist`; keeps `title`, `url`, `trackId`, `artist`, `artistUrl`,\n`duration`, `likeCount`, `repostCount`, `genre`, `description`, `uploadDate`,\n`artworkUrl`, `scrapedAt`. Adds `playlistId`, `urn`, `trackCount`, `setType`,\n`isAlbum`, `tags`, `releaseDate`, `lastModified`, `durationMs`, `labelName`.\n\n### Comment fields\n\n`recordType=comment`; `commentId`, `body`, `createdAt`, `timestampMs`,\n`timestampFormatted`, `trackId`, `trackTitle`, `trackUrl`, `userId`, `username`,\n`userUrl`, `userFollowers`, `userCity`, `userCountry`, `scrapedAt`.\n\n## Input\n\n| Field | Type | Default | What it does |\n|---|---|---|---|\n| `mode` | select | `search` | `search`, `charts`, `artistTracks`, `byUrl`, `comments`, `followers` |\n| `searchQueries` | string list | `[]` | One or more search keywords |\n| `searchType` | select | `tracks` | `tracks`, `users`, `playlists`, `albums`, `all` |\n| `chartGenre` | select | `all` | Global New & Hot or one of 20 genre trending lists |\n| `searchGenre` | select | any genre | Real SoundCloud genre filter for track/playlist search |\n| `sortBy` | select | `relevance` | `relevance`, `newest`, `mostPlayed`, `mostLiked` (client-side) |\n| `minPlayCount`, `minLikeCount` | integer | `0` | Client-side thresholds after fetching |\n| `artistUrls` | string list | `[]` | Artist URLs, usernames or numeric user IDs |\n| `includeTracks` | boolean | `true` | Artist tracks |\n| `includeAlbums` | boolean | `false` | Artist albums/EPs |\n| `includePlaylists` | boolean | `false` | Artist playlists |\n| `includeTopTracks` | boolean | `false` | Artist top tracks |\n| `includeWebProfiles` | boolean | `false` | Public social/web profile links |\n| `startUrls` | URL list | `[]` | Track, playlist or artist URLs / numeric track IDs |\n| `includePlaylistTracks` | boolean | `true` | Expand every playlist track |\n| `includeUserProfile` | boolean | `true` | Emit the profile row for artist URLs in `byUrl` |\n| `trackUrls` | URL list | `[]` | Tracks for comments mode |\n| `commentsSort` | select | `newest` | `newest`, `oldest`, `track-timestamp` |\n| `relationship` | select | `followers` | `followers` or `followings` |\n| `resolveStreamUrls` | boolean | `true` | Resolve signed playable stream URLs + expiry |\n| `maxItems` | integer | `100` | Hard record cap (1-5000) |\n\n## Examples\n\n**Search tracks with a genre filter**\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"lofi\", \"ambient jazz\"],\n  \"searchType\": \"tracks\",\n  \"searchGenre\": \"Jazz & Blues\",\n  \"maxItems\": 100\n}\n```\n\n**Global New & Hot chart**\n\n```json\n{ \"mode\": \"charts\", \"chartGenre\": \"all\", \"maxItems\": 100 }\n```\n\n**Trap trending list**\n\n```json\n{ \"mode\": \"charts\", \"chartGenre\": \"trap\", \"maxItems\": 50 }\n```\n\n**Full artist catalog**\n\n```json\n{\n  \"mode\": \"artistTracks\",\n  \"artistUrls\": [\"https://soundcloud.com/chillhopdotcom\"],\n  \"includeTracks\": true,\n  \"includeAlbums\": true,\n  \"includePlaylists\": true,\n  \"maxItems\": 500\n}\n```\n\n**Expand a playlist**\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"startUrls\": [\"https://soundcloud.com/chillhopdotcom/sets/chillhop-essentials-summer-2026\"],\n  \"includePlaylistTracks\": true,\n  \"maxItems\": 300\n}\n```\n\n**Track comments**\n\n```json\n{\n  \"mode\": \"comments\",\n  \"trackUrls\": [\"https://soundcloud.com/user/track\"],\n  \"commentsSort\": \"newest\",\n  \"maxItems\": 200\n}\n```\n\n**Artist followers**\n\n```json\n{\n  \"mode\": \"followers\",\n  \"artistUrls\": [\"https://soundcloud.com/chillhopdotcom\"],\n  \"relationship\": \"followers\",\n  \"maxItems\": 500\n}\n```\n\n## Charts: what is available\n\nSoundCloud's current public chart surface is **New & Hot**, not the retired all-time\nTop chart. The actor returns:\n\n- the global New & Hot list (up to 100 tracks), and\n- 20 current genre trending lists (about 50 tracks each).\n\nThe old per-genre chart endpoint and the all-time Top chart are no longer available\nfrom SoundCloud's public API. Requests for the legacy `top` value are mapped to the\ncurrent global New & Hot list and the status message says so.\n\n## Stream URLs, previews and rights\n\nStream metadata comes from SoundCloud's public transcodings. `streamUrl` is a\n**signed** media URL and expires after about two hours; `streamUrlExpiresAt` records\nthe exact time. `streamUrlApi` is the stable API endpoint, but it is not playable on\nits own without a `client_id`.\n\nNot every track is fully playable: SoundCloud may return a 30-second preview\n(`streamUrlIsPreview=true`), use DRM/encrypted transcodings, or disable downloads.\nThe actor reports the metadata it can see and never fabricates an audio file. This\nactor does not download or rehost audio.\n\n## Limitations\n\n- Search returns at most **300 rows per query**. Use more queries or a genre filter\n  to reach further.\n- The all-time Top chart and regional/country charts are not available from the\n  current public surface.\n- Server-side BPM, duration, upload-date, license and access filters are not\n  available on SoundCloud's public v2 search; the actor only exposes the real\n  genre filter. `sortBy` and the minimum play/like thresholds are applied to the\n  rows already fetched.\n- SoundCloud does not publish a user join date or a user repost count in this API.\n- BPM and musical key are not exposed for tracks.\n- City/country, description, genre, tags, ISRC, UPC, label and release date are\n  conditional; fields are omitted when SoundCloud does not provide them.\n- Only public tracks, playlists and profiles are reachable. Private/unlisted\n  content is out of scope.\n- Huge follower lists can be expensive; use `maxItems` to cap them.\n\n## FAQ\n\n**Do I need a SoundCloud account or API key?** No. The actor reads the same public\npages and public v2 JSON the SoundCloud web player uses, with no login.\n\n**Why is `streamUrl` sometimes missing?** SoundCloud may expose only encrypted/DRM\ntranscodings or a preview for that track. `streamUrlApi`, `policy` and the preview\nflag still describe what is available.\n\n**Why does a search stop at 300 rows?** That is SoundCloud's public search window\nper query. Split the job into more queries or use `searchGenre` to partition it.\n\n**Why is `waveformUrl` a JSON file?** SoundCloud's waveform field points to amplitude\nJSON, not an image. It is kept under the existing field name for compatibility.\n\n**Can I schedule monitoring?** Yes. Run the actor on a schedule and compare\n`playCount`, `likeCount`, `repostCount` and `followersCount` snapshots. Monitoring\nhelpers are not part of this version; the dataset is designed for external diffing.\n\n**Is this affiliated with SoundCloud?** No. This is an independent actor that reads\npublicly visible data and is not endorsed by SoundCloud.\n",
      "input": {
        "title": "SoundCloud Scraper Input",
        "description": "Search SoundCloud, read the global or genre New & Hot charts, export an artist catalog, resolve track/playlist/profile URLs, collect comments, or list followers.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "What to collect",
            "type": "string",
            "description": "Choose the intent. Keyword search, New & Hot charts, an artist catalog, specific URLs, track comments, or an artist's followers.",
            "editor": "select",
            "enum": [
              "search",
              "charts",
              "artistTracks",
              "byUrl",
              "comments",
              "followers"
            ],
            "enumTitles": [
              "Search by keyword - tracks, users, playlists or albums",
              "Charts - global New & Hot or a genre trending list",
              "Artist catalog - profile, tracks, albums, playlists",
              "Track, playlist or artist URLs",
              "Track comments",
              "Artist followers or followings"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "One or more keywords or artist names (mode=search). Example: lofi, techno, ambient jazz.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": [
              "lofi"
            ]
          },
          "searchType": {
            "title": "Search result type",
            "type": "string",
            "description": "What kind of results to return (mode=search).",
            "editor": "select",
            "enum": [
              "tracks",
              "users",
              "playlists",
              "albums",
              "all"
            ],
            "enumTitles": [
              "Tracks",
              "Users / artists",
              "Playlists",
              "Albums",
              "All result types"
            ],
            "default": "tracks",
            "prefill": "tracks"
          },
          "chartGenre": {
            "title": "Chart genre",
            "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).",
            "editor": "select",
            "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"
            ],
            "enumTitles": [
              "Global New & Hot (100)",
              "All Genres (system list, ~50)",
              "Trap",
              "Hip Hop",
              "Pop",
              "Electronic",
              "R&B",
              "Alternative Hip Hop",
              "Indie",
              "Dubstep",
              "House",
              "Folk",
              "Alternative Rock",
              "Ambient",
              "Hardcore",
              "Rock",
              "Reggae",
              "Latin",
              "Metal",
              "Dancehall",
              "Afrobeat"
            ],
            "default": "all",
            "prefill": "all"
          },
          "searchGenre": {
            "title": "Genre filter",
            "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.",
            "editor": "select",
            "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"
            ],
            "enumTitles": [
              "(any genre)",
              "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"
            ],
            "default": "",
            "prefill": "",
            "sectionCaption": "Search filters",
            "sectionDescription": "Optional refinements for mode=search. Genre is applied by SoundCloud; sort and minimum counts are applied to the fetched rows."
          },
          "sortBy": {
            "title": "Sort fetched rows",
            "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.",
            "editor": "select",
            "enum": [
              "relevance",
              "newest",
              "mostPlayed",
              "mostLiked"
            ],
            "enumTitles": [
              "Relevance (source order)",
              "Newest upload",
              "Most played",
              "Most liked"
            ],
            "default": "relevance",
            "prefill": "relevance"
          },
          "minPlayCount": {
            "title": "Minimum plays",
            "type": "integer",
            "description": "Drop track/playlist rows below this play count after fetching. 0 means no filter.",
            "minimum": 0,
            "maximum": 1000000000,
            "default": 0,
            "prefill": 0
          },
          "minLikeCount": {
            "title": "Minimum likes",
            "type": "integer",
            "description": "Drop track/playlist rows below this like count after fetching. 0 means no filter.",
            "minimum": 0,
            "maximum": 1000000000,
            "default": 0,
            "prefill": 0
          },
          "artistUrls": {
            "title": "Artists",
            "type": "array",
            "description": "Artist profile URLs, usernames, or numeric user IDs. Used by artistTracks and followers modes.",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": [],
            "sectionCaption": "Artist catalog",
            "sectionDescription": "Controls what is exported for each artist profile. The profile row is always included in artistTracks."
          },
          "includeTracks": {
            "title": "Include tracks",
            "type": "boolean",
            "description": "Include the artist's uploaded tracks.",
            "default": true,
            "prefill": true
          },
          "includeAlbums": {
            "title": "Include albums",
            "type": "boolean",
            "description": "Include the artist's albums/EPs as playlist rows.",
            "default": false,
            "prefill": false
          },
          "includePlaylists": {
            "title": "Include playlists",
            "type": "boolean",
            "description": "Include the artist's playlists as playlist rows.",
            "default": false,
            "prefill": false
          },
          "includeTopTracks": {
            "title": "Include top tracks",
            "type": "boolean",
            "description": "Include SoundCloud's small top-tracks list for each artist.",
            "default": false,
            "prefill": false
          },
          "includeWebProfiles": {
            "title": "Include web profiles",
            "type": "boolean",
            "description": "Add the artist's public social/web profile links to the profile row.",
            "default": false,
            "prefill": 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.",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "SoundCloud track, playlist, album, user, or search URL."
                }
              }
            },
            "default": [],
            "prefill": [],
            "sectionCaption": "URLs and playlists",
            "sectionDescription": "Playlist URLs export the playlist row and, when enabled, every track in it. Artist URLs export the profile and uploaded tracks."
          },
          "includePlaylistTracks": {
            "title": "Expand playlist tracks",
            "type": "boolean",
            "description": "For playlist URLs, hydrate and emit every track (not just the first five).",
            "default": true,
            "prefill": 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,
            "prefill": true
          },
          "trackUrls": {
            "title": "Track URLs or IDs",
            "type": "array",
            "description": "Tracks whose public comments should be collected. Used by mode=comments.",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL",
                  "description": "SoundCloud track URL used for comments mode."
                }
              }
            },
            "default": [],
            "prefill": [],
            "sectionCaption": "Comments and audience",
            "sectionDescription": "Comment collection and follower/following collection. These modes keep the track or artist context on every row."
          },
          "commentsSort": {
            "title": "Comment order",
            "type": "string",
            "description": "How SoundCloud should order comments.",
            "editor": "select",
            "enum": [
              "newest",
              "oldest",
              "track-timestamp"
            ],
            "enumTitles": [
              "Newest first",
              "Oldest first",
              "By time in track"
            ],
            "default": "newest",
            "prefill": "newest"
          },
          "relationship": {
            "title": "Follower relationship",
            "type": "string",
            "description": "For mode=followers, collect the artist's followers or the accounts the artist follows.",
            "editor": "select",
            "enum": [
              "followers",
              "followings"
            ],
            "enumTitles": [
              "Followers",
              "Accounts followed"
            ],
            "default": "followers",
            "prefill": "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,
            "prefill": true,
            "sectionCaption": "Advanced",
            "sectionDescription": "Stream resolution and the overall record cap."
          },
          "maxItems": {
            "title": "Maximum records",
            "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.",
            "minimum": 1,
            "maximum": 5000,
            "default": 100,
            "prefill": 2
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "SoundCloud Charts, Search & Artist Catalog Scraper Output",
        "description": "SoundCloud tracks, artists, playlists, albums and comments - charts, search results, full artist catalogs, playlist contents, engagement metrics, creator details, artwork, waveform and stream metadata.",
        "properties": {
          "soundcloud": {
            "type": "string",
            "title": "SoundCloud records",
            "description": "Dataset containing every scraped SoundCloud track, artist, playlist/album and comment row.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "SoundCloud records",
              "transformation": {
                "fields": [
                  "recordType",
                  "title",
                  "artist",
                  "playCount",
                  "likeCount",
                  "genre",
                  "uploadDate",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {}
    },
    "buildNumber": "1.1.1",
    "imageDigest": "7daaffc720b7d608d4a757473a2d9d3e2adcfa6ac35cb9246a8973db9f6ed7c1",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.010171111111111112
    }
  }
}