Skip to main content
レスポンスに含まれるプロフィールの再利用、バッチ取得、安定したIDによる保存で、不要なリクエストを減らします。それぞれの使いどころを説明します。
ヒント: 全アカウントにカード不要・有効期限なしの無料100リクエストがあります。以下の方法を試し、実際の利用量を測ってからプランを選べます。

サンプルの準備

Pythonの例はバックエンドでrequestsを使います(python -m pip install requests)。実行前にAPIキーと例のIDを置き換えてください。search_resultsは、先のリクエストで取得したTweetオブジェクトの一覧です。

原則1:ツイートのレスポンスにはすでにユーザー情報がある

Sorsa APIを効率的に使ううえで最も重要な点です。ツイートを返すすべてのエンドポイント(/search-tweets/user-tweets/list-tweets/comments/quotes/mentions)は、各Tweetオブジェクトに投稿者の完全なプロフィールを含みます。
各ツイートのuserは、/infoで取得するものと同じ情報を持ちます。ID、ユーザー名、表示名、自己紹介、フォロワー数、フォロー数、ツイート数、認証状態、所在地、作成日、画像などです。 実際の使い方: 話題に関するツイートから、その話題について投稿するユーザーの一覧を作る場合、投稿者ごとに/infoを呼ぶ必要はありません。レスポンスから直接取り出します。
この1つの方法だけで、通常の処理で数百〜数千の不要な/info呼び出しを省けます。

原則2:バッチエンドポイントを使う

よく使う取得操作にはバッチ版があります。単体取得を繰り返す代わりに使うと、リクエスト数を大幅に減らせます。

/infoの繰り返しを/info-batchに替える

複数アカウントのプロフィールには、/infoのループではなく/info-batchを使い、最大100件をまとめて取得します。
削減効果: 10アカウントが10回ではなく1リクエストです。1回最大100件まで、件数に比例して削減できます。

/tweet-infoの繰り返しを/tweet-info-bulkに替える

アーカイブ、メンションの出力、ブックマークなどにあるツイートIDから現在の指標と投稿者を取得する場合、バッチ版で最大100件を1回で取得します。
削減効果: 100ツイートが100回ではなく1リクエストになり、99%削減できます。

原則3:複数の/user-tweets/list-tweetsに替える

複数アカウントの最近の投稿を監視・収集する場合、個別に確認せずXリストに追加します。/list-tweetsの1回の呼び出しで、全メンバーの最近の活動をまとめて取得できます。
最初のページだけの場合の見積もり: 10秒間隔のリスト取得は30日で259,200リクエストです。30アカウントのタイムラインを個別に取得すると7,776,000件です。追加ページと再試行でどちらも増え、投稿の多いリストでは毎回ページネーションが必要になる場合があります。 詳細はリアルタイム監視、Xリストの作成・管理はリストとコミュニティを参照してください。

原則4:/infoで入力をまとめて解決する

/infoはユーザー名、ユーザーID、プロフィールリンクを受け付け、永続的なIDを含む完全なプロフィールを返します。混在する入力を正規化するのに柔軟に使えます。 異なる形式の入力から完全なプロフィールが必要な場合、変換(/username-to-id/link-to-id)の後に/infoを呼ばず、1アカウントにつき/infoを1回だけ使います。
変換エンドポイントを別途使う場合: IDだけ、またはユーザー名だけが必要で、全プロフィールが不要な場合です。たとえば、保存用に1,000件のユーザー名をIDへ変換するときです。前の処理ですでにプロフィールを得ていれば、そのidを再利用してください。変換パターンはID変換を参照してください。

原則5:データベースで重複を除去する

検索、フォロワー一覧、メンション、タイムラインなど、複数の情報源には同じユーザーが何度も現れます。永続的なユーザーIDをキーにし、重複挿入せず既存のレコードを更新します。
この方法では、検索、メンション、フォロワー、コメント、引用などのレスポンスにユーザーが現れるたび、最新プロフィールに更新されます。再び現れないアカウントは更新されません。一定の鮮度が必要なら、バッチ更新を定期実行してください。

原則6:すでにあるデータを取り直さない

複数段階の処理では、再取得せずデータを次の段階へ渡してください。 例:オーディエンスの地域分析。 手順は(1)フォロワー取得、(2)各人の国を/aboutで取得、です。(1)の時点で自己紹介、フォロワー数、認証状態などの完全なプロフィールがあります。(2)で/infoを再度呼ばず、標準プロフィールにない国情報だけを/aboutで取得します。詳細はオーディエンスの地域分布を参照してください。 例:キャンペーン確認。 フォロー・リツイート・コメントを確認すると、/check-commentcommented: trueのときコメントの完全なツイートを返します。本文の品質を調べるにはそこから取り出し、/search-tweets/commentsで探し直さないでください。 例:検索結果からユーザー一覧を作る。 埋め込みのuserから500人を抽出し、フォロワー10,000人以上を選びたい場合、取得済みのデータで絞り込みます。500人それぞれに/infoを呼ぶ必要はありません。

早見表:適切なエンドポイントを選ぶ


リクエストの予算を見積もる

プロジェクトを始める前に、必要な合計回数を見積もってください。 典型的な競合調査とキャンペーン確認なら、50(フォロワー)+ 10,000(地域)+ 1(ツイート一括取得)+ 8,640(監視)+ 5,000(キャンペーン)= 約23,700リクエストです。毎秒20件での理論的な処理時間の下限は約20分ですが、監視自体は丸1日にわたり、順次ページ取得、応答待ち、再試行も経過時間に加わります。プランごとの費用は料金を参照してください。

次のステップ