SoundCloud API in 2026: How to Get a Key, Auth and Python

SoundCloud reopened API keys in May 2026, for Artist Pro subscribers only. How to register, authenticate with OAuth 2.1, search tracks in Python and stay in limits.

Ilyas5 min read
The short answer

Since 18 May 2026, SoundCloud issues API keys instantly, but only to Artist Pro subscribers, through soundcloud.com/you/apps or its CLI. The API at https://api.soundcloud.com uses OAuth 2.1: client credentials for public tracks, users and search, sent as an "Authorization: OAuth" header. Tokens last about an hour, apps may mint 50 per 12 hours, and streams are capped at 15,000 a day. The old soundcloud-python library is deprecated; call the API with requests.

The SoundCloud API is open again, with a catch. After years of closed registrations, SoundCloud started issuing keys instantly on 18 May 2026, but only to Artist Pro subscribers. This guide covers how to get a key, how the OAuth 2.1 flow works, how to search tracks and resolve URLs in Python, and the limits and terms that matter.

Can you still get a SoundCloud API key?

Yes, if you pay for Artist Pro. The history explains why so many tutorials say otherwise:

WhenWhat changed
September 2016Signup moved to an application form, reviewed case by case
LaterThe form stopped accepting applications; developers waited years for it to reopen
2025Creators could request access through SoundCloud's assistant, with manual review
18 May 2026Self-service keys for Artist Pro subscribers, issued instantly
16 June 2026An official command-line tool for credentials, and the OpenAPI spec published on GitHub

To register, sign in with an Artist Pro account and either fill in the form at soundcloud.com/you/apps (name, description, website and the terms) or use the CLI described in SoundCloud's registration guide. You get a client id and a client secret.

How does SoundCloud API authentication work?

SoundCloud moved to OAuth 2.1 in 2024, and every client is treated as confidential, so you always need the secret. Per the API guide there are two flows:

  • Client credentials, for public resources: search, tracks, users, playlists and resolving URLs.
  • Authorization code with PKCE, for anything done as a user, such as uploading or reading their likes.

Two details trip up most first attempts. The client id and secret go in an HTTP Basic auth header, because sending them in the request body is not supported. And the access token goes in the header as Authorization: OAuth <token>, not Bearer. Calls without it return 401; the old pattern of adding ?client_id= to a URL was retired in 2021.

Tokens last about an hour. Cache yours and reuse it: an app may create only 50 client credentials tokens in 12 hours, and 30 per hour from one IP address.

How do you use the SoundCloud API with Python?

The official soundcloud-python package last shipped in 2015 and is marked deprecated, so use requests. This gets a token, resolves a track URL and searches for tracks:

python
import os
import requests

API = "https://api.soundcloud.com"

token = requests.post(
    "https://secure.soundcloud.com/oauth/token",
    auth=(os.environ["SOUNDCLOUD_CLIENT_ID"], os.environ["SOUNDCLOUD_CLIENT_SECRET"]),
    data={"grant_type": "client_credentials"},
).json()["access_token"]
headers = {"Authorization": f"OAuth {token}"}

# Turn a soundcloud.com URL into an API object (the API answers with a redirect).
track = requests.get(
    f"{API}/resolve",
    headers=headers,
    params={"url": "https://soundcloud.com/forss/flickermood"},
).json()
print(track["urn"], track["title"])

# Search tracks, following next_href until there are no more pages.
url, params = f"{API}/tracks", {"q": "lofi", "limit": 50, "linked_partitioning": "true"}
while url:
    page = requests.get(url, headers=headers, params=params).json()
    for t in page["collection"]:
        print(t["urn"], t["title"])
    url, params = page.get("next_href"), None

Unofficial packages such as soundcloud-v2 wrap SoundCloud's internal API rather than the developer API, and libraries that scrape a client id from the website to download audio break SoundCloud's terms. Prefer the official API now that keys are available again.

Which SoundCloud API endpoints matter most?

All live under https://api.soundcloud.com, described in the official OpenAPI spec:

EndpointWhat it returns
GET /resolve?url=…The API object behind a soundcloud.com URL
GET /tracks?q=…Track search
GET /users?q=…User search
GET /playlists?q=…Playlist search
GET /tracks/{track_urn}One track
GET /users/{user_urn}One user
GET /users/{user_urn}/tracksA user's tracks
GET /tracks/{track_urn}/streamsStream URLs for playback

Two changes break older code. IDs are now URNs such as soundcloud:tracks:308946187; the numeric id field was deprecated in 2025. And lists page with linked_partitioning=true and next_href, up to 200 items per page, while offset is deprecated.

What are the SoundCloud API limits and terms?

The rate limits are narrow: 15,000 play or stream requests per app in a 24-hour window, the token limits above, and HTTP 429 when you go over. There is no published cap on other calls.

The API terms of use matter more for most projects:

  • No AI use. Content from the API may not be used to train or develop AI, to create fingerprints, or as input to AI tools such as stem separation.
  • Attribution. Credit the uploader and SoundCloud, and on the web link each sound back to its soundcloud.com page.
  • No downloads. No file saving, no offline playback and no re-uploading audio elsewhere; caching is allowed only for the session.
  • SoundCloud decides. It can judge an app unacceptable and revoke access.

Getting SoundCloud artists without an Artist Pro key

If you only need public metadata, such as an artist's profile and track list for research, a dashboard or matching artists across platforms, and you do not want to subscribe to Artist Pro for a key, crawlfeed serves these SoundCloud reads with one API key:

OperationEndpointNeedsCredits
Profile/v1/soundcloud/profilehandle1
Track/v1/soundcloud/trackid1
Tracks/v1/soundcloud/trackshandle1

Each call costs 1 credit. Artists come back as Profile objects and tracks as Track objects, the same types crawlfeed uses for Spotify, Apple Music and TikTok sounds, so one parser covers every music source:

curl -G https://api.crawlfeed.dev/v1/soundcloud/tracks \
  -H "Authorization: Bearer $CRAWLFEED_KEY" \
  --data-urlencode "handle=flume"

crawlfeed returns metadata only, never audio, and SoundCloud's terms still govern what you do with its content. For parameters, see the SoundCloud reference; for the other big music API, see the Spotify search API guide.

The short answer

You can get a SoundCloud API key again, but only with Artist Pro, at soundcloud.com/you/apps or through SoundCloud's CLI. Authenticate with the client credentials grant, send the token as Authorization: OAuth, cache it for its hour, and page with next_href. Skip the deprecated soundcloud-python package and use requests. Keep within 15,000 streams a day, and do not use API content for AI.

Questions

Can I still get a SoundCloud API key?

Yes, if you subscribe to Artist Pro. SoundCloud reopened self-service registration on 18 May 2026: Artist Pro subscribers register an app at soundcloud.com/you/apps or with SoundCloud's API CLI and get keys instantly, with no manual review. Before that, new applications were closed for years.

Is the SoundCloud API free?

SoundCloud charges nothing per call and says it may introduce fees later. In practice the price of a key is the Artist Pro subscription, since only Artist Pro subscribers can register new apps.

How do I authenticate with the SoundCloud API?

Use OAuth 2.1. For public data such as search, tracks and users, request a token from https://secure.soundcloud.com/oauth/token with the client credentials grant, sending your client id and secret as HTTP Basic auth. Then send Authorization: OAuth <token> on each call. Passing only a client_id has not been supported since 2021.

Is there an official SoundCloud Python library?

Not a maintained one. The official soundcloud-python package last shipped in 2015 and is marked deprecated. Use requests or httpx against the official API. Packages such as soundcloud-v2 are unofficial and wrap SoundCloud's internal API rather than the developer API.

What are the SoundCloud API rate limits?

Each app can make 15,000 play or stream requests in a 24-hour window, and can mint 50 client credentials tokens per 12 hours, plus 30 per hour per IP address. There is currently no cap on other API calls. Going over returns HTTP 429.

Try it on your own data

Every example above runs as written. New accounts get 100 free credits, no card needed.

Get an API key