{
  "openapi": "3.0.1",
  "info": {
    "title": "SoundCloud Plays & Followers Tracker - Likes, Reposts, Changes",
    "description": "Followers of any SoundCloud artist and the plays, likes, reposts and comments of their tracks, albums and playlists, as exact numbers. Paste profile, track or playlist links or artist names. Turn monitoring on and later runs return only what changed, with the difference. No login.",
    "version": "0.1",
    "x-build-id": "z5aMINiqZP5dzDr21"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~soundcloud-plays-followers-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-soundcloud-plays-followers-tracker",
        "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/neverempty~soundcloud-plays-followers-tracker/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-soundcloud-plays-followers-tracker",
        "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/neverempty~soundcloud-plays-followers-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-soundcloud-plays-followers-tracker",
        "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": {
          "targets": {
            "title": "SoundCloud profiles, tracks, playlists or names",
            "type": "array",
            "description": "One per line. Profile links (https://soundcloud.com/flume), track links (https://soundcloud.com/flume/never-be-like-you-feat-kai), playlist or album links (https://soundcloud.com/flume/sets/palaces), on.soundcloud.com short links, soundcloud:tracks:123 URNs, profile names (flume or @flume) or artist names (Billie Eilish). A name is matched only when a profile has exactly that name; if several do and none stands out, the row lists them and is not charged. Private share links are not read.",
            "items": {
              "type": "string"
            }
          },
          "profileTracks": {
            "title": "Tracks to add for each profile",
            "enum": [
              "popular",
              "latest"
            ],
            "type": "string",
            "description": "Popular = the tracks on the profile's Popular tracks tab, in SoundCloud's order (at most 25). Latest = the newest uploads first.",
            "default": "popular"
          },
          "tracksPerProfile": {
            "title": "Tracks per profile",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How many tracks to return under each profile, each as its own row with plays, likes, reposts and comments. 0 returns the profile row only. SoundCloud lists at most 25 popular tracks for a profile; choose Latest uploads to go further back.",
            "default": 5
          },
          "tracksPerPlaylist": {
            "title": "Tracks per playlist or album",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "How many tracks of each playlist or album to return, in playlist order. 0 returns the playlist row only. The total plays of all tracks is filled in when every track of the playlist was read.",
            "default": 50
          },
          "maxItems": {
            "title": "Maximum rows to return",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "With monitoring off, the run stops after this many rows (profiles, tracks and playlists together) and names what it did not read in a row that is not charged. Monitoring mode ignores this and checks everything you listed.",
            "default": 200
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only what changed",
            "type": "boolean",
            "description": "Off = return every row, charged per row. On = the numbers are remembered and later runs return a profile, track or playlist only when a number differs from the remembered one, together with the previous figure and the difference. In monitoring mode each item that was read is charged as one check (item-checked), and an item that is returned is also charged as one row (item-returned). The first monitoring run returns every item once. Numbers are remembered per item, not per list, so adding a track does not return the others again. Do not put the same item in two schedules that run at the same moment.",
            "default": false
          },
          "monitorMode": {
            "title": "What counts as a change",
            "enum": [
              "any-change",
              "headline-change"
            ],
            "type": "string",
            "description": "Any change = followers or track count for a profile; plays, likes, reposts or comments for a track; likes, reposts or track count for a playlist. Headline number only = followers for a profile, plays for a track, likes for a playlist.",
            "default": "any-change"
          },
          "resetMonitoringState": {
            "title": "Forget the remembered numbers and start over",
            "type": "boolean",
            "description": "Clears every remembered number for this Actor on your account, so the next monitoring run returns each item once again. This affects all your monitoring runs, because numbers are remembered per item rather than per list.",
            "default": false
          },
          "useProxy": {
            "title": "Retry through a residential proxy when SoundCloud answers 403 or 429",
            "type": "boolean",
            "description": "Requests go directly to SoundCloud. If SoundCloud answers HTTP 403 or 429, the request is sent again through an Apify residential proxy and, if it is refused again, the run stops asking and names what it did not read. Turn this off to never use a proxy.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}