> ## Documentation Index
> Fetch the complete documentation index at: https://docs.x.com/llms.txt
> Use this file to discover all available pages before exploring further.

# full-archive search で過去の投稿を取得する

> X API v2 の full-archive search エンドポイント、クエリオペレーター、ページネーションを用いて 2006 年までさかのぼって過去の投稿を取得する、ステップバイステップのチュートリアル。

## はじめに

v2 の [Search Posts エンドポイント](/x-api/posts/search/introduction)では、
作成した検索クエリに基づいて関心のあるトピックに関する投稿を取得できます。
v2 Search Posts には 2 種類のエンドポイントがあります。承認済みアカウントを持つ
すべての開発者が利用でき、過去 7 日以内の投稿を検索できる recent search
エンドポイント、そして [Academic Research プロダクトトラック](https://developer.x.com/en/products/x-api/early-access/guide#na_2)を承認された研究者のみが利用でき、2006 年 3 月までさかのぼるすべての投稿アーカイブを検索できる full-archive search エンドポイントです。

検索の全体的な提供内容は [search 概要ページ](/x-api/posts/search/introduction)でご覧いただけます。

これらの Search Posts エンドポイントは、学術研究者にとって最も一般的な
ユースケースの 1 つに対応します。彼らは縦断研究や過去のトピック・イベントの分析のためにこれを使用することがあります。

このチュートリアルでは、full-archive search エンドポイントを使って公開されている X データの全履歴を検索したい研究者向けに、ステップバイステップのガイドを提供します。ジオタグ付き投稿の取得によるデータセットの構築方法や、クエリに対して利用可能な投稿をページ送りする方法など、さまざまな方法も紹介します。

### 前提条件

現時点でこのエンドポイントは、[Academic Research プロダクトトラック](https://developer.x.com/en/solutions/academic-research/products-for-researchers)の一部としてのみ利用可能です。
このエンドポイントを使用するには、[アクセスを申請する](https://developer.x.com/en/portal/petition/academic/is-it-right-for-you)必要があります。
[このトラックの申請および要件](https://developer.x.com/en/solutions/academic-research/application-info)について詳しく学びましょう。

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

Academic Research プロダクトトラックの利用が承認されると、[Developer Console](https://developer.x.com/en/portal/dashboard) に Academic の [Project](/resources/fundamentals/developer-apps) が表示されます。「Apps」セクションから「Add App」をクリックし、[X アプリ](/resources/fundamentals/developer-apps) を Project に接続します。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--gHFOyuDc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gb7aevhqyfvfjznd0pnd.png)

![この画像は、まだアプリが追加されていない Developer Console 上の Academic Project を表示しています](https://cdn.cms-twdigitalassets.com/content/dam/developer-twitter/docs/tutorials/getting-historical-tweets-using-the-full-archive-search-endpoint/dev-portal-1.png.twimg.1920.png)

次に、既存のアプリを選択して Project に接続することもできます(下記参照)。

![この画像は、Academic Project にアプリを追加しようとしたときに表示されるページです](https://cdn.cms-twdigitalassets.com/content/dam/developer-twitter/docs/tutorials/getting-historical-tweets-using-the-full-archive-search-endpoint/dev-portal-2.png.twimg.1920.png)

または、新しいアプリを作成し、名前を付けて「complete」をクリックすることで、新しいアプリを Academic Project に接続することもできます。

![この画像は、新しいアプリ名を入力するか、既存のアプリを選択できるページを表示しています](https://cdn.cms-twdigitalassets.com/content/dam/developer-twitter/docs/tutorials/getting-historical-tweets-using-the-full-archive-search-endpoint/dev-portal-3.png.twimg.1920.png)

これにより、full-archive search エンドポイントへ接続する際に使用できる API キーと [Bearer Token](/resources/fundamentals/authentication#using-and-generating-an-app-only-bearer-token) が発行されます。

![この画像は、新しいアプリを作成した後にキーとトークンが表示されるページを示しています](https://cdn.cms-twdigitalassets.com/content/dam/developer-twitter/docs/tutorials/getting-historical-tweets-using-the-full-archive-search-endpoint/dev-portal-4.png.twimg.1920.png)

**注意**

上のスクリーンショットではキーが非表示になっていますが、ご自身の Developer Console では、API Key、API Secret Key、Bearer Token の実際の値を確認できます。これらのキーと Bearer Token は、full-archive search エンドポイントを呼び出すために必要となるため、保存しておいてください。

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

以下の cURL コマンドは、@XDevelopers アカウントから過去の投稿を取得する方法を示します。\$BEARER\_TOKEN を自身の Bearer Token に置き換え、リクエスト全体をターミナルに貼り付けて Enter を押してください。

```bash theme={null}
curl --request GET 'https://api.x.com/2/tweets/search/all?query=from:xdevelopers' --header 'Authorization: Bearer $BEARER_TOKEN'
```

レスポンスの JSON が確認できます。

デフォルトでは、最新の 10 件の投稿のみが返されます。1 リクエストで 10 件を超える投稿を取得したい場合は、max\_results パラメーターを使用し、以下のように 1 リクエストあたり最大 500 件までの投稿を指定できます。

```bash theme={null}
curl --request GET 'https://api.x.com/2/tweets/search/all?query=from:xdevelopers&max_results=500' --header 'Authorization: Bearer $BEARER_TOKEN'
```

### クエリの構築

上の呼び出し例で示されているように、query パラメーターを使って検索したいデータを指定できます。たとえば、*covid* または *coronavirus* という語を含むすべての投稿を取得したい場合は、括弧内で OR オペレーターを使用し、クエリを `(covid OR coronavirus)` とできます。したがって API 呼び出しは以下のようになります。

```bash theme={null}
curl --request GET 'https://api.x.com/2/tweets/search/all?query=(covid%20OR%20coronavirus)&max_results=500' --header 'Authorization: Bearer $BEARER_TOKEN'
```

同様に、リポストではない *covid19* という語を含むすべての投稿を取得したい場合は、is:retweet オペレーターを論理 NOT(- で表現)とともに使用でき、クエリを covid19 -is:retweet とできます。API 呼び出しは次のようになります。

```bash theme={null}
curl --request GET 'https://api.x.com/2/tweets/search/all?query=covid19%20-is:retweet&max_results=500' --header 'Authorization: Bearer $BEARER_TOKEN'
```

full-archive search エンドポイントでサポートされているオペレーターの完全なリストについては、[このガイド](/x-api/posts/search/integrate/build-a-query)をご覧ください。

### 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 呼び出しは次のようになります。

```bash theme={null}
curl --request GET 'https://api.x.com/2/tweets/search/all?query=from:XDevelopers&start_time=2020-12-01T00:00:00.00Z&end_time=2021-01-01T00:00:00.00Z' --header 'Authorization: Bearer $BEARER_TOKEN'
```

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

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

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

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

```bash theme={null}
curl --request GET
'https://api.x.com/2/tweets/search/all?query=from:xdevelopers%20has:geo' --header
'Aubashthorization: Bearer $BEARER_TOKEN'
```

#### place\_country オペレーターを使う

同様に、place\_country オペレーターを使用して、ジオデータを持つ投稿を特定の国に限定することもできます。以下の cURL コマンドは、米国からの @XDevelopers アカウントのすべての投稿を取得します。

```bash theme={null}
curl --request GET
'https://api.x.com/2/tweets/search/all?query=from:xdevelopers%20place_country:US'
--hbasheader 'Authorization: Bearer XXXXX'
```

国は ISO alpha-2 の 2 文字コードで指定します。有効な ISO コードは[こちら](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)で確認できます。

### next\_token を使って 500 件を超える過去の投稿を取得する

上述のとおり、full-archive search エンドポイントに対するクエリでは、1 リクエストあたりデフォルトで最大 500 件の投稿しか取得できません。クエリに対して 500 件を超える投稿が利用可能な場合、JSON レスポンスに next\_token が含まれており、これを API 呼び出しに追加することで、このクエリに対する次に利用可能な投稿を取得できます。この next\_token は、JSON レスポンスの meta オブジェクトに含まれており、以下のような形になっています。

```json theme={null}
{ "newest_id": "12345678...", "oldest_id": "12345678...", "result_count": 500,
"nebashxt_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
```

したがって、次に利用可能な投稿を取得するには、この meta オブジェクトの next\_token 値を取得し、full-archive search エンドポイントへの API 呼び出しの next\_token の値として使用します(下記参照。ご自身の Bearer Token と、前回の API 呼び出しで得られた Next Token の値を使用してください)。

```bash theme={null}
curl --request GET
'https://api.x.com/2/tweets/search/all?max_results=500&query=covid&next_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
--header 'Authorization: Bearer $BEARER_TOKEN'
```

このようにして、next\_token が利用可能かを確認し続け、収集したい目標件数に達していない場合は、各リクエストで新しい next\_token を用いて full-archive エンドポイントを繰り返し呼び出せます。

以下は、full-archive search エンドポイントを使用する際に役立つリソースです。フィードバックをぜひお寄せください。このエンドポイントに関する質問は、[@XDevelopers](https://x.com/XDevelopers) または[コミュニティフォーラム](https://devcommunity.x.com/)でご連絡ください。

### 追加リソース

* [Full-archive search エンドポイント API リファレンス](/x-api/posts/full-archive-search)
* [検索クエリ構築の基本を学ぶ](/x-api/posts/search/integrate/build-a-query)
