Skip to main content

はじめに

v2 の Search Posts エンドポイントでは、 作成した検索クエリに基づいて関心のあるトピックに関する投稿を取得できます。 v2 Search Posts には 2 種類のエンドポイントがあります。承認済みアカウントを持つ すべての開発者が利用でき、過去 7 日以内の投稿を検索できる recent search エンドポイント、そして Academic Research プロダクトトラックを承認された研究者のみが利用でき、2006 年 3 月までさかのぼるすべての投稿アーカイブを検索できる full-archive search エンドポイントです。 検索の全体的な提供内容は search 概要ページでご覧いただけます。 これらの Search Posts エンドポイントは、学術研究者にとって最も一般的な ユースケースの 1 つに対応します。彼らは縦断研究や過去のトピック・イベントの分析のためにこれを使用することがあります。 このチュートリアルでは、full-archive search エンドポイントを使って公開されている X データの全履歴を検索したい研究者向けに、ステップバイステップのガイドを提供します。ジオタグ付き投稿の取得によるデータセットの構築方法や、クエリに対して利用可能な投稿をページ送りする方法など、さまざまな方法も紹介します。

前提条件

現時点でこのエンドポイントは、Academic Research プロダクトトラックの一部としてのみ利用可能です。 このエンドポイントを使用するには、アクセスを申請する必要があります。 このトラックの申請および要件について詳しく学びましょう。

アプリを Academic プロジェクトに接続する

Academic Research プロダクトトラックの利用が承認されると、Developer Console に Academic の Project が表示されます。「Apps」セクションから「Add App」をクリックし、X アプリ を Project に接続します。 この画像は、まだアプリが追加されていない Developer Console 上の Academic Project を表示しています 次に、既存のアプリを選択して Project に接続することもできます(下記参照)。 この画像は、Academic Project にアプリを追加しようとしたときに表示されるページです または、新しいアプリを作成し、名前を付けて「complete」をクリックすることで、新しいアプリを Academic Project に接続することもできます。 この画像は、新しいアプリ名を入力するか、既存のアプリを選択できるページを表示しています これにより、full-archive search エンドポイントへ接続する際に使用できる API キーと Bearer Token が発行されます。 この画像は、新しいアプリを作成した後にキーとトークンが表示されるページを示しています 注意 上のスクリーンショットではキーが非表示になっていますが、ご自身の Developer Console では、API Key、API Secret Key、Bearer Token の実際の値を確認できます。これらのキーと Bearer Token は、full-archive search エンドポイントを呼び出すために必要となるため、保存しておいてください。

full-archive search エンドポイントへの接続

以下の cURL コマンドは、@XDevelopers アカウントから過去の投稿を取得する方法を示します。$BEARER_TOKEN を自身の Bearer Token に置き換え、リクエスト全体をターミナルに貼り付けて Enter を押してください。
レスポンスの JSON が確認できます。 デフォルトでは、最新の 10 件の投稿のみが返されます。1 リクエストで 10 件を超える投稿を取得したい場合は、max_results パラメーターを使用し、以下のように 1 リクエストあたり最大 500 件までの投稿を指定できます。

クエリの構築

上の呼び出し例で示されているように、query パラメーターを使って検索したいデータを指定できます。たとえば、covid または coronavirus という語を含むすべての投稿を取得したい場合は、括弧内で OR オペレーターを使用し、クエリを (covid OR coronavirus) とできます。したがって API 呼び出しは以下のようになります。
同様に、リポストではない covid19 という語を含むすべての投稿を取得したい場合は、is:retweet オペレーターを論理 NOT(- で表現)とともに使用でき、クエリを covid19 -is:retweet とできます。API 呼び出しは次のようになります。
full-archive search エンドポイントでサポートされているオペレーターの完全なリストについては、このガイドをご覧ください。

start_time と end_time パラメーターを使って過去の投稿を取得する

full-archive search エンドポイントを使用する際、デフォルトでは過去 30 日間の投稿が返されます。30 日より古い投稿を取得したい場合は、API 呼び出しで start_time と end_time パラメーターを使用できます。これらのパラメーターは有効な RFC3339 の日時形式である必要があります(例: 2020-12-21T13:00:00.00Z)。したがって、2020 年 12 月の XDevelopers アカウントのすべての投稿を取得したい場合、API 呼び出しは次のようになります。

ジオタグ付きの過去の投稿を取得する

ジオタグ付き投稿とは、市、州、国などの地理情報が関連付けられた投稿のことです。

has:geo オペレーターを使う

ジオデータを持つ投稿を取得したい場合は、has:geo オペレーターを使用できます。たとえば、以下の cURL リクエストは @XDevelopers アカウントからジオデータを持つ投稿のみを取得します。

place_country オペレーターを使う

同様に、place_country オペレーターを使用して、ジオデータを持つ投稿を特定の国に限定することもできます。以下の cURL コマンドは、米国からの @XDevelopers アカウントのすべての投稿を取得します。
国は ISO alpha-2 の 2 文字コードで指定します。有効な ISO コードはこちらで確認できます。

next_token を使って 500 件を超える過去の投稿を取得する

上述のとおり、full-archive search エンドポイントに対するクエリでは、1 リクエストあたりデフォルトで最大 500 件の投稿しか取得できません。クエリに対して 500 件を超える投稿が利用可能な場合、JSON レスポンスに next_token が含まれており、これを API 呼び出しに追加することで、このクエリに対する次に利用可能な投稿を取得できます。この next_token は、JSON レスポンスの meta オブジェクトに含まれており、以下のような形になっています。
したがって、次に利用可能な投稿を取得するには、この meta オブジェクトの next_token 値を取得し、full-archive search エンドポイントへの API 呼び出しの next_token の値として使用します(下記参照。ご自身の Bearer Token と、前回の API 呼び出しで得られた Next Token の値を使用してください)。
このようにして、next_token が利用可能かを確認し続け、収集したい目標件数に達していない場合は、各リクエストで新しい next_token を用いて full-archive エンドポイントを繰り返し呼び出せます。 以下は、full-archive search エンドポイントを使用する際に役立つリソースです。フィードバックをぜひお寄せください。このエンドポイントに関する質問は、@XDevelopers またはコミュニティフォーラムでご連絡ください。

追加リソース