> ## 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 엔드포인트](/ko/x-api/posts/search/introduction)를 사용하면
여러분이 작성한 검색 쿼리를 기반으로 관심 있는 주제와 관련된 포스트를
받을 수 있습니다. v2 Search Posts에는 서로 다른 두 개의 엔드포인트가 있습니다.
모든 승인된 개발자 계정이 사용할 수 있고 최대 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)이 있습니다.

검색 기능 전체는
[검색 개요 페이지](/ko/x-api/posts/search/introduction)에서 확인할 수 있습니다.

이러한 Search Posts 엔드포인트는 종단 연구나 과거 주제 및 이벤트 분석 등
학술 연구자들이 가장 많이 활용하는 사용 사례 중 하나를 다룹니다.

이 튜토리얼은 전체 아카이브 검색 엔드포인트를 사용해 공개 X
데이터의 전체 이력을 검색하려는 연구자를 위한 단계별 가이드를 제공합니다.
또한 위치 정보가 포함된 포스트를 가져오는 등 다양한 방식으로 데이터셋을
구성하는 방법과, 특정 쿼리에 대해 사용 가능한 포스트를 페이지 단위로
순회하는 방법도 설명합니다.

<div id="prerequisites">
  ### 사전 요구 사항
</div>

현재 이 endpoint는
[Academic Research 제품 트랙](https://developer.x.com/en/solutions/academic-research/products-for-researchers)의 일부로만 사용할 수 있습니다.
이 endpoint를 사용하려면
[액세스 권한을 신청](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 제품 트랙 사용 승인을 받으면
[개발자 콘솔](https://developer.x.com/en/portal/dashboard)에서 Academic
[Project](/ko/resources/fundamentals/developer-apps)를 볼 수 있습니다. "Apps"
섹션에서 "Add App"을 클릭해
[X App](/ko/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가 개발자 콘솔에 표시된 모습을 보여줍니다](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을 생성하고 이름을 지정한 뒤 완료를 클릭하여 Academic
Project에 새 App을 연결할 수도 있습니다.

![이 이미지는 새 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](/ko/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)

**주의 사항**

위 스크린샷의 키 값은 숨김 처리되어 있지만, 실제 개발자 콘솔에서는
API Key, API Secret Key, Bearer Token의 실제 값을 확인할 수 있습니다.
이 키들과 Bearer Token은 전체 아카이브 검색 엔드포인트를 호출하는 데
필요하므로 반드시 저장해 두십시오.

<div id="connecting-to-the-full-archive-search-endpoint">
  ### 전체 아카이브 검색 엔드포인트에 연결하기
</div>

아래 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개만 반환됩니다. 한 요청당 10개를 초과하는
포스트를 받고 싶다면, 아래와 같이 max\_results 파라미터를 사용하여 한 요청당
최대 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'
```

전체 아카이브 검색 엔드포인트에서 지원되는 연산자 전체 목록은
[이 가이드](/ko/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 파라미터를 사용할 수 있습니다. 이
파라미터는 예를 들어 2020-12-21T13:00:00.00Z처럼 유효한 RFC3339 날짜-시간
형식이어야 합니다. 따라서 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>

geo 데이터가 포함된 포스트를 가져오려면 has:geo 연산자를 사용할 수 있습니다.
예를 들어, 다음 cURL 요청은 geo 데이터가 포함된 @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>

앞에서 언급했듯이, 기본적으로 전체 아카이브 검색 엔드포인트에 대한 쿼리에서는
요청당 최대 500개의 포스트만 가져올 수 있습니다. 쿼리에 대해 500개가 넘는 포스트가
존재하는 경우, JSON 응답에 next\_token이 포함되며, 이 토큰을 API 호출에
포함하여 이 쿼리에 대한 다음 포스트들을 가져올 수 있습니다.
이 next\_token은 JSON 응답의 meta 객체에 포함되어 있으며, 대략 다음과 같은
형태입니다:

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

따라서 다음 포스트를 가져오려면 이 meta 객체의 next\_token 값을 가져와,
아래 예시와 같이 전체 보관 검색 엔드포인트에 대한 API 호출에서
next\_token 값으로 사용하면 됩니다(실제 요청에서는 자신의 Bearer 토큰과
이전 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 검색 엔드포인트를 사용할 때 도움이 될 수 있는 몇 가지 리소스를 정리했습니다. 여러분의 의견을 듣고 싶습니다. 이 엔드포인트에 대해 궁금한 점이 있으면
[@XDevelopers](https://x.com/XDevelopers) 또는
[커뮤니티 포럼](https://devcommunity.x.com/)을 통해 문의해 주세요.

<div id="additional-resources">
  ### 추가 자료
</div>

* [전체 아카이브 검색 엔드포인트 API 참조 문서](/ko/x-api/posts/full-archive-search)
* [검색 쿼리 작성 기초 배우기](/ko/x-api/posts/search/integrate/build-a-query)
