About

YouTube収集でsearch.listは節約すべき資源だ — チャンネル探しにだけ使い、残りは1 unitの経路で

type=videoではなくtype=channelで探したら、ライブカメラが24件から113件に増えた

YouTube Data APIで動画を集めていて、quota(1日の呼び出し上限)がすぐ尽きる人向けの記事だ。読み終わると、search.listを何にだけ使い、残りをどの呼び出しに置き換えるか、そして「いま配信中」の検索がなぜ取りこぼすのかがわかる。

キーワードを16個に増やしても0件

埼玉のライブカメラを集めて地図に載せていた。ところが大宮周辺だけがやけに空いていた。検索語を区単位で16個まで増やしても、新しく出てきた再生可能なカメラは0件。キーワード検索が飽和していた。

チャンネル名がそのまま住所だった

手元のカメラを見直すと、この地域のライブカメラは1チャンネル1カメラで、チャンネル名が設置住所そのものだった。埼玉県さいたま市大宮区桜木町ライブカメラ といった具合だ。

それまでは type=video&eventType=live で探していた。これは今まさに配信中の動画しか拾わない。少し途切れたカメラは丸ごと見えなくなる。チャンネルなら配信が切れていても結果に残る。そこで type=channel でまずチャンネルを探し、動画はチャンネルの中から取り出すやり方に変えた。

高いのはsearchだけ

search.listを除けば、ここで使う呼び出しは全部1回1 unitだ。チャンネルが見つかったら、channels.listでアップロード再生リストのIDを取り、playlistItems.listで最新アップロード50本を取り、videos.listで50本ずつ「いまライブか」「埋め込めるか」を聞く。playlistItemsにはライブかどうかの情報がないので、videos.listは必須だ(公式ドキュメントのplaylistItemリソースにそのフィールドがない)。

Use search.list only to find channelssearch.list bucket - scarcesearch.list?type=channel&q=...Find channels whose name is the camera address. A few calls, not one per channel.channel IDs (save as a seed list)Default bucket - 10,000 units/day, 1 unit per callchannels.listuploads playlist IDplaylistItems.listlatest 50 uploads, no live flagvideos.list (50 IDs)live now? embeddable?2026-08-24 run: 138 channels, 5,710 videos, 12 search calls, about 275 units for the rest.

チャンネル1つあたりおよそ2〜3 unitになる。チャンネルごとにsearch.listで「いまライブ中の動画」を聞くやり方と比べると差は大きい。あちらはチャンネルの数だけsearchを使う。

記事を書こうとドキュメントを見直したらルールが変わっていた

収集スクリプトを書いたときは、search.listは1回100 unitで、1日10,000 unitを他の呼び出しと分け合うものだと思っていた。この記事のために公式ドキュメントを開き直したら変わっていた。2026年6月1日の改訂でsearch.listとvideos.insertはそれぞれ専用のquota枠を使うようになり、今のquota計算ページではsearch.listが「1日100回、1回1」と書かれている(2026-10-15更新版で確認)。

結論は変わらない。旧ルールなら65チャンネルそれぞれにsearchを使うと6,500 unitで1日分の65%。新ルールなら1日100回のうち65回。どちらにしてもsearchが真っ先に尽きる。プロジェクトごとに上限が違うこともあるので、Google Cloud Consoleで自分の数字を確認してほしい。

2026-08-24に測った数字

type=video だけのときは65チャンネルからライブ24件。type=channel を足すと138チャンネル、ライブ113件になった。地図に載せたカメラは41件から58件に、大宮10km圏内は16件から21件に増えた。

このとき138チャンネル・5,710本を回るのに使ったsearch.listは12回。残りの呼び出しは約275 unit。スクリプトは旧ルールで1,475と数えていて、そのうち1,200がsearchだった。見つけたチャンネルIDを固定リストとして保存しておけば次からはsearchをほぼ使わずに済むと見ているが、これはまだ測っていない。

YouTube APIで収集や監視を作っていてquotaに詰まっているなら、negabaro に構成を見せてもらってかまわない。どこで呼び出しが漏れているか一緒に見る。

探し方ごとの結果(埼玉、2026-08-24)

方法チャンネルライブ地図に掲載大宮10km圏
type=videoのみ65244116
+ type=channel1381135821

65チャンネルを回るとき

やり方旧ルール(search 1回100 unit)現ルール(search 1日100回)
チャンネルごとにsearch.list6,500 unit(1日分の65%)search 65回(1日分の65%)
チャンネル → アップロード再生リスト → videos1チャンネル2〜3 unitsearch 0回 + 1チャンネル2〜3 unit

現ルールはYouTube Data API公式ドキュメントのquota計算ページ(2026-10-15更新)と2026-06-01の改訂履歴による。

呼び出しの順番

GET /youtube/v3/search?part=snippet&type=channel&q=さいたま市 ライブカメラ
GET /youtube/v3/channels?part=contentDetails&id=UC...,UC...      # uploads ID
GET /youtube/v3/playlistItems?part=contentDetails&playlistId=UU...&maxResults=50
GET /youtube/v3/videos?part=snippet,liveStreamingDetails,status&id=v1,v2,...   # 50本まで

実践ステップ

1

search.list?type=channelでチャンネルだけを探し、見つけたIDはリストとして保存する

2

channels.listでアップロード再生リストのIDを取る(1 unit)

3

playlistItems.listで最新アップロード50本を取る(1 unit、ライブかどうかは入っていない)

4

videos.listに50本ずつ渡してliveStreamingDetails・status.embeddableを見る(1 unit)

5

自分のプロジェクトのquota上限はGoogle Cloud Consoleで確認する

ユースケース

ライブカメラや特定地域のチャンネルを集めて地図や一覧にする 複数チャンネルの新着・ライブ開始を毎日確認する監視
← Synctoon — スクリプト1枚から2Dアニメ動画を生成するAIパイプライン YouTubeクリップは一覧がないデータだ — 集めるのはURL拾い、情報はHTML1枚にある →