Rate Limits
Rate limits are per client_id. Exceeding a limit returns HTTP 429 Too Many Requests.
- Play stream requests: 15,000 per 24-hour window
- Applies to:
/tracks/:id/stream - Global aggregate limit: not currently enforced
- Client Credentials tokens: 50 per 12 hours per app, 30 per hour per IP (see Authentication in the API Guide)
All rate limits on the SoundCloud API are calculated against a client application's client ID.
Global Rate Limit
No limit is currently enforced on the total number of calls a client application makes in aggregate.
Rate Limit on Play Requests
Requests that result in access to a playable stream are limited to 15,000 per 24-hour window. This applies to all requests made to /tracks/:id/stream.
A new time window starts from the first request after the previous window expires.
Most SoundCloud API rate limits use 24-hour time windows.
Reaching Rate Limits
Exceeding an API rate limit returns an HTTP 429 Too Many Requests response. The response body is a JSON object containing details about the rate limit reached and when it resets.
Example error response for the play-request rate limit:
{
"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"
}
}
]
}
When multiple rate limits have been exceeded, the JSON API error response includes the following fields:
| Field | Meaning |
|---|---|
rate_limit |
Object containing data about the specific rate limit exceeded. |
group |
Name of the rate limit endpoint group. Currently only the plays group is limited. |
max_nr_of_requests |
Number of requests allowed for the endpoint group. |
time_window |
Duration of the time window as ISO 8601 for the group. |
remaining_requests |
Number of remaining requests for the group. |
reset_time |
Time of the limit reset in the format yyyy/MM/dd HH:mm:ss Z. |