SoundCloud for Developers

Discover, connect and build

We use cookies for various purposes including analytics and personalized marketing. By continuing to use the service, you agree to our use of cookies as described in the Cookie Policy.

Rate Limits

All rate limits on the SoundCloud API are currently calculated against a client application's client id.

Global Rate Limit

We currently do not enforce any limit on the total number of calls made by a client application in aggregate.

Rate Limit on Play Requests

Effective July 1, all requests that result in access to a playable stream are subject to a limit of 15,000 requests per any 24-hour time window. Currently, this is inclusive of all requests that are made to /tracks/:id/stream.

After a previous time window has expired, a new time window starts from the first request made.

The majority of SoundCloud API rate limits are in the form of 24-hour time windows.

Reaching Rate Limits

If your app exceeds an API rate limit, the service will return an HTTP 429 response code Too Many Requests. The body of the response is a JSON object that contains additional information about the rate limit reached and when the limit will be reset.

The following example is an error response for the rate limit on play requests:

  "errors": [
      "meta": {
        "rate_limit": {
          "group": "plays",
          "max_nr_of_requests": 15000,
          "time_window": "PT24H"
         "remaining_requests": 0,
         "reset_time": "2015/06/01 09:49:40 +0000"

If your client has exceeded multiple rate limits, the service will return a JSON API error response that contains additional information.

Field Meaning
rate_limit An object that contains data about the specific rate limit exceeded in this error.
group The name of the rate limit endpoint group. Currently we only limit the plays group.
max_nr_of_requests The number of requests allowed for the endpoint group.
time_window The time window duration as ISO 8601 for group.
remaining_requests The number of remaining requests for group.
reset_time The time of the limit reset in the format yyyy/MM/dd HH:mm:ss Z.