{
  "openapi": "3.0.1",
  "info": {
    "title": "SoundCloud Scraper - Artists, Tracks & Creator Leads",
    "description": "Scrape SoundCloud: search artists & tracks, full creator profiles, tracks, albums & playlists, plus creator-contact leads (booking/management emails, socials, website). Followers, plays, genres, monitoring. No login, no API key, no browser. Independent tool, not affiliated with SoundCloud.",
    "version": "0.1",
    "x-build-id": "i7U0bzOVsZJIKVEzT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~soundcloud-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-soundcloud-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/scrapesage~soundcloud-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-soundcloud-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/scrapesage~soundcloud-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-soundcloud-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "searchArtists",
              "artistDetails",
              "searchTracks"
            ],
            "type": "string",
            "description": "Pick a job. Search artists finds creators by keyword (full profiles + leads). Artist details pulls full profiles for specific artists (plus their tracks/playlists). Search tracks finds tracks by keyword.",
            "default": "searchArtists"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search SoundCloud for, e.g. `lofi`, `techno producer`, `hip hop beats`, an artist name, or a genre. One row per term. Used by the Search artists and Search tracks modes.",
            "items": {
              "type": "string"
            }
          },
          "artistUrls": {
            "title": "Artist URLs / permalinks / IDs",
            "type": "array",
            "description": "Artists to pull full details for: profile URLs (`https://soundcloud.com/flume`), bare permalinks (`flume`), or numeric user ids (`2976616`). One per row. (Mode: Artist details.)",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerQuery": {
            "title": "Max results per search term",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Cap the number of artists (or tracks) returned per search term. Results are paginated automatically until this limit or the result set is exhausted. The minimum followers and email filters are applied first, so the cap counts artists that pass them.",
            "default": 30
          },
          "includeWebProfiles": {
            "title": "Include web profiles (socials + website)",
            "type": "boolean",
            "description": "Fetch each artist's linked profiles - Instagram, Twitter/X, Facebook, YouTube, Spotify, their own website and more (one extra request per artist). This is the main lead wedge alongside the booking/management email in the bio.",
            "default": true
          },
          "includeTracks": {
            "title": "Include artist tracks",
            "type": "boolean",
            "description": "For artist modes, also output recent track records (type `track`) for each artist - title, genre, plays, likes, duration, release date and more. In monitoring mode this returns only NEW tracks since the last run.",
            "default": false
          },
          "maxTracksPerArtist": {
            "title": "Max tracks per artist",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many recent tracks to pull per artist when 'Include artist tracks' is on.",
            "default": 10
          },
          "includePlaylists": {
            "title": "Include artist playlists & albums",
            "type": "boolean",
            "description": "For artist modes, also output playlist/album records (type `playlist`) for each artist - title, track count, genre, release date and more.",
            "default": false
          },
          "maxPlaylistsPerArtist": {
            "title": "Max playlists per artist",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many playlists/albums to pull per artist when 'Include artist playlists & albums' is on.",
            "default": 10
          },
          "enrichCreatorContacts": {
            "title": "Enrich creator contacts (crawl website for emails, phone, socials)",
            "type": "boolean",
            "description": "Opt-in lead enrichment: visit each artist's own public website (home + a contact/about page) and extract contact emails, phone numbers and social links - for A&R, sync licensing, distribution, PR and booking outreach. Only runs for artists that list a website.",
            "default": false
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Skip artists with fewer than this many followers. 0 keeps everyone.",
            "default": 0
          },
          "withEmailOnly": {
            "title": "Only artists with an email",
            "type": "boolean",
            "description": "Output only artists that have at least one email (from the bio or, if enrichment is on, their website). Tightens the result set to ready-to-contact leads. With enrichment on, a search reads up to 4 artists per wanted result to find ones with an email.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitoring mode - only new records",
            "type": "boolean",
            "description": "Remember what was already returned and emit ONLY records not seen in previous runs (new artists for a search, new tracks per artist, or new tracks for a search). Pairs with Apify Schedules to track changes over time.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor store name",
            "type": "string",
            "description": "Named key-value store that holds the 'already seen' ids for monitoring mode. Use a different name per tracked target/query to keep their histories separate. Lowercase letters, digits and hyphens only.",
            "default": "soundcloud-monitor"
          },
          "clientId": {
            "title": "SoundCloud client_id (optional)",
            "type": "string",
            "description": "Optional override for the public SoundCloud web client_id. Leave blank - the actor discovers a fresh one automatically. Only set this if results come back empty (SoundCloud rotated the key)."
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum parallel requests. Lower it if you hit rate limits on very large runs.",
            "default": 5
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. SoundCloud's public API works fine through the default Apify datacenter proxy; switch to residential for very large or high-frequency runs.",
            "default": {
              "useApifyProxy": true
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}