참고: X API v2에서 게시물 검색과 게시물 집계의 새 버전을 출시했습니다. X API v2의 신규 사항을 검토하시길 권장합니다. 이 엔드포인트는 게시물 편집 메타데이터를 포함하도록 업데이트되었습니다. 자세한 내용은 “게시물 편집” 기본 사항 페이지를 참고하세요.
개요
Enterprise
Enterprise API는 관리형 액세스 레벨에서만 사용할 수 있습니다. 이 API를 사용하려면 먼저 엔터프라이즈 영업팀과 계정을 개설해야 합니다. 자세한 내용은 여기를 참조하세요.
X API 검색 게시물 제공 항목은 모두 여기에서 확인할 수 있습니다.
엔터프라이즈 검색 API는 두 가지가 있습니다:
- 30-Day Search API는 직전 30일의 데이터를 제공합니다.
- Full-Archive Search API는 2006년 3월 첫 게시물까지 거슬러 올라가는 X 데이터 전체 코퍼스에 완전하고 즉시 액세스할 수 있도록 제공합니다.
요청 유형
검색 요청(데이터)
카운트 요청(게시물 카운트)
사용 가능한 연산자
| 게시물 본문 매칭: | 관심 계정 매칭: | 게시물 속성: | 지리공간 연산자: |
| * 키워드 * “따옴표로 묶인 구문” * “keyword1 keyword2”~N * # * @ * $ * url: * lang: | * from: * to: * retweets_of: | * is:retweet * has:mentions * has:hashtags * has:media * has:videos * has:images * has:links * has:symbols * is:verified * -is:nullcast (부정 전용 연산자) | * bounding_box:[west_long south_lat east_long north_lat] * point_radius:[lon lat radius] * has:geo * place: * place_country: * has:profile_geo * profile_country: * profile_region: * profile_locality: |
데이터 가용성 / 중요 날짜
- 첫 게시물: 2006/3/21
- 첫 기본형 리트윗: 2009/11/6
- 첫 위치 태그가 포함된 게시물: 2009/11/19
- 필터링을 위한 URL 최초 인덱싱: 2011/8/27
- 확장된 URL 메타데이터(웹사이트 제목 및 설명): 2014/12/1
- 프로필 위치 정보 강화 메타데이터 및 필터링: 2015/2/17
데이터 업데이트와 가변성
- 사용자 객체 메타데이터:
- 사용자의 @handle(숫자 id는 절대 변경되지 않음)
- 소개(바이오) 설명
- 카운트: 상태, 팔로워, 친구, 즐겨찾기, 리스트
- 프로필 위치
- 시간대, 언어 등 기타 세부 정보
- 게시물 통계 — 즉 사용자 행동으로 플랫폼에서 변경될 수 있는 항목(아래 예시):
- 즐겨찾기 수
- 리트윗 수
단일 스레드 vs. 다중 스레드 요청
재시도 로직
- 요청이 포함하는 시간 범위를 줄인 뒤 다시 시도하세요. 실패할 경우 6시간 구간까지 단계적으로 줄여 보세요.
- 많은 용어를 OR로 결합하고 있다면, 이를 별도의 규칙으로 분리하여 각각 개별적으로 재시도하세요.
- 규칙에서 제외 조건을 많이 사용 중이라면, 부정 조건(negated terms)의 수를 줄이고 다시 시도하세요.
빠른 시작
엔터프라이즈 Search Posts: 30-Day API 시작하기
- [엔터프라이즈 계정]https://developer.x.com/en/products/x-api/enterprise
- 사용자 이름, 비밀번호, 계정 이름
- console.gnip.com에 표시되는 검색 엔드포인트에 연결된 라벨
데이터 엔드포인트에 액세스하기
from: 및 lang: 연산자를 사용해 @XDevelopers에서 작성된 영어 게시물을 찾아보겠습니다. 더 많은 연산자는 여기를 클릭.
- cURL
- cURL example
cURL은 URL 구문을 사용하여 파일을 가져오거나 전송하는 명령줄 도구입니다.아래 항목을 수정한 후 다음 cURL 요청을 명령줄에 복사하세요:
-
Username
<USERNAME>예:email@domain.com -
Account name
<ACCOUNT-NAME>예:john-doe -
Label
<LABEL>예:prod -
fromDate 및 toDate 예:
"fromDate":"201811010000", "toDate":"201811122359"
데이터 엔드포인트 응답 페이로드
API 요청에 대한 페이로드는 아래와 같이 JSON 형식으로 반환됩니다.counts 엔드포인트에 액세스하기
day 기준으로 그룹화된, @XDevelopers 계정에서 영어로 작성된 게시물 수를 조회합니다.
- cURL
- cURL example
cURL은 URL 구문을 사용하여 파일을 가져오거나 전송하는 명령줄 도구입니다.아래 항목을 수정한 뒤 다음 cURL 요청을 명령줄에 복사해 실행하세요:
-
Username
<USERNAME>예:email@domain.com -
Account name
<ACCOUNT-NAME>예:john-doe -
Label
<LABEL>예:prod -
fromDate 및 toDate 예:
"fromDate":"201811010000", "toDate":"201811122359"
Counts 엔드포인트 응답 페이로드
참고 자료
엔터프라이즈 Search Posts: Full-Archive API 시작하기
- [엔터프라이즈 계정]https://developer.x.com/en/products/x-api/enterprise
- 사용자 이름, 비밀번호, 계정 이름
- console.gnip.com에 표시되는 검색 엔드포인트에 연결된 레이블
데이터 엔드포인트에 액세스하기
from: 및 lang: 연산자를 사용해 영어로 작성된 @XDevelopers의 게시물을 찾겠습니다. 더 많은 연산자는 여기를 클릭하세요.
- cURL
- cURL example
cURL은 URL 구문을 사용해 파일을 가져오거나 전송하는 명령줄 도구입니다.아래 cURL 요청에서 다음 항목을 변경한 뒤 명령줄에 복사하세요:
-
사용자 이름
<USERNAME>예:email@domain.com -
계정 이름
<ACCOUNT-NAME>예:john-doe -
레이블
<LABEL>예:prod -
fromDate 및 toDate 예:
"fromDate":"201802010000", "toDate":"201802282359"
데이터 엔드포인트 응답 페이로드
counts 엔드포인트 사용하기
counts 엔드포인트를 사용해 @XDevelopers 계정에서 영어로 작성된 게시물 수를day 단위로 집계해 가져옵니다.
- cURL
- cURL example
cURL은 URL 구문을 사용해 파일을 가져오거나 전송하는 명령줄 도구입니다.아래의 cURL 요청에서 다음 항목을 수정한 뒤 명령줄에 복사하세요:
-
Username
<USERNAME>예:email@domain.com -
Account name
<ACCOUNT-NAME>예:john-doe -
Label
<LABEL>예:prod -
fromDate 및 toDate 예:
"fromDate":"201802010000", "toDate":"201802282359"
Counts 엔드포인트 응답 페이로드
참고 문서
안내서
검색 쿼리 만들기
엔터프라이즈 연산자
- Enterprise 30일 검색 API
- Enterprise 전체 아카이브 검색 API
| Operator | 설명 |
|---|---|
| keyword | 게시물의 본문 또는 URL 내에서 토큰화된 키워드를 일치시킵니다. 이는 토큰화 일치로, 키워드 문자열이 게시물 본문의 토큰화된 텍스트와 비교됩니다. 토큰화는 구두점, 기호, 분리자 유니코드 기본 평면 문자에 기반합니다. 예를 들어, 텍스트 “I like coca-cola”가 있는 게시물은 다음 토큰으로 분리됩니다: I, like, coca, cola. 그런 다음 이 토큰들을 규칙에 사용한 키워드 문자열과 비교합니다. 구두점(예: coca-cola), 기호 또는 분리자를 포함하는 문자열을 일치시키려면 아래에 설명된 것처럼 따옴표로 감싼 정확한 일치를 사용해야 합니다. 참고: Search API에서는 악센트 및 특수 문자가 표준 라틴 문자로 정규화되며, 이는 외국어에서 의미가 바뀌거나 예기치 않은 결과를 반환할 수 있습니다: 예: “músic”은 “music”과 상호 일치합니다. 예: 스페인어의 흔한 문구 “Feliz Año Nuevo!”는 “Feliz Ano Nuevo”로 색인화되어 문구의 의미가 바뀝니다. 참고: 이 연산자는 게시물 내의 URL과 풀린 URL 모두에 대해 일치합니다. |
| emoji | 게시물 본문 내의 이모지를 일치시킵니다. 이모지는 토큰화 일치로, 사용한 이모지가 게시물 본문의 토큰화된 텍스트와 비교됩니다. 토큰화는 구두점, 기호/이모지, 분리자 유니코드 기본 평면 문자에 기반합니다. 예를 들어, 텍스트 “I like ”가 있는 게시물은 다음 토큰으로 분리됩니다: I, like, . 그런 다음 이 토큰들을 규칙에서 사용한 이모지와 비교합니다. 이모지에 변형이 있는 경우, 규칙에 추가할 때 따옴표를 사용해야 합니다. |
| ”exact phrase match” | 게시물의 본문 또는 URL 내에서 토큰화되고 순서가 유지된 구를 일치시킵니다. 이는 토큰화 일치로, 키워드 문자열이 게시물 본문의 토큰화된 텍스트와 비교됩니다. 토큰화는 구두점, 기호, 분리자 유니코드 기본 평면 문자에 기반합니다. 참고: 구두점은 토큰화되지 않으며 공백으로 처리됩니다. 예: 따옴표로 감싼 “#hashtag”는 “hashtag”와는 일치하지만 #hashtag와는 일치하지 않습니다(실제 해시태그와 일치시키려면 따옴표 없이 해시태그 # 연산자를 사용). 예: 따옴표로 감싼 “cashtag와는 일치하지 않습니다(실제 캐시태그와 일치시키려면 따옴표 없이 캐시태그 $ 연산자를 사용). 예: “Love Snow”는 “#love #snow”와 일치합니다. 예: “#Love #Snow”는 “love snow”와 일치합니다. 참고: 이 연산자는 게시물 내의 URL과 풀린 URL 모두에 대해 일치합니다. |
| ”keyword1 keyword2”~N | 일반적으로 근접 연산자라고 하며, 키워드들이 서로 N토큰 이내에 있는 게시물을 일치시킵니다. 키워드의 순서가 반대인 경우에는 서로 N-2토큰보다 멀어질 수 없습니다. 따옴표 안에 임의 개수의 키워드를 포함할 수 있습니다. N은 6을 초과할 수 없습니다. 이 연산자는 enterprise 검색 API에서만 사용할 수 있습니다. |
| from: | 특정 사용자의 모든 게시물을 일치시킵니다. 값은 사용자의 X 숫자 계정 ID 또는 사용자명(@ 문자는 제외)이어야 합니다. 숫자 X 계정 ID를 조회하는 방법은 여기 또는 여기를 참조하세요. |
| to: | 특정 사용자에게 대한 답글인 모든 게시물을 일치시킵니다. 값은 사용자의 숫자 계정 ID 또는 사용자명(@ 문자는 제외)이어야 합니다. 숫자 X 계정 ID를 조회하는 방법은 여기를 참조하세요. |
| url: | 게시물의 확장된 URL에 대해 토큰화된(키워드/구) 일치를 수행합니다(url_contains와 유사). 구두점이나 특수 문자를 포함하는 토큰 및 구는 큰따옴표로 감싸야 합니다. 예: url:“/developer”. 특정 프로토콜로 일치시키려면(일반적으로 권장하지 않음) 큰따옴표로 감싸세요: url:“https://developer.x.com”. 참고: PowerTrack 또는 Historical PowerTrack을 사용할 때 이 연산자는 인용 게시물의 원본 게시물에 포함된 URL에도 일치합니다. 예를 들어, 규칙에 url:“developer.x.com”이 포함되어 있고 어떤 게시물이 해당 URL을 포함한다면, 그 게시물을 인용한 모든 인용 트윗도 결과에 포함됩니다. 이는 Search API를 사용할 때에는 해당되지 않습니다. |
| # | 지정한 해시태그가 있는 모든 게시물을 일치시킵니다. 이 연산자는 토큰화 일치가 아닌 정확한 일치를 수행하므로, 규칙 “2016”은 정확히 “2016” 해시태그가 있는 게시물과는 일치하지만 “2016election” 해시태그가 있는 게시물과는 일치하지 않습니다. 참고: 해시태그 연산자는 해시태그를 본문에서 추출하려 하기보다 X의 엔터티 추출을 활용하여 해시태그를 일치시킵니다. X 엔터티의 JSON 속성에 대한 자세한 내용은 여기를 참조하세요. |
| @ | 지정한 사용자명을 언급한 모든 게시물을 일치시킵니다. to: 연산자는 @mention 연산자의 부분 집합 결과를 반환합니다. |
| $ | 지정한 ‘캐시태그’(토큰의 첫 글자가 ‘$’인 경우)가 포함된 모든 게시물을 일치시킵니다. 캐시태그 연산자는 본문에서 캐시태그를 추출하려 하기보다 X의 ‘symbols’ 엔터티 추출을 활용하여 캐시태그를 일치시킵니다. 자세한 내용은 여기를 참조하세요. 이 연산자는 enterprise 검색 API에서만 사용할 수 있습니다. |
| retweets_of: | 사용 가능한 별칭: retweets_of_user: 지정한 사용자의 리트윗인 게시물을 일치시킵니다. 사용자명과 숫자 X 계정 ID(게시물 상태 ID 아님) 모두를 허용합니다. 숫자 X 계정 ID를 조회하는 방법은 여기를 참조하세요. |
| lang: | 특정 언어로 X에 의해 분류된 게시물을 일치시킵니다(게시물이 분류된 경우에 한함). 각 게시물은 현재 한 가지 언어로만 분류되므로 여러 언어를 AND로 결합하면 결과가 나오지 않습니다. 참고: 언어 분류를 할 수 없는 경우 제공되는 결과는 ‘und’(정의되지 않음)입니다. 아래 목록은 현재 지원되는 언어와 해당 BCP 47 언어 식별자를 나타냅니다: |
| 암하라어: am | 독일어: de | 말라얄람어: ml | 슬로바키아어: sk |
| 아랍어: ar | 그리스어: el | 디베히어: dv | 슬로베니아어: sl |
| 아르메니아어: hy | 구자라트어: gu | 마라티어: mr | 소라니 쿠르드어: ckb |
| 바스크어: eu | 아이티 크리올어: ht | 네팔어: ne | 스페인어: es |
| 벵골어: bn | 히브리어: iw | 노르웨이어: no | 스웨덴어: sv |
| 보스니아어: bs | 힌디어: hi | 오리아어: or | 타갈로그어: tl |
| 불가리아어: bg | 힌디어(라틴 문자 표기): hi-Latn | 펀자브어: pa | 타밀어: ta |
| 미얀마어: my | 헝가리어: hu | 파슈토어: ps | 텔루구어: te |
| 크로아티아어: hr | 아이슬란드어: is | 페르시아어: fa | 태국어: th |
| 카탈루냐어: ca | 인도네시아어: in | 폴란드어: pl | 티베트어: bo |
| 체코어: cs | 이탈리아어: it | 포르투갈어: pt | 번체 중국어: zh-TW |
| 덴마크어: da | 일본어: ja | 루마니아어: ro | 터키어: tr |
| 네덜란드어: nl | 칸나다어: kn | 러시아어: ru | 우크라이나어: uk |
| 영어: en | 크메르어: km | 세르비아어: sr | 우르두어: ur |
| 에스토니아어: et | 한국어: ko | 간체 중국어: zh-CN | 위구르어: ug |
| 핀란드어: fi | 라오어: lo | 신디어: sd | 베트남어: vi |
| 프랑스어: fr | 라트비아어: lv | 싱할라어: si | 웨일스어: cy |
| 조지아어: ka | 리투아니아어: lt |
| place: | 지정된 위치 또는 X place ID로 태그된 게시물과 일치합니다(예시 참조). 여러 단어로 이루어진 장소명(“New York City”, “Palo Alto”)은 큰따옴표로 감싸야 합니다. 참고: X place ID를 얻는 방법은 공개 API 엔드포인트 GET geo/search를 확인하세요. 참고: 이 연산자는 리포스트에는 일치하지 않습니다. 리포스트의 장소 정보는 원본 게시물에 연결되기 때문입니다. 또한 인용 리포스트의 원본 게시물에 연결된 장소에도 일치하지 않습니다. |
| place_country: | 태그된 place에 연계된 국가 코드가 지정된 ISO 알파-2 문자 코드와 일치하는 게시물과 매칭됩니다. 유효한 ISO 코드는 여기에서 확인할 수 있습니다: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 참고: 이 연산자는 리포스트에는 일치하지 않습니다. 리포스트의 장소 정보는 원본 게시물에 연결되기 때문입니다. 또한 인용 리포스트의 원본 게시물에 연결된 장소에도 일치하지 않습니다. |
| point_radius:[lon lat radius] | 게시물에 존재할 경우 해당 게시물의 정확한 위치(x, y)에 대해, 그리고 X에서는 “Place” 지오 폴리곤에 대해 매칭되며, 해당 Place가 정의된 영역 내에 완전히 포함된 경우에 일치합니다. * 지원되는 반지름 단위는 마일(mi)과 킬로미터(km)입니다. * 반지름은 25mi 미만이어야 합니다. * 경도는 ±180 범위입니다. * 위도는 ±90 범위입니다. * 모든 좌표는 십진 도(degree)입니다. * 규칙 인수는 대괄호로 묶고, 공백으로 구분합니다. 참고: 이 연산자는 리포스트에는 일치하지 않습니다. 리포스트의 장소 정보는 원본 게시물에 연결되기 때문입니다. 또한 인용 리포스트의 원본 게시물에 연결된 장소에도 일치하지 않습니다. |
| bounding_box:[west_long south_lat east_long north_lat] | 사용 가능한 별칭: geo_bounding_box: 게시물에 존재할 경우 해당 게시물의 정확한 위치(경도, 위도)에 대해, 그리고 X에서는 “Place” 지오 폴리곤에 대해 매칭되며, 해당 Place가 정의된 영역 내에 완전히 포함된 경우에 일치합니다. * west_long과 south_lat는 경계 상자의 남서쪽 꼭짓점을 나타내며, west_long은 해당 지점의 경도, south_lat는 위도입니다. * east_long과 north_lat는 경계 상자의 북동쪽 꼭짓점을 나타내며, east_long은 해당 지점의 경도, north_lat는 위도입니다. * 경계 상자의 가로와 세로 길이는 25mi 미만이어야 합니다. * 경도는 ±180 범위입니다. * 위도는 ±90 범위입니다. * 모든 좌표는 십진 도(degree)입니다. * 규칙 인수는 대괄호로 묶고, 공백으로 구분합니다. 참고: 이 연산자는 리포스트에는 일치하지 않습니다. 리포스트의 장소 정보는 원본 게시물에 연결되기 때문입니다. 또한 인용 리포스트의 원본 게시물에 연결된 장소에도 일치하지 않습니다. |
| profile_country: | Profile Geo 보강의 “address” 객체 중 “countryCode” 필드와 정확히 일치합니다. ISO-3166-1-alpha-2 사양을 기반으로 한 표준화된 두 글자 국가 코드 집합을 사용합니다. 간결성을 위해 “address” 객체의 “country” 필드용 연산자 대신 이 연산자가 제공됩니다. |
| profile_region: | Profile Geo 보강의 “address” 객체 중 “region” 필드와 일치합니다. 정확한 전체 문자열 일치입니다. 백슬래시로 문자를 이스케이프할 필요가 없습니다. 예를 들어 슬래시가 포함된 값을 매칭하려면 “one/two”를 사용하고 “one/two”는 사용하지 마세요. 공백이나 구두점이 포함된 하위 문자열을 매칭하려면 큰따옴표를 사용하세요. |
| profile_locality: | Profile Geo 보강의 “address” 객체 중 “locality” 필드와 일치합니다. 정확한 전체 문자열 일치입니다. 백슬래시로 문자를 이스케이프할 필요가 없습니다. 예를 들어 슬래시가 포함된 값을 매칭하려면 “one/two”를 사용하고 “one/two”는 사용하지 마세요. 공백이나 구두점이 포함된 하위 문자열을 매칭하려면 큰따옴표를 사용하세요. |
참고: Search API 사용 시 is: 및 has: 연산자는 단독으로 사용할 수 없으며 반드시 다른 절과 함께 사용해야 합니다.예: @XDeevelopers has:links
| has:geo | X에서 제공하는 게시물별 지리 위치 데이터가 있는 게시물을 매칭합니다. 이는 “geo” 위도·경도 좌표이거나, 표시 이름, 지오 폴리곤 및 기타 필드를 포함하는 X “Place” 형태의 “location”일 수 있습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:profile_geo | 사용 가능한 별칭: has:derived_user_geo 실제 값과 관계없이 Profile Geo 메타데이터가 있는 게시물을 매칭합니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:links | 이 연산자는 메시지 본문에 링크가 포함된 게시물을 매칭합니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| is:retweet | 규칙과 일치하는 명시적 리트윗만 전달합니다. 또한 부정을 사용하여 규칙과 일치하는 리트윗을 제외하고 원본 콘텐츠만 전달할 수 있습니다. 이 연산자는 X의 리트윗 기능을 사용하는 실제 리트윗만 찾습니다. 인용 트윗과 X의 리트윗 기능을 사용하지 않은 수정 게시물은 이 연산자에 매칭되지 않습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| is:reply | 게시물이 답글인지 여부로 필터링하는 연산자입니다. 규칙과 일치하는 명시적 답글만 전달합니다. 또한 부정을 사용하여 규칙과 일치하는 답글을 제외할 수 있습니다. 이 연산자는 유료 프리미엄 및 엔터프라이즈 검색에서만 제공되며, 샌드박스 개발 환경에서는 제공되지 않습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| is:quote | 인용 트윗 또는 다른 게시물을 참조하는 게시물만 전달합니다. 이는 게시물 페이로드의 “is_quote_status”:true로 식별됩니다. 또한 부정을 사용하여 인용 트윗을 제외할 수 있습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| is:verified | 작성자가 X에 의해 “인증됨”인 게시물만 전달합니다. 또한 부정을 사용하여 작성자가 인증된 게시물을 제외할 수 있습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:mentions | 다른 X 사용자를 언급한 게시물을 매칭합니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:hashtags | 해시태그를 포함한 게시물을 매칭합니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:media | 사용 가능한 별칭: has:media_link X에서 분류한 미디어 URL을 포함하는 게시물을 매칭합니다. 예: pic.x.com. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:images | X에서 분류한 미디어 URL을 포함하는 게시물을 매칭합니다. 예: pic.x.com. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:videos | 사용 가능한 별칭: has:video_link X에 직접 업로드된 네이티브 X 동영상을 포함하는 게시물을 매칭합니다. Vine, Periscope에서 만든 동영상이나 다른 동영상 호스팅 사이트로의 링크가 있는 게시물은 매칭되지 않습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
| has:symbols | 캐시태그 기호(앞에 ‘tag. 이 연산자는 enterprise 검색 API에서만 사용할 수 있습니다. 참고: Search API를 사용할 때 이 연산자는 is: 또는 has:를 포함하지 않는 다른 연산자와 함께 사용해야 합니다. |
제품 개요
메타데이터 타임라인
to: 및 in_reply_to_status_id: PowerTrack 연산자에 의존하기보다 게시물 본문을 살펴봐야 합니다.
여기에 제공된 세부 정보는 전체 보관소 검색(수백 건의 검색을 기반)으로 생성되었습니다. 이 타임라인은 100% 완전하거나 정확하지 않을 수 있습니다. 사용 사례에 필수적인 다른 필터링/메타데이터의 ‘생성 시점’을 확인하신 경우 알려주시기 바랍니다.
기본이 되는 검색 인덱스는 재구성될 수 있습니다. 따라서 이 타임라인의 세부 정보는 변경될 수 있습니다.
2006
- 3월 26일 -
lang:. 검색 인덱스를 생성하는 과정에서 게시물 메타데이터가 소급 반영된 사례. - 7월 13일 -
has:mentions매칭 시작. - 10월 6일 -
has:symbols. 주식 종목을 논의할 때 쓰는 slang). - 10월 26일 -
has:links매칭 시작. - 11월 23일 -
has:hashtags매칭 시작.
2007
- 1월 30일 - 최초의 일급 @reply(in_reply_to_user_id),
reply_to_status_id:매칭 시작. - 8월 23일 - 주제와 대화를 정리하기 위한 일반적인 관례로 해시태그 등장. 실제 첫 사용은 일주일 후.
2009
- 5월 15일 -
is:retweet. 이 연산자는 공식 Retweets의 ‘베타’ 출시와 “Via @” 패턴부터 매칭되기 시작한다는 점에 유의하세요. 이 베타 기간 동안 Post 동사는 ‘post’이며, 원본 Post는 페이로드에 포함되지 않습니다. - 8월 13일 - “RT @” 패턴, 동사 ‘share’ 설정, 원본 Post를 담는 ‘retweet_status’ 속성과 함께 공식 Retweets의 최종 버전이 출시됩니다(이에 따라 JSON 페이로드 크기가 대략 두 배가 됩니다).
2010
- 3월 6일 -
has:geo,bounding_box:,point_radius:지리 연산자 매칭 시작. - 8월 28일 -
has:videos(2015년 2월까지 이 연산자는 youtube.com, vimeo.com, vivo.com 등 일부 동영상 호스팅 사이트 링크가 포함된 게시물과 매칭됩니다).
2011
- 7월 20일 -
has:media및has:images일치 항목 지원 시작. 네이티브 사진은 2010년 8월 9일 공식 발표됨.
2014
- 12월 3일 - (대략) 일부 확장 URL 메타데이터가 HTML 제목과 설명과 함께 페이로드에 포함되기 시작했습니다. 이 확장 메타데이터는 2016년 5월에 보다 완전한 형태로 도입되었습니다.
2015
- 2월 10일 -
has:videos가 X의 ‘네이티브’ 동영상과 일치합니다. - 2월 17일 -
has:profile_geo,profile_country:,profile_region:,profile_locality:프로필 지오 연산자의 일치가 시작됩니다. - 2월 17일 -
place_country:및place:게시물 지오 연산자의 일치가 시작됩니다.
2016
- 5월 1일 - 향상된 URL 메타데이터가 보다 폭넓게 제공되었으며, 2016년 8월 Gnip 2.0 출시의 일부로 공식 발표되었습니다. Search API에는 이 메타데이터와 관련된 연산자(Operator)가 없습니다.
2017
- 2월 22일 - 설문조사 메타데이터가 확장된 네이티브 형식으로 제공됩니다. 이 메타데이터와 관련된 오퍼레이터는 없습니다.
2022
- 9월 27일 - 이 날짜 이후에 생성된 모든 게시물 객체에는 편집된 게시물 메타데이터가 제공됩니다. 게시물 객체를 제공하는 모든 Enterprise 엔드포인트는 이 날짜부터 해당 메타데이터를 제공하도록 업데이트되었습니다. 제공되는 편집 메타데이터에는 edit_history 및 edit_controls 객체가 포함됩니다. 이러한 메타데이터는 2022년 9월 27일 이전에 생성된 게시물에는 반환되지 않습니다. 현재 이 메타데이터와 일치하는 Enterprise 오퍼레이터는 제공되지 않습니다. 편집 게시물 메타데이터에 대해 자세히 알아보려면 Edit Posts 기본 사항 페이지를 참조하세요.
2022
- 9월 29일 - 이 날짜 이후에 생성된 모든 게시물 객체에는 수정된 게시물 메타데이터가 제공됩니다. 게시물 객체를 제공하는 모든 Enterprise 엔드포인트는 이 날짜부터 이 메타데이터를 제공하도록 업데이트되었습니다. 제공되는 수정 메타데이터에는 edit_history 및 edit_controls 객체가 포함됩니다. 이 메타데이터는 2022년 9월 27일 이전에 생성된 게시물에는 반환되지 않습니다. 현재 이 메타데이터에 대응하는 Enterprise 연산자는 제공되지 않습니다. 수정된 게시물 메타데이터에 대해 자세히 알아보려면 Edit Posts 기본 사항 페이지를 확인하세요.
필터링 팁
- 일부 메타데이터에는 ‘born-on’ 날짜가 있어 필터가 거짓 음성을 발생시킬 수 있습니다. 이러한 검색에는 해당 기간 전체 또는 일부에 존재하지 않았던 메타데이터에 의존하는 연산자(Operator)가 포함됩니다. 예를 들어
has:images연산자로 게시물을 검색하면 2011년 7월 이전 기간에는 일치 결과가 없습니다. 이 연산자는 X 사용자 인터페이스를 통해 게시물에 첨부된 네이티브 사진과 일치하기 때문입니다. 사진 공유 게시물의 보다 완전한 데이터 세트를 얻으려면 2011년 7월 이전에는 사진 호스팅에 널리 쓰이던 URL에 일치하는 규칙 절을 포함해야 합니다. - 일부 메타데이터는 게시물이 X에 게시된 이후 시점의 메타데이터로 보강(백필)되었습니다.
- X 프로필
- 원본 또는 공유된 게시물
- 게시물 언어 분류
- 지리 정보가 참조된 게시물
- 공유 링크 미디어
X 프로필
원본 게시물과 리트윗
_is:retweet_ 연산자를 사용하면 리트윗을 포함하거나 제외할 수 있습니다. 이 연산자의 사용자는 2009년 8월 이전 데이터에 대해 리트윗 매칭(또는 비매칭)을 위한 두 가지 전략을 마련해야 합니다. 2009년 8월 이전에는 “@RT ” 패턴과의 일치를 확인하기 위해 정확한 구문 일치로 게시물 본문 자체를 검사해야 합니다(실제로 2009년 5월부터 8월 사이의 리트윗을 필터링하는 경우 “Via @” 패턴도 포함해야 합니다). 2009년 8월 이후 기간에는 is:retweet 연산자를 사용할 수 있습니다.
게시물 언어 분류
게시물의 지리적 참조
- 게시물 본문 내 지리적 언급. 게시물 본문에 포함된 지리적 언급을 기준으로 매칭하는 방법은 현지 지식에 의존하기 때문에 가장 까다로운 편이지만, 전체 게시물 아카이브에 적용할 수 있는 옵션입니다. 여기는 ‘golden gate’ 필터를 기반으로 샌프란시스코 지역에서 2006년에 지리적으로 참조된 매칭 예시입니다.
-
사용자가 지오태그한 게시물. 검색 API에서는 일부 Geo 연산자를 사용해 게시물을 매칭할 수 있는 기능이 2010년 3월에 도입되었고, 다른 일부는 2015년 2월에 추가되었습니다:
- 2010년 3월 6일:
has:geo,bounding_box:,point_radius: - 2015년 2월 17일:
place_country:,place:
- 2010년 3월 6일:
-
사용자가 설정한 계정 프로필 ‘home’ 위치. 프로필 Geo 연산자는 Historical PowerTrack과 Search API 모두에서 사용할 수 있습니다. Search API에서는 이 프로필 Geo 메타데이터가 2015년 2월부터 제공됩니다. 프로필 Geo 메타데이터가 제공되기 이전에 게시된 게시물의 경우, 정규화되지 않은 사용자 입력과 매칭하는 데 사용할 수 있는
bio_location:연산자가 제공됩니다.
- 2006년 10월 26일 -
has:links - 2011년 7월 20일 -
has:images및has:media - 2011년 8월 -
url:및 Expanded URLs 보강 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 보강을 기반으로 하는
url_title:및url_description:이 일반 제공(GA)으로 전환. 최초의 Enhanced URL 메타데이터는 2014년 12월에 나타나기 시작했습니다.
자주 묻는 질문(FAQ)
일반 검색 게시물 API 관련 질문
데이터 엔드포인트로 받은 게시물 수가 counts 엔드포인트에서 집계된 게시물 수와 일치하지 않습니다. 왜 그런가요?
데이터 엔드포인트로 받은 게시물 수가 counts 엔드포인트에서 집계된 게시물 수와 일치하지 않습니다. 왜 그런가요?
counts 엔드포인트가 제공하는 결과와 data 엔드포인트가 제공하는 결과에는 알려진 차이가 있습니다. counts 엔드포인트는 사전 컴플라이언스 단계(삭제된 게시물, 위치 정보 스크럽 등과 같은 사항을 반영하지 않음)를 기준으로 하므로 결과에 불일치가 발생할 수 있는 반면, data 엔드포인트는 전달 시점에 컴플라이언스를 준수하며 모든 컴플라이언스 이벤트를 반영합니다.
내 쿼리에 맞는 게시물을 받지 못했습니다. 왜 그런가요?
내 쿼리에 맞는 게시물을 받지 못했습니다. 왜 그런가요?
이런 일이 발생했을 수 있는 몇 가지 이유가 있습니다. 예를 들면 다음과 같습니다.
- 기대한 게시물이 보호된 계정에서 작성된 경우
- 데이터 엔드포인트가 모든 컴플라이언스 이벤트를 반영하므로(삭제된 게시물, 정제된 지오 정보 등은 응답에 포함되지 않습니다)
내 쿼리가 게시물과 일치했는데, 제가 부정한 키워드가 들어 있습니다. 왜 이런 일이 발생하나요?
내 쿼리가 게시물과 일치했는데, 제가 부정한 키워드가 들어 있습니다. 왜 이런 일이 발생하나요?
이는 프리미엄 규칙과 필터링을 잘못 사용했을 가능성이 큽니다. 문서를 여기에서 검토하고, 규칙 작성과 관련된 제한 사항을 정확히 이해했는지 확인하세요.
Search 게시물 API를 시작하는 데 사용할 수 있는 라이브러리가 있나요?
Search 게시물 API를 시작하는 데 사용할 수 있는 라이브러리가 있나요?
네, 다음을 포함합니다:
- Tweepy - 표준 검색/게시물 제품을 사용하는 데 적합함 (Python)
- X API - 표준 Search Post API를 사용하는 데 적합함 (Python)
- Search Posts Python 및 Search Posts Ruby - 엔터프라이즈(및 v2!) Search Post API에 활용하기 좋은 두 가지 도구
데이터 엔드포인트에 대한 요청에서 `maxResults`로 설정한 값보다 적은 수의 게시물을 받는 경우가 있나요?
데이터 엔드포인트에 대한 요청에서 `maxResults`로 설정한 값보다 적은 수의 게시물을 받는 경우가 있나요?
예. 데이터 엔드포인트는 지정한
maxResults에 도달하거나 30일이 지나면 페이지네이션됩니다.예를 들어, 특정 30일 기간에 게시물이 800개라면 전체 결과를 가져오려면 두 번 요청해야 합니다. 요청당 반환 가능한 게시물의 최대 개수는 500개(maxResults)이기 때문입니다. 또한 첫 번째 달에 게시물이 400개, 두 번째 달에 100개인 경우에도 전체 결과를 가져오려면 두 번 요청해야 합니다. 첫 번째 요청에서 지정한 maxResults보다 적은 게시물이 반환되더라도 페이지네이션은 30일이 지나면 수행됩니다.일치하는 게시물은 어떤 순서로 반환되나요?
일치하는 게시물은 어떤 순서로 반환되나요?
게시물은 최신순으로 반환됩니다. 예를 들어 첫 번째 페이지에는 쿼리와 일치하는 가장 최근 게시물이 표시되며, 페이지네이션은 결과의 게시 날짜가 처음 요청한
fromDate에 도달할 때까지 계속됩니다.게시물 편집이 내 사용량과 청구에 어떤 영향을 주나요?
게시물 편집이 내 사용량과 청구에 어떤 영향을 주나요?
청구에는 원본 게시물만 반영됩니다. 이후의 모든 수정 사항은 무시되며 전체 활동 수에 포함되지 않습니다.
EnterpriseEnterprise Search Post API의 가격에 대해 더 알아보고, 이 오퍼링을 신청하고 싶습니다. 어떻게 하면 되나요?
Enterprise Search Post API의 가격에 대해 더 알아보고, 이 오퍼링을 신청하고 싶습니다. 어떻게 하면 되나요?
당사의 엔터프라이즈 솔루션은 예측 가능한 가격으로 귀사의 요구에 맞춰 맞춤 제공됩니다. 자세한 내용은 여기에서 신청해 주세요.
내 사용 사례에 맞는 규칙 집합은 어떻게 만들 수 있나요?
내 사용 사례에 맞는 규칙 집합은 어떻게 만들 수 있나요?
이번 달 요청 한도(제한)을 초과했지만 더 많은 데이터에 접근하려면 어떻게 해야 하나요?
이번 달 요청 한도(제한)을 초과했지만 더 많은 데이터에 접근하려면 어떻게 해야 하나요?
이와 관련해 도움을 받으시려면 X의 계정 담당 매니저에게 연락해 주세요.
오류 문제 해결 가이드
- 각 엔드포인트에 맞는 매개변수를 사용하고 있는지 확인하세요(예:
buckets필드는 데이터 엔드포인트가 아니라 counts 엔드포인트에서만 사용할 수 있습니다). :product,:account_name,:label필드가 올바른지 다시 확인하세요.:label필드는 GNIP Console(엔터프라이즈 고객 전용)에서 확인할 수 있습니다.
API 레퍼런스
엔터프라이즈 검색 API
- 30일 검색 API - 지난 30일 내에 게시된 게시물을 제공합니다.
- 전체 보관함 검색 API - 2006년 3월 첫 게시물부터 시작해 2006년까지 거슬러 올라가는 게시물을 제공합니다.
- 게시물 데이터 및 집계 수치(counts) 요청 방법
- 인증
- 페이지 매김
- API 요청 매개변수 및 예시 요청
- API 응답 JSON 페이로드 및 예시 응답
- HTTP 응답 코드
메서드
https://gnip-api.x.com/search/입니다.
| 메서드 | 설명 |
|---|---|
| POST /search/:product/accounts/:account_name/:label | 지정된 PowerTrack 규칙과 일치하는 최근 30일간의 게시물을 조회합니다. |
| POST /search/:product/accounts/:account_name/:label/counts | 지정된 PowerTrack 규칙과 일치하는 최근 30일간의 게시물 수를 조회합니다. |
:product는 요청을 보내는 검색 엔드포인트를 나타내며,30day또는fullarchive입니다.:account_name은 console.gnip.com에 표시되는 계정과 연결된 이름(대소문자 구분)입니다.:label은 console.gnip.com에 표시되는 검색 엔드포인트와 연결된 레이블(대소문자 구분)입니다.
- 데이터 엔드포인트: https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod.json
- counts 엔드포인트: https://gnip-api.x.com/search/30day/accounts/TwitterDev/prod/counts.json
:product, :account_name, :label이 포함된 URL을 사용합니다. 예시를 사용하려면 URL을 본인의 정보로 업데이트하십시오.
인증
요청/응답 동작
fromDate와 toDate 매개변수를 사용하면 API가 지원하는 어떤 기간이든 요청할 수 있습니다. 30일 검색 API는 최근 31일의 트윗을 제공합니다(‘30일’ API라고 부르지만, 사용자가 한 달 전체를 요청할 수 있도록 31일을 제공합니다). 전체 아카이브 검색 API는 최초 트윗(2006년 3월 21일)까지 거슬러 올라가는 트윗을 제공합니다. 다만 단일 응답은 지정한 ‘maxResults’ 또는 31일 중 더 작은 값으로 제한됩니다. 일치하는 데이터 양이나 지정한 기간이 ‘maxResults’ 또는 31일을 초과하면, 남은 기간의 데이터를 페이지네이션하기 위해 사용해야 하는 ‘next’ 토큰을 받게 됩니다.
예를 들어 전체 아카이브 검색을 사용해 2017년 1월 1일부터 2017년 6월 30일까지 쿼리와 일치하는 모든 트윗을 받고자 한다고 가정해 봅시다. 요청에서 fromDate와 toDate 매개변수로 6개월 전체 기간을 지정합니다. 검색 API는 maxResults 매개변수(기본값 100)에 해당하는 수의 트윗이 담긴 첫 번째 ‘페이지’로 응답합니다. 더 많은 트윗이 있을 경우(대개 그렇습니다), API는 다음 ‘페이지’ 데이터를 요청할 수 있도록 하는 ‘next’ 토큰도 제공합니다. 이 과정은 API가 더 이상 ‘next’ 토큰을 반환하지 않을 때까지 반복됩니다. 자세한 내용은 다음 섹션을 참조하세요.
페이지네이션
데이터 페이지네이션
maxResults 파라미터의 기본값은 100이며 10~500 범위로 설정할 수 있습니다. 쿼리가 요청에 사용한 ‘maxResults’ 값보다 더 많은 게시물과 일치하면, 응답에는 ‘next’ 토큰(루트 수준 JSON 속성)이 포함됩니다. 이 ‘next’ 토큰은 후속 요청에서 해당 쿼리에 일치하는 다음 분량의 게시물(즉, 다음 ‘page’)을 가져오는 데 사용됩니다. ‘next’ 토큰은 해당 쿼리의 마지막 ‘page’ 결과에 도달해 더 이상 ‘next’ 토큰이 제공되지 않을 때까지 계속 제공됩니다.
다음 ‘page’의 데이터를 요청하려면, 사용했다면 query, toDate, fromDate 파라미터를 포함하여 원본과 완전히 동일한 쿼리를 보내고, 이전 응답에서 받은 값을 설정한 ‘next’ 요청 파라미터도 함께 포함해야 합니다. 이는 GET 또는 POST 요청 모두에서 사용할 수 있습니다. 단, GET 요청의 경우 ‘next’ 파라미터는 URL 인코딩해야 합니다.
이전 쿼리에서 받은 ‘next’ 요소를 계속 전달하여, 해당 쿼리가 포함하는 기간의 모든 게시물을 받을 때까지 진행할 수 있습니다. ‘next’ 요소가 포함되지 않은 응답을 받으면 마지막 페이지에 도달했음을 의미하며, 지정된 쿼리와 기간에 대해 추가 데이터는 더 이상 제공되지 않습니다.
counts 페이지네이션
추가 참고 사항
- 검색 요청에서 fromDate 또는 toDate를 사용하면 지정한 시간 범위 내의 결과만 받습니다. 시간 범위 내의 마지막 결과 묶음에 도달하면 ‘next’ 토큰이 제공되지 않습니다.
- ‘next’ 요소는 10~500 사이의 어떤 maxResults 값과도 함께 사용할 수 있습니다(기본값 100). maxResults는 각 응답에서 반환되는 트윗 수를 결정하지만, 최종적으로 모든 결과를 받는 것을 막지는 않습니다.
- ‘next’ 요소는 만료되지 않습니다. 동일한 ‘next’ 쿼리를 사용하는 여러 요청은 요청 시점과 관계없이 동일한 결과를 받습니다.
- ‘next’ 매개변수로 페이지를 이동할 때 쿼리 경계에서 중복이 발생할 수 있습니다. 애플리케이션은 이를 허용하도록 설계되어야 합니다.
데이터 엔드포인트
POST /search/:product/:label
엔드포인트 패턴:
데이터 요청 매개변수
| Parameters | Description | Required | Sample Value |
|---|---|---|---|
| query | 최대 2,048자까지의 하나의 PowerTrack 규칙과 동일합니다(긍정 및 부정 절의 수에는 제한 없음). 이 매개변수에는 모든 연산자를 포함한 PowerTrack 규칙의 모든 부분이 포함되어야 하며, 규칙의 일부를 쿼리의 다른 매개변수로 분리하면 안 됩니다. 참고: 모든 PowerTrack 연산자가 지원되는 것은 아닙니다. 지원되는 연산자는 여기에 나열되어 있습니다. | Yes | (snow OR cold OR blizzard) weather |
| tag | 태그를 사용해 규칙과 그 일치 데이터를 서로 다른 논리적 그룹으로 분리할 수 있습니다. 규칙 태그가 제공되면 해당 태그가 ‘matching_rules’ 속성에 포함됩니다. 클라이언트 측에서 원하는 매핑을 유지하기 위해 규칙별 UUID를 규칙 태그에 할당하는 것을 권장합니다. | No | 8HYG54ZGTU |
| fromDate | 트윗이 제공될 가장 오래된 UTC 타임스탬프(전체 아카이브 검색의 경우 2006년 3월 21일까지). 타임스탬프는 분 단위 정밀도를 가지며 포함적입니다(예: 12:00은 00분을 포함). 지정됨: toDate 매개변수 없이 fromDate만 사용하면, 지금(now())부터 fromDate까지 거슬러 올라가며 쿼리 결과를 제공합니다. 미지정: fromDate가 지정되지 않으면, API는 지금(now()) 또는 toDate(지정된 경우) 기준으로 과거 30일의 모든 결과를 제공합니다. fromDate와 toDate 매개변수 모두 사용하지 않으면, API는 요청 시점을 기준으로 과거로 거슬러 올라가며 가장 최근 30일의 모든 결과를 제공합니다. | No | 201207220000 |
| toDate | 트윗이 제공될 가장 최신 UTC 타임스탬프입니다. 타임스탬프는 분 단위 정밀도를 가지며 비포함적입니다(예: 11:59는 해당 시각의 59분을 포함하지 않음). 지정됨: fromDate 매개변수 없이 toDate만 사용하면, toDate 이전의 가장 최근 30일치 데이터를 제공합니다. 미지정: toDate가 지정되지 않으면, API는 지금(now())부터 fromDate까지 거슬러 올라가며 쿼리의 모든 결과를 제공합니다. fromDate와 toDate 매개변수 모두 사용하지 않으면, API는 요청 시점을 기준으로 과거로 거슬러 올라가며 전체 30일 인덱스의 모든 결과를 제공합니다. | No | 201208220000 |
| maxResults | 요청이 반환할 검색 결과의 최대 개수입니다. 10부터 시스템 한도(현재 500) 사이의 숫자여야 합니다. 기본적으로 요청 응답은 100개의 결과를 반환합니다. | No | 500 |
| next | 여기에 설명된 대로 다음 ‘페이지’의 결과를 가져오는 데 사용됩니다. 이 매개변수에 사용하는 값은 API 응답에서 직접 가져온 것이며 수정해서는 안 됩니다. | No | NTcxODIyMDMyODMwMjU1MTA0 |
추가 세부 정보
| 사용 가능 기간 | 30일: 최근 31일 전체 아카이브: 2006년 3월 21일 - 현재 |
| 쿼리 형식 | 최대 2,048자(긍정/부정 절의 개수에는 제한 없음)로 구성된 단일 PowerTrack 규칙과 동일합니다. 참고: 모든 PowerTrack 연산자가 지원되는 것은 아닙니다. 지원되는 연산자 목록은 Available operators를 참조하세요. |
| 요청 한도 | 파트너에게는 분 및 초 단위로 요청 한도가 적용됩니다. 분당 요청 한도는 계약에 명시된 대로 파트너별로 달라집니다. 다만, 이 분당 한도를 단일 버스트로 사용하는 것은 의도된 바가 아닙니다. 분당 요청 한도와 무관하게, 모든 파트너는 데이터 및/또는 counts에 대한 모든 요청을 합산하여 초당 최대 20건의 요청으로 제한됩니다. |
| 컴플라이언스 | Full-Archive Search API를 통해 전달되는 모든 데이터는 전달 시점에 준수 상태입니다. |
| 실시간 가용성 | 데이터는 X 플랫폼에서 생성된 후 30초 이내에 인덱스에 반영됩니다 |
예시 데이터 요청 및 응답
예시 POST 요청
- POST 요청의 매개변수는 아래와 같이 JSON 형식의 본문으로 전송됩니다.
- 조회하려는 PowerTrack 규칙의 모든 요소(예: 키워드, bounding_box: 같은 기타 연산자)는 ‘query’ 매개변수에 포함해야 합니다.
- 규칙의 일부를 쿼리 URL에서 별도의 매개변수로 분리하지 마세요.
GET 요청 예시
- GET 요청의 매개변수는 표준 URL 인코딩을 사용해 URL에 인코딩됩니다.
- 조회할 PowerTrack 규칙의 모든 구성 요소(예: 키워드, bounding_box: 같은 기타 연산자)는 ‘query’ 매개변수에 포함해야 합니다.
- 규칙의 일부를 쿼리 URL에서 별도의 매개변수로 분리하지 마세요.
예시 데이터 응답
Counts 엔드포인트
/search/:stream/counts
엔드포인트 패턴:
/search/fullarchive/accounts/:account_name/:label/counts.json
이 엔드포인트는 지정된 쿼리에 대한 counts(데이터 볼륨) 데이터를 반환합니다. 기간을 지정하지 않으면 시간 매개변수의 기본값은 최근 30일입니다. 데이터 볼륨은 일별, 시간별(기본), 또는 분 단위 중 하나로 타임스탬프가 있는 배열로 반환됩니다.
참고: 아래 설명된 매개변수를 URL에 인코딩하면, POST 대신 GET 요청으로도 동일한 기능을 수행할 수 있습니다.
Counts 요청 매개변수
| Parameters | Description | Required | Sample Value |
|---|---|---|---|
| query | 최대 2,048자의 하나의 PowerTrack 규칙과 동일합니다(긍정 및 부정 절의 개수에는 제한 없음). 이 매개변수에는 모든 연산자를 포함해 PowerTrack 규칙의 모든 부분이 포함되어야 하며, 규칙의 일부를 쿼리의 다른 매개변수로 분리해서는 안 됩니다. 참고: 모든 PowerTrack 연산자가 지원되는 것은 아닙니다. 지원되는 연산자 목록은 Available operators를 참조하세요. | Yes | (snow OR cold OR blizzard) weather |
| fromDate | 제공될 Tweet의 가장 오래된 UTC 타임스탬프(2006/03/21까지). 타임스탬프는 분 단위 정밀도이며 포함 범위입니다(예: 12:00은 00분을 포함). 지정됨: toDate 매개변수 없이 fromDate만 사용하는 경우, API는 지금부터 fromDate까지 거슬러 올라가며 쿼리에 대한 counts(데이터 볼륨) 데이터를 제공합니다. fromDate가 현재로부터 31일을 초과해 과거인 경우, 요청을 페이지네이션하기 위한 next 토큰을 받게 됩니다. 미지정: fromDate가 지정되지 않은 경우, API는 지금 또는 toDate(지정된 경우) 기준 이전 30일 동안의 counts(데이터 볼륨)를 제공합니다. fromDate와 toDate 매개변수를 모두 사용하지 않으면, API는 요청 시점부터 과거로 가장 최근 30일의 counts(데이터 볼륨)를 제공합니다. | No | 201207220000 |
| toDate | 제공될 Tweet의 최신 UTC 타임스탬프. 타임스탬프는 분 단위 정밀도이며 비포함 범위입니다(예: 11:59는 해당 시간의 59분을 포함하지 않음). 지정됨: fromDate 매개변수 없이 toDate만 사용하는 경우, toDate 기준 직전 30일 동안의 가장 최근 counts(데이터 볼륨)를 제공합니다. 미지정: toDate가 지정되지 않은 경우, API는 fromDate까지 거슬러 올라가며 쿼리에 대한 counts(데이터 볼륨)를 제공합니다. fromDate가 현재로부터 31일을 초과해 과거인 경우, 요청을 페이지네이션하기 위한 next 토큰을 받게 됩니다. fromDate와 toDate 매개변수를 모두 사용하지 않으면, API는 요청 시점부터 과거로 가장 최근 30일의 counts(데이터 볼륨)를 제공합니다. | No | 201208220000 |
| bucket | count 데이터가 제공될 시간 단위입니다. 요청한 기간 내에서 매일, 매시간 또는 매분 단위의 count 데이터를 반환할 수 있습니다. 기본적으로 시간별 counts가 제공됩니다. 옵션: ‘day’, ‘hour’, ‘minute’ | No | minute |
| next | HERE에 설명된 대로 결과의 다음 ‘페이지’를 가져오는 데 사용됩니다. 이 매개변수의 값은 API 응답에서 그대로 가져오며 수정해서는 안 됩니다. | No | NTcxODIyMDMyODMwMjU1MTA0 |
추가 세부정보
| 사용 가능 기간 | 30일: 최근 31일 전체 보관: 2006년 3월 21일 - 현재 |
| 쿼리 형식 | 최대 2,048자의 단일 PowerTrack 규칙과 동일합니다. 참고: 모든 PowerTrack 연산자가 지원되는 것은 아닙니다. 지원되는 연산자 목록은 사용 가능한 연산자를 참조하세요. |
| 요청 한도 | 파트너에게는 분 및 초 단위로 요청 한도가 적용됩니다. 분당 요청 한도는 계약에 명시된 대로 파트너별로 다릅니다. 다만 이러한 분당 한도는 단일 버스트로 사용하도록 설계되지 않았습니다. 분당 한도와 무관하게 모든 파트너는 데이터 및/또는 counts에 대한 모든 요청을 합산하여 초당 최대 20건의 요청으로 제한됩니다. |
| 집계 정확도 | 이 엔드포인트를 통해 제공되는 counts는 실제 발생한 Tweet 수를 반영하며, 이후의 컴플라이언스 이벤트(삭제, 위치 정보 정리)는 반영하지 않습니다. 집계에 포함된 일부 Tweet은 사용자 컴플라이언스 조치로 인해 데이터 엔드포인트에서 제공되지 않을 수 있습니다. |
예제 counts 요청 및 응답
예시 POST 요청
- 아래와 같이 POST 요청의 매개변수는 JSON 형식의 본문으로 전송됩니다.
- 조회하려는 PowerTrack 규칙의 모든 요소(예: 키워드, bounding_box:와 같은 기타 연산자)는 ‘query’ 매개변수에 포함해야 합니다.
- 규칙의 일부를 쿼리 URL의 별도 매개변수로 나누지 마세요.
예시 GET 요청
- GET 요청의 요청 매개변수는 표준 URL 인코딩을 사용해 URL에 인코딩됩니다.
- 조회 중인 PowerTrack 규칙의 모든 구성 요소(예: 키워드, bounding_box: 같은 기타 연산자)는 ‘query’ 매개변수에 포함해야 합니다.
- 쿼리 URL에서 규칙의 일부를 별도의 매개변수로 분리하지 마세요.
예시 counts 응답
HTTP 응답 코드
| 상태 | 텍스트 | 설명 |
|---|---|---|
| 200 | OK | 요청이 성공했습니다. JSON 응답은 다음과 비슷합니다: |
| 400 | Bad Request | 일반적으로 요청에 잘못된 JSON이 포함되었거나 JSON 페이로드가 전송되지 않은 경우 발생합니다. |
| 401 | Unauthorized | 잘못된 자격 증명으로 인해 HTTP 인증에 실패했습니다. 요청에서 자격 증명을 올바르게 사용하고 있는지 확인하려면 console.gnip.com에 로그인하세요. |
| 404 | Not Found | 요청이 전송된 URL에서 리소스를 찾을 수 없습니다. 잘못된 URL이 사용되었을 가능성이 큽니다. |
| 422 | Unprocessable Entity | 쿼리에 유효하지 않은 매개변수가 있어 반환됩니다(예: 잘못된 PowerTrack 규칙). |
| 429 | Unknown Code | 앱이 연결 요청 한도를 초과했습니다. 해당 JSON 메시지는 다음과 비슷합니다: |
| 500 | Internal Server Error | 서버 측 오류가 발생했습니다. 지수 백오프 패턴으로 다시 시도하세요. |
| 502 | Proxy Error | 서버 측 오류가 발생했습니다. 지수 백오프 패턴으로 다시 시도하세요. |
| 503 | Service Unavailable | 서버 측 오류가 발생했습니다. 지수 백오프 패턴으로 다시 시도하세요. |