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.
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:
| When | What changed |
|---|---|
| September 2016 | Signup moved to an application form, reviewed case by case |
| Later | The form stopped accepting applications; developers waited years for it to reopen |
| 2025 | Creators could request access through SoundCloud's assistant, with manual review |
| 18 May 2026 | Self-service keys for Artist Pro subscribers, issued instantly |
| 16 June 2026 | An 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:
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"), NoneUnofficial 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:
| Endpoint | What 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}/tracks | A user's tracks |
GET /tracks/{track_urn}/streams | Stream 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:
| Operation | Endpoint | Needs | Credits |
|---|---|---|---|
| Profile | /v1/soundcloud/profile | handle | 1 |
| Track | /v1/soundcloud/track | id | 1 |
| Tracks | /v1/soundcloud/tracks | handle | 1 |
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