Tony Wang4 分で読めます2026年版 Spotifyのスクレイピング方法(APIとPython)
2026年にSpotifyをスクレイピングする方法 — OAuth Web APIでの自作(および2024年のロックダウン)、ノーコード、あるいは公開カタログ・検索・プレイリスト向けの構造化API。
2026年にSpotifyを最も手早くスクレイピングする方法は、OAuthやSpotifyのますます閉鎖的になっているWeb APIと格闘する代わりに、正規化されたJSON(公開カタログの検索、トラック、アーティスト、アルバム、プレイリスト、ディスカバリー)を返す構造化APIを呼び出すことです。公式APIで自作することもできますが、OAuth(およびPremiumに紐づいたアプリ)が必要なうえ、多くの人が最も頼りにしていたエンドポイントのいくつかが削除されてしまいました。このガイドでは3つのアプローチすべてについて、それぞれ何が返ってくるのか、どこで行き詰まるのか、そして法的な基本事項を解説します。
なぜSpotifyをスクレイピングするのか
公開されているSpotifyのカタログデータは、音楽リサーチの一分野を支えています。
- カタログとプレイリストのインテリジェンス — どのプレイリストにどのトラックが入っているか、そしてプレイリストがどう変化するかを追跡します。
- アーティストとレーベルのモニタリング — ディスコグラフィー、関連アーティスト、プレイリストへの掲載状況を時系列で追います。
- A&Rとトレンドのリサーチ — ディスカバリー系エンドポイントを通じて、伸びているアーティストや隣接性を浮かび上がらせます。
- レコメンデーションのリサーチ — トラックやアルバムがカタログ全体でどう関連し合っているかを調べます。
Spotifyをスクレイピングするのは合法か
選択肢1:公式APIで自作する(そしてなぜ制約が多いのか)
公式のルートは spotipy を介したOAuth Web APIです。
import spotipy
from spotipy.oauth2 import SpotifyClientCredentials
sp = spotipy.Spotify(auth_manager=SpotifyClientCredentials(client_id="...", client_secret="..."))
results = sp.search(q="daft punk", type="artist")
基本的な検索には使えますが、その後いくつもの壁にぶつかります。
- OAuthとPremiumのゲート。 すべての呼び出しにOAuthトークン(Client ID / Secret)が必要で、Development ModeのアプリはアプリのオーナーがアクティブなSpotify Premium サブスクリプションを維持することを要求します。それが失効すると、アプリは動作を停止します。
- 2024年11月のロックダウン。 2024年11月27日、Spotifyは
audio-features、audio-analysis、recommendations、related-artists、featured-playlistsを廃止しました。新規アプリは403を受け取り、いまだに代替はありません。そのため、多くのディスカバリーや分析のツールはもはや公式APIの上には構築できなくなっています。 - クォータの厳格化。 2026年2月のWeb APIの変更により、Development ModeのアプリはExtended Quota Modeの承認なしだとおよそ25ユーザーに制限され、レート制限は30秒のローリングウィンドウで計算されます。
- アプリのスクレイピングはさらに困難。 APIを回避するということは、SpotifyのReact製シングルページアプリをレンダリングし、その内部のGraphQLをリバースエンジニアリングすることを意味します。プロキシ、ヘッドレスブラウザ、そして内部APIが変わるたびに壊れることになります。
選択肢2:ノーコードツール
ビジュアル抽出ツールやマーケットプレイスの「Spotifyスクレイパー」アクターはCSV/JSONをエクスポートし、単発の取得には向いていますが、製品内のパイプラインでは扱いづらく、同じアプリの変更で壊れてしまいます。
選択肢3:構造化されたSpotify API
公開データを対象とした繰り返し可能なワークフローには、SpotifyスクレイピングAPIが管理すべきOAuthなしで正規化されたJSONを返します。カタログを検索するには次のようにします。
curl "https://api.crawlora.net/api/v1/spotify/search?q=daft%20punk" \
-H "x-api-key: $CRAWLORA_API_KEY"
続いてPythonで検索 → 詳細 → ディスカバリーを連鎖させます。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/spotify"
# search returns Spotify uris (spotify:track:..., spotify:artist:...)
hits = requests.get(f"{base}/search", headers=h, params={"q": "daft punk"}).json()["data"]
# address detail endpoints by uri or id
artist = requests.get(f"{base}/artist", headers=h, params={"id": "0TnOYISbd1XYRBk9myaseg"}).json()["data"]
albums = requests.get(f"{base}/artist/albums", headers=h, params={"id": "0TnOYISbd1XYRBk9myaseg"}).json()["data"]
related = requests.get(f"{base}/artist/related", headers=h, params={"id": "0TnOYISbd1XYRBk9myaseg"}).json()["data"]
検索のレスポンスは正規化されたJSONです(フィールドは説明用です。ドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"searchTerm": "daft punk",
"offset": 0,
"limit": 10,
"topResults": [
{ "uri": "spotify:artist:4tZwfgrHOc3mvqYlEYSvVi", "type": "Artist", "title": "Daft Punk", "externalUrl": "https://open.spotify.com/artist/4tZwfgrHOc3mvqYlEYSvVi" }
],
"artists": [
{ "uri": "spotify:artist:4tZwfgrHOc3mvqYlEYSvVi", "type": "Artist", "title": "Daft Punk", "externalUrl": "https://open.spotify.com/artist/4tZwfgrHOc3mvqYlEYSvVi" }
]
}
}
トラック、アーティスト、アルバム、プレイリストは、それぞれの uri(例:spotify:artist:…)または id で指定します。ディスカバリー系エンドポイント(artist/related、track/recommended、track/similar-albums)は、特に公式APIが2024年に削除した関連データをカバーしています。検索とリスト系のエンドポイントは offset/limit でページネーションします。1アイテムにつき1行を保存し、スケジュールを組んで再取得しましょう。
収集できるもの
公開カタログのメタデータ。トラック、アーティスト、アルバム、プレイリスト、番組/エピソード、オーディオブックにまたがる検索、アーティストの詳細とディスコグラフィー、アルバムのトラック、プレイリストの内容、そしてディスカバリー(関連アーティスト、おすすめトラック、類似アルバム)。それぞれがSpotifyの uri と open.spotify.com のURLを持ちます。公開メタデータのみです。
制約とよくある課題
- オーディオ特徴量ではなく公開メタデータ。 これが返すのは公開カタログとディスカバリーのデータであり、Spotifyが2024年に廃止したBPM・キー・ダンス性のオーディオ特徴量ではありません。それらが必要な場合は、権利を持っている音声に対してEssentiaのようなオープンなツールを実行することになります。
- 非公開データやユーザーデータは対象外。 再生履歴、ライブラリ、アカウントデータはユーザーログインの背後にあり、対象外です。公開カタログのみを収集してください。
- uri と id。 検索はSpotifyのuriを返し、詳細エンドポイントは
uriまたはidを受け取ります。指定できるように、検索から得たidを保持しておきましょう。 - カタログは変化する。 プレイリストやディスコグラフィーは変わるため、一度限りのスナップショットを信頼するのではなく、スケジュールを組んで再取得してください。
どこで使われるか
- 音楽カタログとプレイリストのインテリジェンス — プレイリストへの掲載状況やカタログの変化を追跡します。音楽カタログとプレイリストのインテリジェンスのユースケースを参照してください。
- アーティストとレーベルのモニタリング — ディスコグラフィー、関連アーティスト、掲載状況を追います。
- トレンドとA&Rのリサーチ — ディスカバリー系エンドポイントを通じて、伸びているアーティストを浮かび上がらせます。
出典
収集を始める
まずは無料でお試しください: 任意の公開URLを無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックしているかどうかを確認できます。サインアップは不要です。
Playgroundで検索エンドポイントを試し、APIドキュメントでスキーマを確認し、料金をご覧ください。オーディオ関連の残りのスタックについてはApple Podcastsのスクレイピング方法、ウェブスクレイピングAPIの選び方、ウェブスクレイピングは合法かもあわせてご覧ください。
よくある質問
Spotifyに公式APIはありますか?
はい、Web APIがありますが、OAuthが必要で、次第に閉鎖的になっています。2024年11月27日、Spotifyはaudio-features、audio-analysis、recommendations、related-artists、featured-playlistsを廃止しました(新規アプリは403を受け取り、代替はありません)。またDevelopment ModeのアプリはオーナーのSpotify Premiumが必須で、2026年2月以降はクォータ拡張なしだと約25ユーザーに制限されます。
OAuthなしでSpotifyをスクレイピングできますか?
公開カタログデータについては、はい。構造化APIが、OAuthトークンやPremiumに紐づいたアプリなしで、検索・トラック・アーティスト・アルバム・プレイリスト・ディスカバリーを正規化されたJSONで返します。非公開のユーザーデータ(再生履歴、ライブラリ)はログインの背後にあり、対象外のままです。
BPMやキーのようなオーディオ特徴量は取得できますか?
Spotifyからはもう取得できません。Spotifyは2024年にaudio-featuresとaudio-analysisのエンドポイントを代替なしで廃止しました。カタログスクレイパーが返すのは公開メタデータとディスカバリーであり、それらの数値ではありません。BPMやキーを導き出すには、権利を持っている音声に対してEssentiaのようなオープンなツールを実行することになります。
トラック、アーティスト、プレイリストはどのように指定しますか?
すべてがSpotifyのuri(例:spotify:artist:...)またはidを使います。検索は結果の中にuriを返すので、そのuriまたはidを/spotify/track、/spotify/artist、/spotify/album、/spotify/playlistに渡します。リスト系エンドポイントはoffsetとlimitでページネーションします。
どんなSpotifyデータを収集できますか?
公開カタログのメタデータです。トラック、アーティスト、アルバム、プレイリスト、番組/エピソード、オーディオブックにまたがる検索、アーティストの詳細とディスコグラフィー、アルバムのトラック、プレイリストの内容、そしてディスカバリー(関連アーティスト、おすすめトラック、類似アルバム)。それぞれがSpotifyのuriとopen.spotify.comのURLを持ちます。
Spotifyをスクレイピングするのは合法ですか?
公開カタログのメタデータの収集は、一般的にリスクの低い公開ウェブのスクレイピングですが、Spotifyの利用規約は自動アクセスを制限しており、非公開・ユーザーデータは対象外で、DRMの回避や音声のダウンロードは決して行ってはいけません。公開メタデータのみを使用し、規約を確認してください。法的助言ではありません。
どのくらいの頻度で更新できますか?
プレイリストやディスコグラフィーは変化するので、継続的にポーリングするのではなく、プランと責任ある利用の範囲内でスケジュールを組んで再取得してください。