どうもイトサル(@itosaru)です。

Twitter APIを使う上で何か注意点等はあるのでしょうか?
Twitter APIの使用ルールとして禁止されているのは自動的な”いいね”や”リツイート”が挙げられます。
それ以外に気をつけるべきなのはAPIのリクエストの制限です。
Twitter APIにおけるリクエスト制限は2つあります。
- 一定時間内におけるリクエスト制限
- アクセスレベルにおけるリクエスト制限
この記事ではそのTwitter APIのリクエスト制限について説明していきます。
リクエスト制限ってなに?
そもそもリクエスト制限とはなんなのかを説明します。
リクエスト制限とはAPIを叩いてデータを正しく返してくれる上限回数のことです。

なんでそんな回数を決めているんですか?
大量のリクエストを受け付けるとレスポンスに影響が出たり、最悪の場合APIサービス自体が停止する可能性があるからです。
このリクエスト制限というのはTwitter APIに限らず定められているものがほとんどです。

リクエスト制限を受けた場合はどうなりますか?
リクエスト制限中にAPIのリクエストを実行するとエラーメッセージが返ってきます。
制限中はAPIからリターンデータが受け取れないので注意しましょう。

制限中にリクエストを投げてもペナルティで罰金とかはありません!
なのでご安心ください。
Twitter APIのリクエスト上限は2種類ある
なんとなくリクエスト上限についてわかったところでTwitter APIのリクエストを見ていきましょう。
冒頭にも書きましたが、Twitter APIのリクエスト上限には2種類あります。
1つが一定時間内におけるリクエスト上限。
そしてもう1つがアクセスレベルに応じたリクエスト上限です。
それぞれ説明していきます。
一定時間内におけるリクエスト制限
Twitter APIでは15分間のなかでリクエストできる上限を定めています。
そのリクエスト上限は使うメソッドによって異なりますが、例えばツイートを検索をする「Search Tweet」は180回が上限です。
※1 Per App:Twitter API上のアプリ単位の上限
※2 Per user:ユーザーにおける上限

15分間という時間で見ているので、上限に達したとしてもまた15分時間を開けば使えるようになるのがポイントです。
アクセスレベルに応じたリクエスト制限
もう一つのアクセスレベルというのはTwitter APIを使う権限のようなものです。
このアクセスレベルに応じてできることが増えたりするのですが、1ヶ月のうちでTwitter APIを使ってツイートできる上限数が異なります。
Twitter API v2には3つのアクセスレベルがあり、それぞれのツイート上限はこちらです。
アクセスレベル | ツイート上限 |
---|---|
Essential(一般レベル) | 50万回/月 |
Elevated(中級レベル) | 200万回/月 |
Academic Research(上級レベル) | 1000万回/月 |

このアクセスレベルってどうやって決まってるんですか?
Twitter API v2を初めて使う場合はEssentialからスタートです。
それ以降は申請することでレベルをあげることができます。
Elevatedにレベルアップするには
・Twitter Developer サイトから申請する(申請後に審査があり、審査を通過する必要がある)
・これ以外の条件なし
Academic Researchにレベルアップするには
・Twitter Developer サイトから申請する(申請後に審査があり、審査を通過する必要がある)
・研究に従事する研究者、もしくは学生である必要がある
なので一般的に使えるアクセスレベルとしてはElevatedのアクセスレベルが最高権限と言っていいでしょう。
なお、過去にTwitter API v1を使っている場合は申請の必要なしに最初からElevatedのアクセスレベルを持っています。
ポイントとしてはこの上限は”1ヶ月間でツイートできる上限”ということです。
言い換えればそれ以外のAPIリクエストに関しては15分間のリクエスト制限しかありません。
まとめ
今回はTwitter API v2を使う上で気をつけたいリクエスト制限について説明しました。
改めて今回の内容を振り返りましょう。
- リクエスト制限とはAPIからリターンを正しく受け取れる回数のこと
- Twitter APIのリクエスト制限は2種類ある
- 1つ目:15分間でAPIを叩ける回数の上限がある(ツイート検索は180回/15分)
- 2つ目:アクセスレベルでツイートできる上限がある(Essentialは50万回/1ヶ月)
1つ目は上限に達さないようにプログラム上で15分のインターバルを入れることで回避しましょう。
もし上限を達するような場合はAPIからエラーメッセージが返ってきます。
try処理を使ってエラーハンドリングすれば問題ありません。
2つ目は高頻度で呟くBOTをつくならい限りはEssentialレベルで問題ありません。
もし気になるようであればElevatedへのレベルアップを検討してみましょう。
コメント