VOOZH about

URL: https://developers.soundcloud.com/docs/api/rate-limits

⇱ Rate Limits - SoundCloud Developers


SoundCloud for Developers

Discover, connect and build

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 — reuse access tokens and renew with refresh_token instead of repeating client-credentials exchanges (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.