메인 콘텐츠로 건너뛰기
API 응답에 한 번에 반환할 수 있는 것보다 더 많은 결과가 포함된 경우, 페이지네이션을 사용하여 모든 페이지의 데이터를 가져올 수 있습니다.

페이지네이션의 동작 방식

  1. 초기 요청을 max_results와 함께 보냅니다.
  2. 응답의 meta 객체에 next_token이 있는지 확인합니다.
  3. 있다면 해당 토큰을 pagination_token으로 사용해 다시 요청을 보냅니다.
  4. next_token이 더 이상 반환되지 않을 때까지 반복합니다.
# 초기 요청
curl "https://api.x.com/2/users/12345/tweets?max_results=100" \
  -H "Authorization: Bearer $TOKEN"

# 응답에 next_token 포함됨
# {"data": [...], "meta": {"next_token": "abc123", ...}}

# 다음 페이지
curl "https://api.x.com/2/users/12345/tweets?max_results=100&pagination_token=abc123" \
  -H "Authorization: Bearer $TOKEN"

페이지네이션 토큰

Token설명
next_token응답의 meta에 포함됩니다. 다음 페이지를 가져오는 데 사용합니다.
previous_token응답의 meta에 포함됩니다. 이전 페이지로 이동하는 데 사용합니다.
pagination_token요청 매개변수입니다. next_token 또는 previous_token 값으로 설정합니다.

응답 구조

{
  "data": [
    {"id": "1234", "text": "..."},
    {"id": "1235", "text": "..."}
  ],
  "meta": {
    "result_count": 100,
    "next_token": "7140w9gefhslx3",
    "previous_token": "77qp89slxjd"
  }
}
더 이상 반환할 결과가 없으면 next_token이 포함되지 않습니다:
{
  "data": [...],
  "meta": {
    "result_count": 42,
    "previous_token": "77qp89abc"
  }
}

페이지네이션 매개변수

매개변수설명기본값
max_results페이지당 결과 수엔드포인트별 상이
pagination_token이전 응답에서 제공된 토큰없음
각 엔드포인트의 API 참조 문서에서 max_results에 대한 구체적인 제한 값을 확인하세요.

예시: 모든 결과를 페이지네이션하기

import requests

def get_all_tweets(user_id, bearer_token):
    url = f"https://api.x.com/2/users/{user_id}/tweets"
    headers = {"Authorization": f"Bearer {bearer_token}"}
    params = {"max_results": 100}
    
    all_tweets = []
    
    while True:
        response = requests.get(url, headers=headers, params=params)
        data = response.json()
        
        if "data" in data:
            all_tweets.extend(data["data"])
        
        # 다음 페이지가 있는지 확인
        next_token = data.get("meta", {}).get("next_token")
        if not next_token:
            break
            
        params["pagination_token"] = next_token
    
    return all_tweets

모범 사례

max_results 사용

API 호출을 최소화하려면 허용되는 최대값인 max_results를 요청하세요.

부분 페이지 처리

마지막 페이지에는 max_results보다 적은 결과만 있을 수 있습니다.

토큰 저장

나중에 페이지네이션을 다시 시작해야 하는 경우를 대비해 next_token을 저장하세요.

페이지네이션으로 폴링하지 마세요

새 데이터를 가져올 때는 페이지네이션을 반복해서 실행하는 대신 since_id를 사용하세요.

결과 정렬

결과는 시간 역순(최신순) 으로 반환됩니다.
  • 첫 페이지의 첫 번째 결과 = 가장 최근 결과
  • 마지막 페이지의 마지막 결과 = 가장 오래된 결과
이 규칙은 페이지 내부와 페이지 간 모두에 적용됩니다.

참고 사항

  • 페이지네이션 토큰은 불투명한 문자열입니다. 파싱하거나 수정하지 마세요.
  • 토큰은 일정 시간이 지나면 만료될 수 있습니다.
  • max_results보다 적은 결과를 받은 경우에도 더 많은 결과가 존재할 수 있습니다. (next_token이 더 이상 제공되지 않을 때까지 계속 요청)
  • 자동 페이지네이션 처리를 위해 SDK를 사용하세요.

다음 단계

요청 한도

페이지네이션을 사용할 때 적용되는 요청 한도를 이해하세요.

SDKs

페이지네이션 기능이 내장된 라이브러리를 사용하세요.