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

# v2 のフルアーカイブ検索エンドポイントを使用して過去の投稿を取得する

<div id="introduction">
  ## はじめに
</div>

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

検索機能全体の内容は、
[search overview ページ](/ja/x-api/posts/search/introduction)
で確認できます。

これらの Search Posts エンドポイントは、縦断的研究や過去のトピック・イベントの分析など、学術研究者にとってよくあるユースケースの一つに対応するものです。

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

<div id="prerequisites">
  ### 前提条件
</div>

現在、このエンドポイントは
[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)
をご覧ください。

<div id="connect-an-app-to-the-academic-project">
  ### 学術プロジェクトに App を接続する
</div>

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

![この画像は、まだ App が追加されていない Academic Project を Developer Console 上に表示しています](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)

次に、既存の App を選択してプロジェクトに接続できます (下図のとおり) 。

![この画像は、Academic Project に App を追加しようとしたときに表示されるページを示しています](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)

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

![この画像は、新しい App の名前を入力するページ、または既存の App を選択できるページを示しています](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)

これにより API キーと
[Bearer Token](/ja/resources/fundamentals/authentication#using-and-generating-an-app-only-bearer-token)
が発行され、これらを使用してフルアーカイブ検索エンドポイントに接続できるようになります。

![この画像は、新しい App を作成した後に表示される、キーとトークンが表示されたページを示しています](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 は、フルアーカイブ検索エンドポイントを呼び出す際に必要になるため、
必ず保存しておいてください。

<div id="connecting-to-the-full-archive-search-endpoint">
  ### フルアーカイブ検索エンドポイントへの接続
</div>

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

```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 演算子を使用できます。つまり、クエリは 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'
```

次の
[オペレーターの完全な一覧をまとめたガイド](/ja/x-api/posts/search/integrate/build-a-query)
を参照して、フルアーカイブ検索エンドポイントでサポートされているオペレーターを確認してください。

<div id="using-the-start_time-and-end_time-parameters-to-get-historical-posts">
  ### start\_time パラメーターと end\_time パラメーターを使って過去の投稿を取得する
</div>

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'
```

###

位置情報付きの過去の投稿を取得する

位置情報付きの投稿とは、市区町村、州、国などの地理情報が付与されている投稿のことです。

<div id="using-hasgeo-operator">
  #### has:geo オペレーターの使用
</div>

位置情報データを含む投稿を取得したい場合は、has:geo オペレーターを使用します。
たとえば、次の cURL リクエストでは、位置情報データを含む @XDevelopers アカウントからの投稿のみを取得します。

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

<div id="using-place_country-operator">
  #### place\_country 演算子の使用
</div>

同様に、`place_country` 演算子を使用することで、ジオデータを持つ投稿を特定の国に限定できます。以下の cURL コマンドは、米国に紐づく @XDevelopers ハンドルからのすべての投稿を取得します。

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

上記では、ISO の2文字のアルファベットコードを使用して国が指定されています。有効な ISO コードは[こちら](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)で確認できます。

<div id="getting-more-than-500-historical-posts-using-the-next_token">
  ### next\_token を使って 500 件を超える過去の投稿を取得する
</div>

前述のとおり、デフォルトでは、フルアーカイブ検索エンドポイントへの 1 回のクエリで取得できる投稿は最大 500 件までです。クエリに対して 500 件を超える投稿が存在する場合、JSON レスポンスには `next_token` が含まれます。この `next_token` を API 呼び出しに指定することで、そのクエリに対して次に取得可能な投稿を取得できます。この `next_token` は JSON レスポンス内の `meta` オブジェクトに含まれており、次のような形式になります。

```
{ "newest_id": "12345678...", "oldest_id": "12345678...", "result_count": 500,
"nebashxt_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
```

したがって、次に取得可能な投稿を取得するには、この meta オブジェクトの next\_token の値を使用し、下記のとおり API 呼び出しで full-archive search エンドポイントの next\_token の値として指定します (実際には、前回の API 呼び出しで取得した next\_token の値と、ご自身のベアラートークンを使用します) 。

```
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) や [community forums](https://devcommunity.x.com/) までお寄せください。

<div id="additional-resources">
  ### 追加リソース
</div>

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