Skip to main content
참고: 포스트 검색포스트 개수의 새로운 버전을 X API v2로 출시했습니다. X API v2에서 새로워진 점을 검토해 보시기를 권장합니다.  이 엔드포인트들은 포스트 수정 메타데이터를 포함하도록 업데이트되었습니다. 이러한 메타데이터에 대한 자세한 내용은 “포스트 수정” 기본 사항 페이지에서 확인할 수 있습니다. 

Overview

Enterprise Enterprise API는 관리형 액세스 레벨에서만 사용할 수 있습니다. 이 API를 사용하려면 먼저 엔터프라이즈 영업팀과 함께 계정을 개설해야 합니다. 자세한 내용은 여기를 참조하세요. 모든 X API 검색 게시물 제품은 여기에서 확인할 수 있습니다. 엔터프라이즈 검색 API에는 두 가지 유형이 있습니다:
  1. 30-Day Search API는 이전 30일 동안의 데이터를 제공합니다.
  2. Full-Archive Search API는 2006년 3월 첫 번째 게시물까지 거슬러 올라가는 X 데이터 전체 코퍼스에 대한 완전하고 즉각적인 액세스를 제공합니다.
이들 RESTful API는 요청당 최대 2,048자의 단일 쿼리를 지원합니다. 쿼리는 PowerTrack 규칙 구문으로 작성됩니다. 자세한 내용은 규칙 및 필터링을 참조하세요. 사용자는 분 단위까지의 시간 범위를 지정할 수 있습니다. 다만 응답은 사용자가 지정한 maxResults 값 또는 31일 중 더 작은 값으로 제한되며, 다음 결과 세트를 페이지네이션하기 위한 next 토큰을 포함합니다. 시간 매개변수가 지정되지 않은 경우, API는 가장 최근 30일 동안의 일치하는 데이터를 반환합니다. 엔터프라이즈 검색 API는 분 단위 정밀도로 게시물 아카이브에 대한 저지연, 원본 보존(full-fidelity)의 쿼리 기반 액세스를 제공합니다. 게시물 데이터는 쿼리와 일치하는 가장 최신 게시물부터 시작하여 역시간순으로 제공됩니다. 게시물은 게시된 후 약 30초가 지나면 Search API를 통해 조회할 수 있습니다. 이 검색 엔드포인트는 수정된 게시물 메타데이터를 제공합니다. 2022년 9월 29일 이후에 생성된 포스트에 대한 모든 객체에는, 해당 게시물이 한 번도 수정되지 않았더라도, 게시물 수정 메타데이터가 포함됩니다. 게시물이 수정될 때마다 새로운 게시물 ID가 생성됩니다. 게시물의 수정 이력은 원래 ID부터 시작하는 게시물 ID 배열에 기록됩니다. 이 엔드포인트는 항상 가장 최근 수정본과 모든 수정 이력을 함께 반환합니다. 30분 편집 가능 시간이 지난 후에 수집된 게시물은 최종 버전을 나타냅니다. Edit Post 메타데이터에 대해 자세히 알아보려면 Edit Posts 기본 사항 페이지를 확인하세요. 요청에는 각 API 응답에서 반환할 포스트의 최대 개수를 지정하는 maxResults 매개변수가 포함됩니다. 쿼리와 연관된 포스트가 응답당 이 최대 결과 수보다 많을 경우, 응답에 next 토큰이 포함됩니다. 이러한 next 토큰은 이후 요청에서 사용되어 쿼리와 연관된 전체 포스트 집합을 페이지네이션하는 데 사용됩니다. 이 엔터프라이즈 검색 API는 사용자가 자신의 쿼리와 관련된 데이터 볼륨을 요청할 수 있는 counts 엔드포인트를 제공합니다. 

요청 type

Enterprise Search API는 두 가지 요청 type을 지원합니다.

Search requests (data)

엔터프라이즈 검색 API에 대한 검색 요청을 사용하면, 지정한 기간에 대해 응답당 최대 500개의 결과를 조회할 수 있으며, 추가 데이터를 위해 페이지네이션을 수행할 수 있습니다. maxResults 매개변수를 사용하면, (사용자가 필요에 따라 더 많은 결과를 요청할 수 있도록) 화면 표시용 사용 사례에 맞게 더 작은 페이지 크기를 지정하거나, 대량 데이터 수집을 위해 더 큰 페이지 크기(최대 500)를 지정할 수 있습니다. 데이터는 최신 순(내림차순)으로 제공되며, 전송 시점 기준으로 컴플라이언스가 보장됩니다.

Counts requests (Post count)

Counts 요청은 지정한 기간 동안 특정 쿼리와 일치하는 활동이 몇 번 발생했는지를 나타내는 과거 활동 카운트를 조회할 수 있는 기능을 제공합니다. 응답은 본질적으로 일, 시간, 또는 분 단위(기본 버킷은 hour)로 구간화된 카운트 히스토그램을 제공합니다. 카운트 결과는 게시물이 게시된 후 상당히 오랜 시점(7일 이상)에 발생하는 컴플라이언스 이벤트(예: 포스트 삭제)를 항상 반영하지는 않는다는 점에 유의해야 합니다. 따라서 동일한 쿼리에 대한 데이터 요청의 메트릭과 카운트 메트릭이 항상 일치하지 않을 수 있습니다. 청구 참고: 데이터 및 카운트 엔드포인트에 대해 수행되는 각 요청 – 페이지네이션 요청을 포함하여 – 은 청구 대상 요청으로 계산됩니다. 따라서 하나의 쿼리에 여러 페이지의 결과가 있는 경우, X개의 결과 페이지를 페이지네이션하면 청구 시 X개의 요청으로 간주됩니다.

사용 가능한 연산자

Enterprise 검색 API는 최대 2,048자 길이의 규칙을 지원합니다. Enterprise 검색 API에서 지원하는 연산자는 아래 목록을 참고하세요. 자세한 설명은 여기를 참조하세요.  참고: 연산자를 중첩해서(내포하여) 사용하지 마십시오. "#cats"는 검색 API에서 cats로 해석됩니다.   lang: 연산자와 모든 is:has: 연산자는 단독 연산자로 사용할 수 없으며, 반드시 다른 절과 함께 결합해서 사용해야 합니다(예: @XDevelopers has:links).     검색 API는 토크나이징/매칭 동작 특성으로 인해 제한된 연산자 세트를 사용합니다. Enterprise 실시간 및 배치형 과거 데이터 API는 추가 연산자를 제공합니다. 자세한 내용은 여기를 참조하세요. 자세한 내용은 연산자 시작하기 가이드를 참조하세요.

데이터 가용성 / 중요 날짜

Full-Archive 검색 API를 사용할 때는 X 플랫폼이 2006년부터 계속 발전해 왔다는 점을 염두에 두어야 합니다. 새로운 기능이 추가될 때마다 기본 JSON 객체에도 새로운 메타데이터가 추가되었습니다. 따라서 검색 연산자가 매칭에 사용하는 게시물 속성이 언제 추가되었는지를 이해하는 것이 중요합니다. 아래는 주요 메타데이터 그룹이 처음 ‘생성’된 보다 기초적인 날짜들입니다. 게시물 속성이 처음 도입된 시점에 대해 더 알아보려면 이 가이드를 참고하세요.
  • 첫 게시물: 3/21/2006
  • 첫 네이티브 Retweet: 11/6/2009
  • 첫 위치 태그 게시물: 11/19/2009
  • 필터링을 위해 URL이 처음 인덱싱된 날짜: 8/27/2011
  • 향상된 URL 확장 메타데이터(웹사이트 제목 및 설명): 12/1/2014
  • 프로필 Geo 보강 메타데이터 및 필터링: 2/17/2015

데이터 업데이트와 가변성

enterprise search API에서는 게시물 내 일부 데이터가 가변적입니다. 즉, 최초 보관 이후에 업데이트되거나 변경될 수 있습니다. 이 가변 데이터는 두 가지 범주로 나뉩니다:
  • 사용자 객체 메타데이터:
    • 사용자의 @handle (숫자 ID는 절대 변경되지 않음)
    • 자기소개(Bio) 설명
    • 수치: 게시물 수(statuses), 팔로워 수, 팔로잉 수(friends), 즐겨찾기 수, 리스트 수
    • 프로필 위치
    • 시간대, 언어 등 기타 세부정보
  • 게시물 통계 - 즉, 사용자 행동으로 인해 플랫폼에서 변경될 수 있는 모든 항목(아래 예시 참조):
    • 즐겨찾기 수
    • 리트윗 수
대부분의 경우, search API는 게시물 생성 시점이 아니라 쿼리 시점(query-time) 기준으로 플랫폼에 존재하는 데이터를 반환합니다. 그러나 select 연산자(예: from, to, @, is:verified)를 사용하는 쿼리의 경우에는 그렇지 않을 수 있습니다. 데이터는 인덱스에서 정기적으로 업데이트되며, 가장 최근 기간에 대해서는 더 높은 빈도로 업데이트됩니다. 그 결과, 일부 경우에는 반환된 데이터가 X.com에 표시되는 현재 데이터와 정확히 일치하지 않을 수 있으나, 마지막으로 인덱싱되었을 당시의 데이터와는 일치합니다. 이러한 불일치 문제는 연산자가 가변 데이터에 적용되는 쿼리에만 해당된다는 점에 유의하십시오. 한 가지 예는 사용자 이름(username)으로 필터링하는 경우이며, 가장 좋은 우회 방법은 이러한 쿼리에서 @handle 대신 사용자 숫자 ID를 사용하는 것입니다.

단일 스레드 vs. 멀티 스레드 요청

각 고객에는 본인의 search 엔드포인트에 대해 정의된 rate limit이 있습니다. Full-Archive search의 기본 분당 rate limit은 분당 120개의 요청으로, 초당 평균 2개의 쿼리(QPS)에 해당합니다. 이 평균 QPS는 이론적으로 매초 API에 2개의 요청을 보낼 수 있음을 의미합니다. 제품의 페이지네이션 기능을 고려하면, 1년 기간의 쿼리에 해당 기간 전체에 걸쳐 균등하게 분포된 백만 개의 포스트가 연관되어 있는 경우, 모든 데이터를 수신하기 위해서는 2,000개가 넘는 요청이 필요합니다 (maxResults가 500이라고 가정). 응답당 2초가 걸린다고 가정하면, 단일 스레드를 통해 직렬/순차적으로 모든 데이터를 가져오는 데 4,000초(또는 1시간을 약간 넘는 시간)가 소요됩니다(이전 응답의 “next” 토큰을 사용해 초당 1개의 요청을 보내는 방식). 나쁘지 않습니다! 이제 데이터를 수신하기 위해 12개의 병렬 스레드를 사용하는 상황을 고려해 보겠습니다. 백만 개의 포스트가 1년 기간 전체에 균등하게 분포되어 있다고 가정하면, 요청을 12개의 병렬 스레드(멀티 스레드)로 나누어 단일 “작업”에 대해 초당 rate limit을 더 많이 활용할 수 있습니다. 다시 말해, 관심 있는 각 월(month)마다 하나의 스레드를 실행함으로써 데이터를 12배 더 빠르게(또는 약 6분 내에) 가져올 수 있습니다. 이 멀티 스레드 예시는 counts 엔드포인트에도 동일하게 적용됩니다. 예를 들어, 2년 기간에 대한 게시물 카운트를 얻고자 한다면, 단일 스레드 요청을 사용하여 한 번에 31일 단위로 카운트를 페이지네이션할 수 있습니다. 응답당 2초가 걸린다고 가정하면, 전체 카운트 세트를 조회하기 위해 24개의 API 요청을 수행하는 데 약 48초가 소요됩니다. 그러나 동시에 여러 개의 1개월 단위 요청을 보내는 옵션도 있습니다. 초당 12개의 요청을 보내는 경우, 전체 카운트 세트를 약 2초 만에 가져올 수 있습니다.

재시도 로직

엔터프라이즈 검색 API에서 503 오류가 발생하는 경우, 일시적인 오류일 가능성이 높으며, 짧은 시간 후에 요청을 다시 시도하면 해결될 수 있습니다. 요청이 연속해서 4번 실패했고, 각 실패 사이에 최소 10분을 기다렸다면, 다음 단계를 수행해 문제를 해결하십시오:
  • 요청이 포함하는 시간 범위를 줄인 후 다시 시도합니다. 실패할 경우 최소 6시간 단위의 시간 창이 될 때까지 반복합니다.
  • 많은 수의 용어를 OR 조건으로 결합하고 있다면, 이를 개별 규칙으로 나눈 뒤 각 규칙을 개별적으로 다시 시도합니다.
  • 규칙에서 많은 수의 제외 조건을 사용하고 있다면, 규칙에서 부정된 용어의 수를 줄이고 다시 시도합니다.

빠른 시작

엔터프라이즈 Search Posts: 30-Day API 시작하기

엔터프라이즈 Search Posts: 30-Day API는 최근 30일 이내에 게시된 포스트를 제공합니다. 포스트는 요청에서 지정한 쿼리를 기반으로 매칭되어 반환됩니다. 쿼리는 반환받을 포스트에 어떤 내용이 포함되어야 하는지를 정의하는 규칙입니다. 이 튜토리얼에서는 X 계정 @XDevelopers에서 영어로 작성된 포스트를 검색해 보겠습니다. 반환받는 포스트는 전체 포스트 페이로드를 제공하는 data 형식이거나, 매칭된 포스트의 개수 데이터를 제공하는 counts 형식일 수 있습니다. 이 튜토리얼에서는 cURL을 사용하여 data 및 counts 엔드포인트에 요청을 보낼 것입니다. 다음이 필요합니다:

데이터 엔드포인트에 액세스하기

데이터 엔드포인트는 일치한 포스트 각각에 대한 전체 게시물 페이로드를 제공합니다. 우리는 from:lang: 연산자를 사용하여 @XDevelopers 계정에서 작성된 영어 포스트를 찾겠습니다. 더 많은 연산자를 보려면 여기를 클릭하세요.
cURL은 URL 문법을 사용해 파일을 가져오거나 전송하는 명령줄 도구입니다.아래 항목을 수정한 뒤, 이어지는 cURL 요청을 복사해 명령줄에 붙여넣으세요:
  • Username <USERNAME> 예: email@domain.com
  • Account name <ACCOUNT-NAME> 예: john-doe
  • Label <LABEL> 예: prod
  • fromDate and toDate 예: "fromDate":"201811010000", "toDate":"201811122359"
요청을 전송하면 비밀번호 입력을 요청하는 프롬프트가 표시됩니다.

데이터 엔드포인트 응답 페이로드

API 요청에 대한 응답으로 반환되는 페이로드는 아래와 같이 JSON 형식으로 제공됩니다.

counts 엔드포인트에 액세스하기

counts 엔드포인트를 사용하여 @XDevelopers 계정에서 영어로 작성된 게시물 수를 day 단위로 그룹화해 조회하겠습니다.
cURL은 URL 문법을 사용하여 파일을 가져오거나 전송하는 명령줄 도구입니다.다음을 변경한 후 아래 cURL 요청을 명령줄에 복사해 넣으세요:
  • Username <USERNAME> 예: email@domain.com
  • Account name <ACCOUNT-NAME> 예: john-doe
  • Label <LABEL> 예: prod
  • fromDate 및 toDate 예: "fromDate":"201811010000", "toDate":"201811122359"
요청을 전송하면 비밀번호 입력을 요구하는 메시지가 표시됩니다.

Counts endpoint response payload

API 요청에 대한 응답 페이로드는 아래와 같이 JSON 형식으로 표시됩니다.
잘하셨습니다! 이제 enterprise Search Posts: 30-Day API에 성공적으로 액세스했습니다.
참고 문서

enterprise Search Posts: Full-Archive API 시작하기

enterprise Search Posts: Full-Archive API는 2006년에 처음 작성된 포스트부터 지금까지의 포스트에 대한 액세스를 제공합니다. 포스트는 요청에서 지정한 쿼리를 기준으로 매칭되어 반환됩니다. 쿼리는 반환받을 포스트에 어떤 내용이 포함되어야 하는지 정의하는 규칙입니다. 이 튜토리얼에서는 영어로 작성된 X 계정 @XDevelopers에서 생성된 포스트를 검색합니다. 응답으로 받는 포스트는 전체 포스트 페이로드를 제공하는 data 형식이거나, 매칭된 포스트의 개수를 수치로 제공하는 counts 형식일 수 있습니다. 이 튜토리얼에서는 cURL을 사용해 data 및 counts 엔드포인트에 요청을 보냅니다. 다음 항목이 필요합니다:

데이터 엔드포인트에 액세스하기

데이터 엔드포인트는 일치하는 포스트에 대한 전체 게시물 페이로드를 제공합니다. from:lang: 연산자를 사용하여 @XDevelopers 계정에서 작성된 영어 포스트를 찾겠습니다. 추가 연산자에 대해서는 여기를 클릭하세요.
cURL은 URL 구문을 사용하여 파일을 가져오거나 전송하는 명령줄 도구입니다.다음 cURL 요청을 명령줄에 복사한 뒤, 아래 항목을 변경하여 사용하세요:
  • Username <USERNAME> 예: email@domain.com
  • Account name <ACCOUNT-NAME> 예: john-doe
  • Label <LABEL> 예: prod
  • fromDate 및 toDate 예: "fromDate":"201802010000", "toDate":"201802282359"
요청을 전송한 후 비밀번호 입력을 요청받습니다.
데이터 엔드포인트 응답 페이로드
API 요청에 대한 응답 페이로드는 아래와 같이 JSON 형식으로 반환됩니다.

counts 엔드포인트 사용하기

counts 엔드포인트를 사용하면 day 단위로 그룹화된, @XDevelopers 계정에서 영어로 작성된 포스트 개수를 조회할 수 있습니다.
cURL은 URL 구문을 사용하여 파일을 가져오거나 전송하는 명령줄 도구입니다.다음 항목을 수정한 뒤 아래 cURL 요청을 명령줄에서 복사해 실행합니다:
  • Username <USERNAME> 예: email@domain.com
  • Account name <ACCOUNT-NAME> 예: john-doe
  • Label <LABEL> 예: prod
  • fromDate 및 toDate 예: "fromDate":"201802010000", "toDate":"201802282359"
요청을 전송한 후 비밀번호 입력을 요청받습니다.

Counts 엔드포인트 응답 페이로드

API 요청에 대한 응답 페이로드는 아래와 같이 JSON 형식으로 반환됩니다.
잘하셨습니다! 이제 enterprise Search Posts: Full-Archive API에 성공적으로 접근할 수 있게 되었습니다.
참고 문서

가이드

검색 쿼리 작성하기

엔터프라이즈 연산자

아래는 X의 엔터프라이즈 검색 API에서 지원되는 모든 연산자 목록입니다.
  • Enterprise 30일 검색 API
  • Enterprise 전체 아카이브 검색 API
제품별로 사용 가능한 연산자를 나란히 비교하려면 여기를 참고하세요.
참고: 모든 is:has: 연산자는 Search API에서 단독으로 사용할 수 없으며, 반드시 다른 절과 함께 사용해야 합니다.예: @XDeevelopers has:links

제품 개요

엔터프라이즈 등급 Full-archive Search는 2015년 8월에 출시되었고, 프리미엄 등급 버전은 2018년 2월에 출시되었습니다. 이 검색 제품은 고객이 공개된 모든 게시물에 즉시 접근할 수 있도록 해줍니다. Full-archive Search를 사용하면 하나의 쿼리만 제출하고, 클래식한 RESTful 방식으로 응답을 받게 됩니다. Full-archive Search는 응답당 최대 500개의 포스트를 반환하는 페이지네이션을 구현하며, 프리미엄의 경우 분당 최대 60회(rpm), 엔터프라이즈의 경우 분당 120회의 레이트 리밋을 지원합니다. 이러한 특성 덕분에 Full-archive Search는 포스트를 빠르게, 그리고 동시 요청을 활용하여 대규모로 조회하는 데 사용할 수 있습니다. 디스크에 저장된 포스트 플랫 파일 집합을 기반으로 하는 Historical PowerTrack과 달리, Full-archive Search 포스트 아카이브는 온라인 데이터베이스와 매우 유사합니다. 모든 데이터베이스와 마찬가지로, 그 내용에 대해 쿼리를 수행할 수 있습니다. 또한 고성능 데이터 검색을 가능하게 하는 인덱스 를 활용합니다. Full-archive Search 엔드포인트에서는 쿼리 언어가 PowerTrack Operator로 구성되며, 각 Operator는 인덱싱된 포스트 JSON 속성에 대응합니다. 또한 Historical PowerTrack과 마찬가지로, 쿼리를 수행하는 시점에 맞춰 최신 상태로 유지되는 포스트 속성들도 있습니다. 예를 들어, 오늘 Search API를 사용하여 2010년에 게시된 포스트를 조회하는 경우, 사용자 프로필 설명, 계정의 ‘home’ 위치, 표시 이름, 그리고 좋아요 및 리트윗 개수에 대한 포스트 메트릭은 2010년 당시의 값이 아니라 오늘 기준으로 갱신된 값이 제공됩니다. 

메타데이터 타임라인

아래는 Full-archive search 엔드포인트 연산자(Operator)들이 언제부터 매칭되기 시작했는지에 대한 타임라인입니다. 일부 경우에는, X에서 특정 ‘커뮤니케이션 관행’이 널리 사용되기 훨씬 나중에 연산자 매칭이 시작되었습니다. 예를 들어, @Replies는 2006년에 사용자 관행으로 등장했지만, 2007년 초까지 ‘지원하는’ JSON을 가진 일급 객체 또는 _이벤트_가 되지는 않았습니다. 따라서 2006년의 @Replies를 매칭하려면 to:in_reply_to_status_id: PowerTrack 연산자에 의존하기보다는 게시물 본문을 검사해야 합니다. 여기에 제공된 세부 정보는 Full-Archive Search(수백 번의 검색을 기반으로 한 결과)를 사용해 생성되었습니다. 이 타임라인은 100% 완전하거나 정확하지 않을 수 있습니다. 사용 사례에 근본적인 영향을 미치는 다른 필터링/메타데이터의 “시작일”을 확인하신 경우, 저희에게 알려주시기 바랍니다. 기반이 되는 검색 인덱스는 다시 빌드될 수 있다는 점에 유의하세요. 따라서 이 타임라인의 세부 사항은 변경될 수 있습니다.

2006

  • 3월 26일 - lang:. 검색 인덱스를 생성하는 동안 게시물 메타데이터를 나중에 소급 채워 넣는(backfill) 예시입니다.
  • 7월 13일 - has:mentions가 매칭되기 시작합니다.
  • 10월 6일 - has:symbols. 주식 종목 기호를 논의할 때 사용하는 cashtag(또는symbol)2009년초가되어서야흔해집니다.그전까지의대부분의사용은아마도속어표기였을것입니다(:cashtag(또는 symbol)은 2009년 초가 되어서야 흔해집니다. 그 전까지의 대부분의 사용은 아마도 속어 표기였을 것입니다(예: slang).
  • 10월 26일 - has:links가 매칭되기 시작합니다.
  • 11월 23일 - has:hashtags가 매칭되기 시작합니다.

2007

  • January 30 - 최초의 정식 @reply (in_reply_to_user_id) 도입, reply_to_status_id: 매칭이 시작됨.
  • August 23 - 해시태그가 주제와 대화를 조직하는 일반적인 관행으로 등장. 일주일 뒤 첫 실질적 사용이 나타남.

2009

  • 5월 15일 - is:retweet. 이 Operator는 공식 리트윗의 ‘베타’ 출시와 해당 “Via @” 패턴부터 매칭하기 시작합니다. 이 베타 기간 동안에는 Post 동사(verb)가 ‘post’이고, 원본 게시물은 페이로드에 포함되지 않습니다.
  • 8월 13일 - 공식 리트윗의 최종 버전이 “RT @” 패턴, 동사(verb)를 ‘share’로 설정하고, 원본 게시물을 포함하는 ‘retweet_status’ 속성과 함께 출시됩니다(이로 인해 JSON 페이로드 크기가 대략 두 배가 됩니다).

2010

  • 3월 6일 - has:geo, bounding_box:point_radius: geo 연산자(Operator)가 매칭을 시작합니다.
  • 8월 28일 - has:videos (2015년 2월까지 이 연산자는 youtube.com, vimeo.com, vivo.com 등 일부 동영상 호스팅 사이트 링크가 포함된 포스트와 매칭됩니다).

2011

  • July 20 - has:mediahas:images가 매칭되기 시작했습니다. 네이티브 사진 기능은 2010년 8월 9일 공식적으로 발표되었습니다.

2014

  • 12월 3일경 - HTML 제목과 설명이 포함된 일부 향상된 URL 메타데이터가 페이로드에 포함되기 시작했습니다. 향상된 메타데이터는 2016년 5월에 보다 완전한 형태로 정착했습니다.

2015

  • 2월 10일 - has:videos가 ‘네이티브’ X 동영상을 대상으로 동작합니다.
  • 2월 17일 - has:profile_geo, profile_country:, profile_region:, profile_locality: Profile Geo 연산자를 사용할 수 있게 됩니다.
  • 2월 17일 - place_country:place: 게시물 위치(geo) 연산자를 사용할 수 있게 됩니다.

2016

2017

  • 2월 22일 - 투표 메타데이터가 보강된 네이티브(enriched native) 형식으로 제공됩니다. 이 메타데이터에 사용할 수 있는 Operator는 제공되지 않습니다.

2022

  • September 27 - 이 날짜 이후에 생성된 모든 Post 객체에는 게시물 편집 메타데이터가 제공됩니다. Post 객체를 반환하는 모든 Enterprise 엔드포인트는 이 날짜부터 이 메타데이터를 제공하도록 업데이트되었습니다. 제공되는 편집 메타데이터에는 edit_history 및 edit_controls 객체가 포함됩니다. 이 메타데이터는 2022년 9월 27일 이전에 생성된 게시물에는 반환되지 않습니다. 현재 이 메타데이터와 일치하는 Enterprise Operators는 제공되지 않습니다. 게시물 편집 메타데이터에 대해 더 알아보려면 Edit Posts fundamentals 페이지를 확인하세요.

2022

  • 9월 29일 - 이 날짜 이후에 생성된 모든 게시물 객체에는 편집된 게시물 메타데이터가 제공됩니다. 게시물 객체를 제공하는 모든 Enterprise 엔드포인트는 이 날짜부터 해당 메타데이터를 제공하도록 업데이트되었습니다. 제공되는 편집 메타데이터에는 edit_historyedit_controls 객체가 포함됩니다. 이 메타데이터는 2022년 9월 27일 이전에 생성된 포스트에 대해서는 반환되지 않습니다. 현재 이 메타데이터에 대응하는 Enterprise Operators는 제공되지 않습니다. 편집 게시물 메타데이터에 대해 더 알아보려면 Edit Posts fundamentals 페이지를 확인하세요.

필터링 팁

위에서 설명한 타임라인 정보를 종합해 보면, Search API 필터를 작성할 때 고려해야 할 세부 사항이 매우 많다는 것을 알 수 있습니다. 특히 다음 두 가지를 유의해야 합니다:
  • 일부 메타데이터에는 ‘생성일(born-on)’이 있기 때문에 필터 결과에 위음성(false negative) 이 발생할 수 있습니다. 이런 검색에는 전체 또는 일부 검색 기간 동안 존재하지 않았던 메타데이터에 의존하는 Operator가 포함됩니다. 예를 들어 has:images Operator를 사용해 게시물을 검색하는 경우, 2011년 7월 이전 기간에 대해서는 일치하는 결과가 없습니다. 해당 Operator는 네이티브 사진(사용자가 X UI를 통해 게시물에 첨부한 사진)을 기준으로 매칭되기 때문입니다. 사진 공유 게시물에 대한 보다 완전한 데이터 세트를 얻으려면, 2011년 7월 이전 기간에는 일반적인 사진 호스팅 URL에 매칭되는 규칙 절을 필터에 포함해야 합니다.
  • 일부 메타데이터는 게시물이 X에 게시된 이후 시점의 메타데이터로 다시 채워(backfill)졌습니다.
PowerTrack 쿼리를 작성할 때 일반적으로 중점적으로 보게 되는 속성 유형은 다음과 같습니다:
  • X 프로필
  • 원본 또는 공유 게시물
  • 게시물 언어 분류
  • 지리 정보가 참조된 게시물
  • 공유된 링크 미디어
이 중 일부는 제품별로 다른 동작을 가지며, 나머지는 동일한 동작을 가집니다. 자세한 내용은 아래를 참조하세요.

X 프로필

Search API는 과거 포스트를 검색 시점 에 존재하는 그대로의 사용자 프로필 데이터와 함께 제공합니다. 2014년의 게시물을 요청하더라도, 해당 사용자의 프로필 메타데이터는 쿼리 시점의 상태를 반영합니다.

원본 게시물 및 리트윗

PowerTrack _is:retweet_ 연산자를 사용하면 리트윗을 포함할지 제외할지 선택할 수 있습니다. 이 연산자를 사용하는 사용자는 2009년 8월 이전 데이터에 대해 리트윗을 일치(또는 비일치)시키기 위한 두 가지 전략을 마련해야 합니다. 2009년 8월 이전에는 “@RT ” 패턴과 일치하는지 확인하기 위해, 정확한 구문 일치 방식으로 게시물 본문 자체를 검사해야 합니다(실제로 2009년 5월부터 8월 사이의 리트윗을 필터링하는 경우에는 “Via @” 패턴도 포함해야 합니다). 2009년 8월 이후 기간에는 _is:retweet_ 연산자를 사용할 수 있습니다.

게시물 언어 분류

게시물의 언어 분류를 기준으로 필터링할 때, X의 과거 제품들은 서로 상당히 다릅니다. Search 아카이브가 구축될 때, 모든 게시물에는 X 언어 분류가 소급 적용되었습니다. 따라서 lang: 연산자는 전체 게시물 아카이브에서 사용할 수 있습니다.

포스트의 지리 정보 지정(Geo-referencing)

포스트의 지리 정보를 지정하는 주요 방법은 세 가지입니다.
  • 포스트 메시지 내 지리적 참조. 포스트 메시지에 포함된 지리적 참조에 매칭하는 방법입니다. 현지 지식에 의존해야 해서 가장 까다로운 방법이지만, 전체 포스트 아카이브에 대해 사용할 수 있는 옵션입니다. 샌프란시스코 지역을 대상으로 ‘golden gate’ 필터를 기반으로 2006년에 지리 정보가 지정된 매칭 예시는 여기에서 확인할 수 있습니다.
  • 사용자가 지오태그한 포스트. Search API에서는 2010년 3월부터 일부 Geo 연산자를 사용해 포스트를 매칭할 수 있게 되었고, 2015년 2월에는 다른 연산자들이 추가되었습니다.
    • 2010년 3월 6일: has:geo, bounding_box:point_radius:
    • 2015년 2월 17일: place_country:place:
  • 사용자가 설정한 계정 프로필 ‘home’ 위치. 프로필 Geo 연산자는 Historical PowerTrack과 Search API 모두에서 사용할 수 있습니다. Search API에서는 이 프로필 Geo 메타데이터를 2015년 2월부터 사용할 수 있습니다. 프로필 Geo 메타데이터가 제공되기 이전에 게시된 포스트의 경우, 정규화되지 않은 사용자 입력에 매칭하는 데 사용할 수 있는 bio_location: 연산자가 제공됩니다.
2012년 3월에 확장 URL 엔리치먼트가 도입되었습니다. 그 이전까지는 게시물 페이로드에 사용자가 제공한 URL만 포함되었습니다. 따라서 사용자가 단축 URL을 포함한 경우, 관심 있는 (확장된) URL과 매칭하기가 어려울 수 있습니다. Search API에서는 이 메타데이터를 2012년 3월부터 사용할 수 있습니다. 2016년 7월에 향상된 URL 엔리치먼트가 도입되었습니다. 이 향상된 버전은 게시물 페이로드에 웹사이트의 HTML 제목과 설명을 제공하며, 이에 기반해 매칭할 수 있는 연산자(Operator)도 함께 제공합니다. 이러한 메타데이터는 2014년 12월부터 나타나기 시작합니다. 2016년 9월, X는 ‘네이티브 첨부 파일’을 도입하여, 뒤에 오는 공유 링크가 게시물 140자 제한에 포함되지 않도록 했습니다. 두 가지 URL 엔리치먼트는 이러한 공유 링크에도 계속 적용됩니다. 관련 Search 연산자들이 매칭되기 시작한 시점은 다음과 같습니다:
  • 2006년 10월 26일 - has:links
  • 2011년 7월 20일 - has:imageshas:media
  • 2011년 8월 - Expanded URLs enrichment를 사용하는 url:. 2006년 9월처럼 이른 시점에도 (url:"spotify.com" OR url:gnip OR url:microsoft OR url:google OR url:youtube)는 twitter_entities 및 gnip 객체에 urls[] 메타데이터가 없음에도 불구하고 http://x.com/Adam/statuses/16602 와 매칭됩니다. “youtube.com”은 어떤 urls[] 메타데이터도 없이 url:youtube와 매칭되는 메시지 콘텐츠의 예입니다.
  • 2015년 2월 10일 - 네이티브 비디오용 has:videos. 2010/08/28부터 2015/02/10 사이에는 이 연산자가 youtube.com, vimeo.com, vivo.com과 같은 일부 비디오 호스팅 사이트로의 링크가 포함된 포스트와 매칭됩니다.
  • 2016년 5월 1일 - Enhanced URLs enrichment를 기반으로 하는 url_title:url_description: 이 일반적으로 제공되기 시작했습니다. 첫 번째 Enhanced URL 메타데이터는 2014년 12월에 나타나기 시작했습니다.

자주 묻는 질문(FAQ)

Search Post API 관련 일반 질문

counts 엔드포인트가 제공하는 결과와 data 엔드포인트가 제공하는 결과 사이에는 알려진 차이가 있습니다. 이는 counts 엔드포인트가 사전 컴플라이언스(pre-compliance) 단계의 결과를 제공하여 삭제된 게시물, 위치 정보 삭제(scrub geo) 등과 같은 요소를 반영하지 않는 반면, data 엔드포인트는 전달 시점에 컴플라이언스를 준수하며 모든 컴플라이언스 이벤트를 반영하기 때문에, 결과에 불일치가 발생할 수 있기 때문입니다.
이런 일이 발생했을 수 있는 몇 가지 가능한 이유가 있습니다. 예를 들면 다음과 같습니다.
  1. 예상했던 게시물이 보호된 계정의 게시물인 경우
  2. 데이터 엔드포인트가 모든 컴플라이언스 이벤트를 고려하기 때문입니다(즉, 삭제된 게시물, 삭제된 위치 정보 등은 응답에 포함되지 않습니다).
이는 프리미엄 규칙 및 필터링 기능을 잘못 사용했기 때문일 가능성이 큽니다. 여기의 문서를 검토하고, 규칙을 작성할 때 적용되는 제한 사항을 충분히 이해하고 있는지 확인하세요.
네, 다음과 같은 것들이 있습니다.
  • Tweepy - 표준 Search/Posts 제품을 사용할 때 유용한 라이브러리입니다(Python)
  • X API - 표준 Search Post API를 사용할 때 유용한 라이브러리입니다(Python)
  • Search Posts PythonSearch Posts Ruby - 엔터프라이즈용(및 v2!) Search Post API와 함께 사용할 수 있는 유용한 도구 두 가지입니다
우리가 직접 지원하는 모든 라이브러리는 xdevplatform GitHub 페이지에서 확인할 수 있습니다: https://github.com/xdevplatform.도움이 될 수 있는 기타 타사 라이브러리도 있습니다. 다만 이들 중 일부는 프리미엄 및 엔터프라이즈 제품에서는 작동하지 않을 수 있다는 점에 유의해 주세요.
네. 데이터 엔드포인트는 지정한 maxResults 값 또는 30일 기간 단위로 페이지네이션됩니다.예를 들어, 특정 30일 기간에 포스트가 800개 있는 경우 전체 결과를 가져오려면 두 번의 요청을 보내야 합니다. 요청당 반환될 수 있는 포스트의 최대 개수는 500개(maxResults)이기 때문입니다. 그리고 첫 번째 달에 포스트가 400개, 두 번째 달에 포스트가 100개 있는 경우에도 전체 결과를 가져오려면 두 번의 요청을 사용해야 합니다. 첫 번째 요청이 지정한 maxResults보다 적은 수의 포스트를 반환하더라도, 페이지네이션은 30일 기간이 지나면 이루어지기 때문입니다.
포스트는 최신순(내림차순)으로 반환됩니다. 예를 들어, 첫 페이지 결과에는 쿼리와 일치하는 가장 최신 포스트가 표시되며, 페이지네이션은 결과의 게시 날짜를 기준으로 처음 요청한 fromDate에 도달할 때까지 계속 진행됩니다.
청구 시에는 원본 게시물만 계산됩니다. 이후에 이루어진 편집은 모두 무시되며 전체 활동 집계에 반영되지 않습니다. Enterprise
당사의 엔터프라이즈 솔루션은 예측 가능한 가격으로 귀사의 비즈니스 요구에 맞게 맞춤 제공합니다. 자세한 내용 확인 및 신청은 여기를 참조해 주십시오.
  • 엔터프라이즈 Search 게시물 API 문서는 여기를 참고하세요.
  • 규칙 및 필터링에 대한 유용한 정보는 여기에서 확인할 수 있습니다.
  • 데이터 엔드포인트 사용에 대한 유용한 정보는 여기에서 확인할 수 있습니다.
  • 카운트 엔드포인트 사용에 대한 유용한 정보는 여기에서 확인할 수 있습니다.
  • 사용 가능한 연산자 목록은 여기에서 확인할 수 있습니다.
이와 관련된 도움을 받으시려면 X 담당 Account Manager에게 문의해 주세요.

오류 해결 가이드

코드 404 - Not Found
  1. 각 엔드포인트에 올바른 매개변수를 사용하고 있는지 확인하세요 (예: buckets 필드는 data 엔드포인트가 아니라 counts 엔드포인트에서만 사용할 수 있습니다).
  2. :product, :account_name, :label 필드가 올바른지 다시 한 번 확인하세요. GNIP 콘솔(엔터프라이즈 고객 전용)에서 :label 필드를 확인할 수 있습니다.

API 참조 문서

Enterprise search APIs

엔터프라이즈 검색 API에는 다음 두 가지가 있습니다.
  • 30-Day Search API - 최근 30일 이내에 게시된 Tweet을 제공합니다.
  • Full-Archive Search API - 2006년 3월에 게시된 첫 번째 Tweet부터 시작해, 2006년까지 거슬러 올라가는 Tweet을 제공합니다.
이 검색 API는 공통된 설계를 따르며, 아래 문서는 두 API 모두에 적용됩니다. 2022년 9월 29일부터 생성된 Tweet의 경우, Tweet 객체에는 편집 이력을 설명하는 Tweet 편집 메타데이터가 포함됩니다. 자세한 내용은 “Edit Tweets” 기본 사항 페이지를 참조하세요. 아래에서는 엔터프라이즈 검색 API를 연동할 때 필요한 중요한 세부 정보를 확인할 수 있습니다.
  • Tweet 데이터 및 개수(count)를 요청하는 메서드
  • 인증
  • 페이지네이션
  • API 요청 매개변수 및 요청 예시
  • API 응답 JSON 페이로드 및 응답 예시
  • HTTP 응답 코드
엔터프라이즈 API는 Tweet 아카이브에 대한 저지연, 원본 보존(full-fidelity)의 쿼리 기반 액세스를 제공합니다. 두 API의 유일한 차이점은 검색할 수 있는 기간으로, 최근 30일 또는 2006년부터입니다. 기간은 분 단위까지 지정할 수 있습니다. Tweet 데이터는 쿼리와 일치하는 가장 최근 Tweet부터 역순 시간 순으로 제공됩니다. Tweet은 게시된 후 약 30초가 지나면 검색 API에서 사용할 수 있습니다.

메서드

엔터프라이즈 검색의 기본 URI는 https://gnip-api.x.com/search/입니다. 여기서:
  • :product는 요청을 보내는 검색 endpoint를 나타내며, 30day 또는 fullarchive입니다.
  • :account_name은 console.gnip.com에 표시되는 계정과 연결된 이름으로, 대소문자를 구분합니다.
  • :label은 console.gnip.com에 표시되는 검색 endpoint와 연결된 레이블로, 대소문자를 구분합니다.
예를 들어, TwitterDev 계정이 레이블이 ‘prod’(production의 약어)인 30일 검색 product를 보유하고 있는 경우 검색 endpoint는 다음과 같습니다. 완전한 엔터프라이즈 검색 API endpoint는 https://console.gnip.com에서 확인할 수 있습니다. 아래에는 curl이라는 간단한 HTTP 유틸리티를 사용한 여러 요청 예시가 있습니다. 이 예시들은 :product, :account_name, :label이 포함된 URL을 사용합니다. 이 예시들을 사용할 때에는 반드시 URL을 자신의 정보로 업데이트해야 합니다.

인증

Enterprise search API에 대한 모든 요청에는 https://console.gnip.com 계정에 로그인할 때 사용하는 유효한 이메일 주소와 비밀번호 조합으로 구성한 HTTP _Basic Authentication_을 사용해야 합니다. 각 요청마다 이 인증 정보를 Authorization 헤더에 포함해 전달해야 합니다.

요청/응답 동작

fromDatetoDate 파라미터를 사용하면 API가 지원하는 어떤 기간이든 요청할 수 있습니다. 30-Day search API는 가장 최근 31일간의 Tweet을 제공합니다(‘30-Day’ API라고 부르지만, 사용자가 한 달 전체를 요청할 수 있도록 31일을 제공합니다). Full-Archive search API는 최초의 Tweet(2006년 3월 21일)까지 거슬러 올라가는 Tweet을 제공합니다. 다만 단일 응답에는 지정한 maxResults 값과 31일 중 더 작은 쪽까지만 포함됩니다. 매칭되는 데이터 양 또는 지정한 시간 범위가 maxResults 또는 31일을 초과하는 경우, 남은 지정 시간 범위를 페이지네이션하기 위해 사용해야 하는 next 토큰을 받게 됩니다. 예를 들어, Full-Archive search를 사용하여 2017년 1월 1일부터 2017년 6월 30일까지 쿼리에 매칭되는 모든 Tweet을 조회한다고 가정해 보겠습니다. 이때 요청에서 fromDatetoDate 파라미터를 사용해 해당 6개월 전체 기간을 지정합니다. search API는 첫 번째 Tweet ‘페이지’를 응답으로 반환하며, 이때 Tweet 개수는 maxResults 파라미터(기본값은 100)에 맞게 반환됩니다. 더 많은 Tweet이 존재하는 경우(대부분의 경우 더 많이 존재합니다), API는 다음 ‘페이지’의 데이터를 요청할 수 있도록 하는 next 토큰도 함께 제공합니다. 이 과정은 API가 더 이상 next 토큰을 반환하지 않을 때까지 반복됩니다. 자세한 내용은 다음 섹션을 참고하세요. 데이터 요청과 count 요청을 모두 수행할 때는, 단일 응답으로 반환할 수 있는 것보다 더 많은 데이터가 있을 가능성이 큽니다. 그런 경우 응답에 next 토큰이 포함됩니다. next 토큰은 최상위 수준 JSON 속성으로 제공됩니다. next 토큰이 제공되는 경우에는 추가로 조회해야 할 데이터가 있다는 의미이므로, 계속해서 API 요청을 보내야 합니다. 참고: next 토큰의 동작은 데이터 요청과 count 요청에서 약간 다르며, 둘 다 아래에서 설명합니다. 예시 응답은 API 참조 문서 섹션에 제공되어 있습니다.
데이터 페이지네이션
데이터에 대한 요청은 단일 응답에 포함될 수 있는 양보다 더 많은 데이터를 반환하는 경우가 많습니다. 각 데이터 요청에는 요청마다 반환할 Tweet의 최대 개수를 설정하는 매개변수가 포함됩니다. 이 maxResults 매개변수의 기본값은 100이며, 10–500 범위 내에서 설정할 수 있습니다. 쿼리와 일치하는 Tweet 수가 요청에 사용한 maxResults 매개변수 값보다 많은 경우, 응답에는 루트 수준 JSON 속성으로 ‘next’ 토큰이 포함됩니다. 이 ‘next’ 토큰은 해당 쿼리에 대해 다음에 일치하는 Tweet 묶음(즉, 다음 ‘page’)을 가져오기 위한 후속 요청에서 사용됩니다. 쿼리에 대한 마지막 ‘page’에 도달해 더 이상 ‘next’ 토큰이 제공되지 않을 때까지 ‘next’ 토큰이 계속 반환됩니다. 다음 ‘page’의 데이터를 요청하려면, (사용했다면) query, toDate, fromDate 매개변수를 포함해 초기 쿼리와 완전히 동일한 쿼리를 보내야 하며, 이전 응답에서 받은 값을 설정한 ‘next’ 요청 매개변수도 포함해야 합니다. 이는 GET 또는 POST 요청 모두에서 사용할 수 있습니다. 단, GET 요청의 경우 ‘next’ 매개변수는 URL 인코딩되어야 합니다. 이전 쿼리에서 받은 ‘next’ 요소를 계속 전달하면, 쿼리가 대상으로 하는 기간 동안의 모든 Tweet을 받을 때까지 데이터를 가져올 수 있습니다. ‘next’ 요소가 포함되지 않은 응답을 받으면, 이는 마지막 페이지에 도달했으며 지정된 쿼리와 시간 범위에 대해 더 이상 사용할 수 있는 데이터가 없다는 의미입니다.
카운트 페이지네이션
counts endpoint는 쿼리와 연관된 Tweet 개수를 일 단위, 시간 단위, 또는 분 단위 기준으로 제공합니다. counts API endpoint는 최대 31일 분량의 카운트에 대해 타임스탬프가 포함된 카운트 배열을 반환합니다. 31일이 넘는 기간의 카운트를 요청하면 next 토큰이 제공됩니다. 데이터용 next 토큰과 마찬가지로, 원래 요청과 완전히 동일한 쿼리를 다시 수행해야 하며, 이전 응답에서 받은 값을 next 요청 매개변수로 함께 보내야 합니다. 31일을 초과하는 카운트를 요청하는 경우 외에도, next 토큰이 제공되는 또 다른 시나리오가 있습니다. 볼륨이 높은 쿼리의 경우, 카운트를 생성하는 데 걸리는 시간이 길어져 응답 타임아웃이 발생할 수 있습니다. 이 경우 31일 미만의 카운트를 받게 되지만, 전체 카운트 페이로드를 계속 요청할 수 있도록 next 토큰이 함께 제공됩니다. 중요: 타임아웃이 발생하면 항상 전체 “버킷”만 반환됩니다. 예를 들어 2.5일 분량의 데이터는 2일치 전체 “버킷”으로만 반환됩니다.
추가 참고 사항
  • 검색 요청에서 fromDate 또는 toDate를 사용할 때는 지정한 시간 범위 안에 있는 결과만 받게 됩니다. 시간 범위 내에서 마지막 결과 세트에 도달하면 ‘next’ 토큰을 받지 못합니다.
  • ‘next’ 요소는 10~500 사이의 어떤 maxResults 값과도 함께 사용할 수 있습니다(기본값은 100). maxResults는 각 응답에서 반환되는 Tweet 수를 결정하지만, 결국 모든 결과를 받는 것을 막지는 않습니다.
  • ‘next’ 요소는 만료되지 않습니다. 동일한 ‘next’ 쿼리를 사용한 여러 요청은, 요청 시점과 관계없이 동일한 결과를 받게 됩니다.
  • ‘next’ 매개변수를 사용해 결과를 페이지로 나누어 조회할 때, 쿼리 경계에서 중복 항목이 발생할 수 있습니다. 애플리케이션은 이러한 중복을 허용하도록 설계해야 합니다.

데이터 엔드포인트

POST /search/:product/:label
엔드포인트 패턴:
이 엔드포인트는 지정된 쿼리와 시간 범위에 대한 데이터를 반환합니다. 시간 범위를 지정하지 않으면, 시간 파라미터는 기본적으로 지난 30일로 설정됩니다. 참고: 아래에 설명된 파라미터를 URL에 인코딩하면, POST 대신 GET 요청을 사용해도 동일한 기능을 구현할 수 있습니다.
데이터 요청 매개변수
추가 세부사항
데이터 요청 및 응답 예시
POST 요청 예시
  • POST 요청의 매개변수는 아래와 같이 JSON 형식의 본문(body)을 통해 전송됩니다.
  • 조회하려는 PowerTrack 규칙의 모든 구성 요소(예: 키워드, bounding_box:와 같은 기타 연산자)는 ‘query’ 매개변수에 포함해야 합니다.
  • 규칙의 일부를 쿼리 URL의 개별 매개변수로 분리하지 마십시오.
다음은 초기 데이터 요청을 보내기 위한 POST(cURL 사용) 명령 예시입니다:
API 데이터 응답에 ‘next’ 토큰이 포함된 경우, 아래는 제공된 토큰을 ‘next’ 파라미터에 설정하여 원래 요청을 다시 수행하는 후속 요청 예시입니다:
예시 GET 요청
  • GET 요청의 요청 매개변수는 표준 URL 인코딩을 사용하여 URL에 인코딩됩니다.
  • 조회하려는 PowerTrack 규칙의 모든 부분(예: 키워드, bounding_box:와 같은 기타 연산자)은 ‘query’ 매개변수에 넣어야 합니다.
  • 쿼리 URL에서 규칙의 일부를 별도의 매개변수로 분리하지 마십시오.
다음은 초기 데이터 요청을 수행하기 위한 예시 GET (cURL 사용) 명령입니다:
예시 데이터 응답
2022년 9월 29일 이후에 생성된 Tweet의 경우, Tweet 객체에 편집 이력을 설명하는 Tweet 편집 메타데이터가 포함됩니다. 자세한 내용은 “Edit Tweets” 기본 설명 페이지를 참조하세요. 아래는 데이터 쿼리에 대한 예시 응답입니다. 이 예시는 사용 가능한 Tweet 수가 ‘maxResults’보다 많아서 이후 요청을 위해 ‘next’ 토큰이 제공된 상황을 가정합니다. 쿼리와 연관된 Tweet 수가 ‘maxResults’ 이하거나 그보다 적다면, 응답에 ‘next’ 토큰이 포함되지 않습니다. ‘next’ 요소의 값은 쿼리마다 변경되며 불투명한 문자열로 취급해야 합니다. 응답 본문에서 ‘next’ 요소는 다음과 같은 형태입니다:
후속 요청에 대한 응답은 다음과 비슷할 수 있습니다(새로운 Tweet과 변경된 ‘next’ 값에 주의하세요):
이전 쿼리에서 받은 ‘next’ 요소를, 해당 쿼리가 다루는 기간의 모든 Tweet을 받을 때까지 계속 전달할 수 있습니다. ‘next’ 요소가 포함되지 않은 응답을 받으면, 마지막 페이지에 도달했으며 지정한 기간에 대해 더 이상 추가 데이터가 없음을 의미합니다.

카운트 엔드포인트

/search/:stream/counts
엔드포인트 패턴:
/search/fullarchive/accounts/:account_name/:label/counts.json 이 엔드포인트는 지정된 쿼리에 대한 카운트(데이터 볼륨) 데이터를 반환합니다. 기간이 지정되지 않은 경우 시간 파라미터는 기본적으로 최근 30일로 설정됩니다. 데이터 볼륨은 일 단위, 시간 단위(기본값), 또는 분 단위 중 하나로 타임스탬프가 포함된 배열 형태로 반환됩니다. 참고: 아래에 설명된 파라미터를 URL에 인코딩하면 POST 대신 GET 요청을 사용해도 동일한 동작을 수행할 수 있습니다.
카운트 요청 매개변수
추가 세부 정보
카운트 요청 및 응답 예제
POST 요청 예시
  • POST 요청의 요청 매개변수는 아래와 같이 JSON 형식의 요청 본문(body)으로 전송됩니다.
  • 조회하려는 PowerTrack 규칙의 모든 요소(예: 키워드, bounding_box:와 같은 기타 연산자)는 ‘query’ 매개변수에 넣어야 합니다.
  • 규칙의 일부를 쿼리 URL의 개별 매개변수로 분리하지 마십시오.
다음은 초기 counts 요청을 보내기 위한 POST(cURL 사용) 명령 예시입니다:
API counts 응답에 ‘next’ 토큰이 포함되어 있다면, 아래와 같이 원래 요청에서 ‘next’ 매개변수에 제공된 토큰 값을 설정하여 보내는 후속 요청 예시는 다음과 같습니다:
GET 요청 예시
  • GET 요청의 매개변수는 표준 URL 인코딩을 사용하여 URL에 인코딩됩니다
  • 조회할 PowerTrack 규칙의 모든 부분(예: 키워드, bounding_box:와 같은 기타 연산자)은 모두 ‘query’ 매개변수에 포함해야 합니다
  • 규칙의 일부를 쿼리 URL에서 분리하여 별도의 매개변수로 전달하지 마십시오
다음은 초기 counts 요청을 수행하기 위한 GET 요청(cURL 사용) 명령 예시입니다:

예시 counts 응답

아래는 counts(데이터 볼륨) 쿼리에 대한 예시 응답입니다. 이 예시 응답에는 ‘next’ 토큰이 포함되어 있는데, 이는 counts 요청의 조회 기간이 31일을 초과했거나, 제출된 쿼리와 관련된 데이터 볼륨이 충분히 커서 부분 응답만 반환되었음을 의미합니다. ‘next’ 요소의 값은 쿼리마다 달라지며, 내부 구조를 해석하지 않는 단순 문자열로 취급해야 합니다. 응답 본문에서 ‘next’ 요소는 다음과 같은 형태를 띱니다:
후속 요청에 대한 응답은 다음과 같을 수 있습니다(새 counts 타임라인과 다른 ‘next’ 값에 유의하세요).
이전 쿼리에서 받은 ‘next’ 요소를 계속 전달하여, 해당 쿼리 기간에 대한 모든 카운트를 받을 때까지 사용할 수 있습니다. ‘next’ 요소가 포함되지 않은 응답을 받으면 마지막 페이지에 도달했으며, 지정한 시간 범위 내에서 추가로 반환될 카운트가 없음을 의미합니다.

HTTP response codes