FetchPI
로그인

문서

API 레퍼런스와 가이드: 인증, 오류 코드, 페이지네이션, 신선도, X 엔드포인트.

OpenAPI 1.0.0

빠른 시작

5분

5분 퀵스타트

제로에서 첫 구조화 응답까지 세 단계:

  1. 계정을 등록하세요 — 등록하면 기본 Workspace도 함께 생성됩니다. 회원가입
  2. 콘솔에서 API 키를 생성하세요. 시크릿은 한 번만 표시되므로 안전하게 보관하세요. API 키 만들기
  3. 키를 Bearer Token으로 사용해 아무 엔드포인트나 호출하세요:
curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev?freshness=default"

AI 에이전트

FetchPI는 AI 에이전트를 위해 만들어졌습니다. 카탈로그, 계약, 단계별 가이드는 모두 기계 판독 가능한 정적 파일이며 이 사이트와 같은 데이터에서 생성됩니다.

  • /llms.txt — 에이전트용 사이트 색인: 사용 가능한 플랫폼과 문서·가격 위치.
  • /SKILL.md — 에이전트 단계별 가이드: 카탈로그 → 스키마 → 호출 → 사용량, 과금 규칙 포함.
  • /openapi.yaml — 공개 OpenAPI 서브셋: 모든 /v1 데이터 경로와 카탈로그. 관리·콘솔 영역은 미포함.

에이전트 워크플로: 먼저 카탈로그에서 가용성과 가격을 확인하고, 호출 전 스키마를 읽고, 요청마다 API 키 하나를 보내고, 반복 조회는 freshness=cache를 우선하며, 답을 얻으면 페이지 넘김을 멈춥니다.

인증

모든 /v1/* 엔드포인트는 HTTP Bearer Token으로 전송되는 API 키로 인증합니다. 키는 fp_live_… / fp_test_… 접두사를 사용합니다.

Authorization: Bearer fp_live_…

시크릿은 비밀번호처럼 취급하세요. 생성 시 한 번만 표시됩니다. 유출이 의심되면 키를 폐기하고 새로 만드세요.

오류 코드

2xx가 아닌 모든 응답은 동일한 엔벨로프를 사용합니다. 안정적인 기계 판독 가능 코드를 가진 error 객체와, 지원팀 문의 시 인용할 request_id가 포함됩니다.

{
  "error": {
    "code": "NOT_FOUND",
    "message": "API key not found."
  },
  "request_id": "req_01HTXQ8Z9HTQ"
}
코드HTTP 상태설명주요 발생 상황
UNAUTHENTICATED401API 키/세션이 없거나 유효하지 않습니다.데이터 API에 유효한 API 키가 없거나, 콘솔 세션이 없거나 만료되었습니다.
FORBIDDEN403인증되었지만 이 키에는 해당 기능 사용 권한이 없습니다.키 ACL이 해당 기능을 허용하지 않거나, RBAC가 작업을 거부했거나, 워크스페이스 크레딧이 동결되었습니다(CREDITS_FROZEN).
NOT_FOUND404대상 리소스가 존재하지 않거나 표시되지 않습니다.리소스가 존재하지 않거나 이 워크스페이스에 표시되지 않습니다(API 키, 데이터셋, 주문 번호 등).
DATA_NOT_FOUND404사용 가능한 데이터가 없습니다 — 예: cache 모드에서 캐시된 엔티티가 없는 경우.cache 모드에서 캐시된 데이터가 없거나 플랫폼 사용자를 알 수 없습니다.
METHOD_NOT_ALLOWED—이 경로는 해당 HTTP 메서드를 지원하지 않습니다.기존 경로에 지원되지 않는 HTTP 메서드를 사용했습니다(예: GET 전용 엔드포인트에 POST).
VALIDATION400요청 파라미터 검증에 실패했습니다. error.details.fields를 참고하세요.요청 파라미터 검증에 실패했습니다: limit 범위 초과, 잘못된 cursor, ID 형식 오류 등. error.details.fields를 참고하세요.
CONFLICT409상태 충돌 — 예: 리소스 중복 또는 멱등 키 재사용.현재 상태와 충돌합니다. 예: 리소스 중복 또는 멱등 키 재사용.
RATE_LIMIT_EXCEEDED429요청이 너무 많습니다. 모든 처리율 제한 게이트에 통일된 429 코드입니다(details.scope가 게이트를 나타냄). Retry-After 이후 재시도하세요.요청 제한 게이트 중 하나에 거부되었습니다: 키 분 윈도우, 워크스페이스 시간 윈도우, 키 추가 시간 상한 또는 RPS 버킷(details.scope가 게이트를 나타냄). Retry-After 이후 재시도하세요.
RATE_LIMITER_UNAVAILABLE503레이트 리밋 백엔드를 일시적으로 사용할 수 없습니다. 요청은 거부되었지만 쿼터는 소모되지 않았습니다. Retry-After에 따라 나중에 다시 시도하세요.공유 요청 제한 저장소(Redis)가 일시적으로 사용 불가합니다. fail-closed로 거부되며 쿼터를 소모하지 않습니다.
REGISTRATION_DISABLED403직접 가입은 종료되었습니다 — Google 또는 GitHub 로그인을 이용하세요.이 배포에서는 직접 가입이 종료되었습니다. Google/GitHub 로그인을 이용하세요.
OAUTH_PROVIDER_UNAVAILABLE404이 로그인 공급자는 현재 사용할 수 없습니다. 다른 공급자를 시도하세요.이 로그인 공급자는 배포에 구성되지 않았거나 일시적으로 사용할 수 없습니다.
PASSWORD_CHANGE_REQUIRED—비밀번호가 운영자에 의해 초기화되었습니다. 계속하려면 비밀번호를 변경하세요.운영자가 비밀번호를 재설정했습니다. 변경할 때까지 세션을 계속할 수 없습니다.
INSUFFICIENT_CREDITS402크레딧이 부족합니다. 충전 후 다시 시도해 주세요.워크스페이스 크레딧 잔액이 요청 가격보다 적습니다. details에 필요/보유 크레딧이 담깁니다.
CREDITS_FROZEN403이 워크스페이스의 크레딧은 동결되어 있습니다. 충전은 가능하지만 해제 전까지 데이터 API 요청은 거부됩니다.결제 롤백(딥 리오그)으로 크레딧이 동결되었습니다: 충전은 가능하지만 데이터 API 요청은 거부됩니다.
NOT_IMPLEMENTED501예약된 기능이지만 V1에서는 구현되지 않았습니다.해당 기능은 예약되어 있지만 V1에서는 구현되지 않았습니다.
UPSTREAM_ERROR502사용 가능한 모든 업스트림 데이터 경로가 실패했습니다. 이 요청은 과금되지 않습니다.사용 가능한 모든 업스트림 데이터 경로가 실패했습니다. 이 요청은 과금되지 않습니다.
INTERNALdefault예기치 않은 서버 오류입니다. 보고 시 request_id를 알려주세요.예기치 않은 서버 오류입니다. 보고 시 request_id를 알려주세요.
PAYMENT_AMOUNT_UNAVAILABLE402요청한 충전 금액의 슬롯이 모두 찼습니다. 다른 금액을 선택하거나 나중에 다시 시도하세요.요청한 충전 금액의 슬롯이 모두 찼습니다. 다른 금액을 선택하거나 나중에 다시 시도하세요.
PAYMENT_NETWORK_DISABLED400선택한 네트워크/자산은 현재 주문을 받고 있지 않습니다.선택한 네트워크/자산은 현재 충전 주문을 받지 않습니다.
PAYMENT_ORDER_EXPIRED—결제 주문이 결제 기간을 지나 더 이상 결제할 수 없습니다. 새 주문을 생성하세요.주문이 30분 결제 기간을 지나 더 이상 결제할 수 없습니다. 새 주문을 생성하세요.
PAYMENT_PENDING_LIMIT409워크스페이스의 대기 중 결제 주문이 상한에 도달했습니다. 기존 주문을 완료하거나 만료를 기다리세요.대기 중인 주문 수가 상한에 도달했습니다. 완료하거나 만료를 기다려 주세요.
PAYMENT_DUPLICATE_RATE409이 멱등 키는 다른 주문 조건으로 이미 사용되었습니다. 원래 주문을 사용하거나 새 멱등 키를 지정하세요.멱등 키가 다른 주문 조건으로 사용되었습니다. 원래 주문을 재사용하거나 새 키를 사용하세요.
PAYMENT_RATE_STALE409이 통화의 시세가 오래되어 충전 주문이 일시적으로 거부되었습니다. 잠시 후 다시 시도해 주세요.환율 데이터가 오래되어 새 충전 주문이 일시적으로 거부됩니다. 나중에 다시 시도하세요.
DATASET_NOT_AVAILABLE409이 데이터셋은 현재 주문을 받을 수 없습니다——수집 중이거나 일시 중지(컴플라이언스) 상태입니다.이 데이터셋은 수집 중이거나 일시 중지(컴플라이언스) 상태로 주문을 받지 않습니다.
DATASET_DUPLICATE_ORDER409이 멱등 키는 다른 데이터셋 주문에 이미 사용되었습니다. 원래 주문을 재사용하거나 새 키를 지정하세요.멱등 키가 다른 데이터셋 주문으로 사용되었습니다. 원래 주문을 재사용하거나 새 키를 사용하세요.
PAYMENT_PROVIDER_DISABLED400이 결제 프로바이더는 비활성화되었거나 구성되지 않았습니다.결제 공급자가 비활성화되었거나 구성되지 않았습니다.
CUSTOM_REQUEST_LIMIT_EXCEEDED403맞춤 서비스 요청 한도에 도달했습니다. 자연월별 진행 중인 맞춤 데이터 요청은 최대 5건까지입니다. 다음 달에 다시 시도해 주세요.맞춤 서비스 월간 한도 초과——자연월 기준 진행 중인 맞춤 데이터 요청이 5건을 초과했습니다(업무 할당량이며 429 Rate Limit이 아닙니다).
SITE_BUILD_NOT_CONFIGURED—사이트 재빌드 웹훅이 구성되어 있지 않습니다.관리 콘솔에서 사이트 재빌드를 요청했지만 서버에 재빌드 웹훅이 구성되어 있지 않습니다.

페이지네이션

목록 엔드포인트는 커서 페이지네이션을 사용합니다. limit(1–100, 기본 20)과 cursor를 전달하면, 응답의 next_cursor가 다음 페이지를 가리킵니다.

GET /v1/x/users/newdev/posts?limit=20&cursor=eyJpZCI6MTAwfQ

목록이 끝나면 next_cursor는 null(또는 없음)입니다. 커서는 불투명(opaque)합니다 — 파싱하거나 데이터 소스 변경 후에 의존하지 마세요.

신선도

모든 데이터 엔드포인트는 freshness(cache | default | live)와 max_age(초)를 받습니다. freshness는 max_age보다, max_age는 플랫폼 TTL보다 우선하며 기본값은 default입니다.

freshness=cache

업스트림에 절대 접근하지 않습니다. 캐시된 데이터가 없으면 404 DATA_NOT_FOUND를 반환합니다.

freshness=default

플랫폼이 TTL과 소스 정책에 따라 결정합니다 — 캐시, 저장 또는 새로 획득한 데이터.

freshness=live

새로 가져오기를 요청하며 추가 비용이 발생할 수 있습니다(라이브 배율). 실패 시 502 UPSTREAM_ERROR를 반환합니다 — 가짜 최신 데이터는 절대 반환하지 않습니다.

모든 데이터 응답은 meta.freshness에 실제 동작(유효 모드, 데이터 나이, 제공 계층)을 보고합니다. 아래 '응답 메타데이터'를 참고하세요.

Freshness 3가지 전략 자세히 — 모드별 과금과 지연 시간 →

요청 제한

요청은 API 키(및 Workspace) 단위로 제한됩니다. 한도를 초과하면 초 단위의 Retry-After 헤더와 함께 429 RATE_LIMITED가 반환됩니다.

키별 요청 한도와 월간 소비 한도는 콘솔에서 각 키에 대해 설정할 수 있습니다.

응답 메타데이터

모든 /v1/* 성공 응답에는 meta.request_id와 함께 신선도 및 과금 메타데이터가 포함됩니다:

필드타입필수설명
modecache | default | live필수Effective mode after merging param > max_age > source policy (D-004).
age_secondsinteger | null선택Age of served data; null when unknown.
source_layercache | db | upstream필수Which layer served the response (PRD §10).
staleboolean선택True when stale data was served under stale_if_error / SWR (D-004).
billing.amount_creditsinteger필수Micro-USD (1e-6 USD) actually charged for this request.
billing.cache_hitboolean필수—

필드 비고는 계약 영문 원문으로 표시됩니다.

API 엔드포인트

28개 플랫폼 전체의 176개 문서화된 엔드포인트(파라미터, 응답, 샘플 페이로드 포함, 플랫폼별 그룹화). 정규화 스키마는 각 제품 페이지에서 확인할 수 있습니다.

GET/v1/x/users/{username}x.profile

X 프로필

파라미터위치필수타입설명
usernamepath필수stringX 핸들(맨 앞 @ 제외).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200요청한 사용자의 정규화된 프로필입니다.

404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev"

응답 예제

{
  "data": {
    "id": "2244994945",
    "platform": "x",
    "type": "profile",
    "username": "newdev",
    "display_name": "New Dev",
    "description": "Building data APIs.",
    "url": "https://x.com/newdev",
    "profile_image_url": "https://cdn.example.com/avatar/newdev.jpg",
    "banner_image_url": null,
    "location": "Berlin",
    "verified": false,
    "created_at": "2019-04-01T10:15:00Z",
    "metrics": {
      "followers": 1204,
      "following": 312,
      "posts": 870,
      "likes": 15200
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 120,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/x/users/{username}/postsx.user_posts

X 사용자 게시물

파라미터위치필수타입설명
usernamepath필수stringX 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 사용자의 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "1842951234567890123",
      "platform": "x",
      "type": "post",
      "author": {
        "id": "2244994945",
        "username": "newdev",
        "display_name": "New Dev",
        "verified": false
      },
      "text": "One API for internet data.",
      "lang": "en",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 128,
        "reposts": 12,
        "replies": 4,
        "quotes": 1,
        "views": 5230
      },
      "in_reply_to": null,
      "attachments": [],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "1842909876543210987",
      "platform": "x",
      "type": "post",
      "author": {
        "id": "2244994945",
        "username": "newdev",
        "display_name": "New Dev",
        "verified": false
      },
      "text": "Freshness modes explained.",
      "lang": "en",
      "created_at": "2026-09-16T08:00:00Z",
      "metrics": {
        "likes": 64,
        "reposts": 3,
        "replies": 1,
        "quotes": 0,
        "views": 1200
      },
      "in_reply_to": null,
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/p/1.jpg",
          "width": 1024,
          "height": 512
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "eyJpZCI6IjE4MjkwMDAwMDAwMDAwMDAwIn0",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/x/posts/{id}x.post

X 게시물 상세

파라미터위치필수타입설명
idpath필수stringX 게시물 id(플랫폼 네이티브 숫자 문자열).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 게시물입니다.

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "1842951234567890123",
    "platform": "x",
    "type": "post",
    "author": {
      "id": "2244994945",
      "username": "newdev",
      "display_name": "New Dev",
      "verified": false
    },
    "text": "One API for internet data.",
    "lang": "en",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "likes": 128,
      "reposts": 12,
      "replies": 4,
      "quotes": 1,
      "views": 5230
    },
    "in_reply_to": null,
    "attachments": [],
    "fetched_at": "2026-09-18T07:30:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 3600,
      "source_layer": "cache",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": true
    }
  }
}
GET/v1/x/posts/{id}/commentsx.comments

X 게시물 댓글

파라미터위치필수타입설명
idpath필수stringX 게시물 id(플랫폼 네이티브 숫자 문자열).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 게시물의 정규화된 댓글을 페이지 단위로 반환합니다.

404 — 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "1842951999999999999",
      "platform": "x",
      "type": "comment",
      "post_id": "1842951234567890123",
      "author": {
        "id": "1122334455",
        "username": "curiouscat",
        "display_name": "Curious Cat",
        "verified": false
      },
      "text": "Great post!",
      "created_at": "2026-09-17T13:00:00Z",
      "metrics": {
        "likes": 3
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 600,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/x/search/postsx.search_posts

X 게시물 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200검색어와 일치하는 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "1841001111111111111",
      "platform": "x",
      "type": "post",
      "author": {
        "id": "5566778899",
        "username": "datafan",
        "display_name": "Data Fan",
        "verified": true
      },
      "text": "fetchpi launch day!",
      "lang": "en",
      "created_at": "2026-09-15T10:00:00Z",
      "metrics": {
        "likes": 9,
        "reposts": 2,
        "replies": 0,
        "quotes": 0,
        "views": 340
      },
      "in_reply_to": null,
      "attachments": [],
      "fetched_at": "2026-09-18T09:05:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "live",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/x/users/{username}/followersx.user_followers

팔로워 목록

파라미터위치필수타입설명
usernamepath필수stringX 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "2244994945",
      "platform": "x",
      "type": "profile",
      "username": "newdev",
      "display_name": "New Dev",
      "description": "Building data APIs.",
      "url": "https://x.com/newdev",
      "profile_image_url": "https://cdn.example.com/avatar/newdev.jpg",
      "banner_image_url": null,
      "location": "Berlin",
      "verified": false,
      "created_at": "2019-04-01T10:15:00Z",
      "metrics": {
        "followers": 1204,
        "following": 312,
        "posts": 870,
        "likes": 15200
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/x/users/{username}/followingx.user_following

팔로잉 목록

파라미터위치필수타입설명
usernamepath필수stringX 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "2244994945",
      "platform": "x",
      "type": "profile",
      "username": "newdev",
      "display_name": "New Dev",
      "description": "Building data APIs.",
      "url": "https://x.com/newdev",
      "profile_image_url": "https://cdn.example.com/avatar/newdev.jpg",
      "banner_image_url": null,
      "location": "Berlin",
      "verified": false,
      "created_at": "2019-04-01T10:15:00Z",
      "metrics": {
        "followers": 1204,
        "following": 312,
        "posts": 870,
        "likes": 15200
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/x/users/{username}/repliesx.user_replies

사용자 답글 목록

파라미터위치필수타입설명
usernamepath필수stringX 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev/replies"

응답 예제

{
  "data": [
    {
      "id": "1842951234567890123",
      "platform": "x",
      "type": "post",
      "author": {
        "id": "2244994945",
        "username": "newdev",
        "display_name": "New Dev",
        "verified": false
      },
      "text": "One API for internet data.",
      "lang": "en",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 128,
        "reposts": 12,
        "replies": 4,
        "quotes": 1,
        "views": 5230
      },
      "in_reply_to": null,
      "attachments": [],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/x/users/{username}/mediax.user_media

사용자 미디어 목록

파라미터위치필수타입설명
usernamepath필수stringX 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/users/newdev/media"

응답 예제

{
  "data": [
    {
      "id": "1842951234567890123",
      "platform": "x",
      "type": "post",
      "author": {
        "id": "2244994945",
        "username": "newdev",
        "display_name": "New Dev",
        "verified": false
      },
      "text": "One API for internet data.",
      "lang": "en",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 128,
        "reposts": 12,
        "replies": 4,
        "quotes": 1,
        "views": 5230
      },
      "in_reply_to": null,
      "attachments": [],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/x/trendsx.trends

트렌드 조회

파라미터위치필수타입설명
qquery선택string트렌드의 국가(선택).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/x/trends?q=fetchpi"

응답 예제

{
  "data": {
    "platform": "x",
    "type": "trends",
    "country": "united states",
    "trends": [
      {
        "name": "#FetchPI",
        "post_count": 52341
      },
      {
        "name": "Normalized Entities",
        "post_count": 8800,
        "url": "https://x.com/search?q=normalized"
      }
    ],
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/users/{username}tiktok.profile

TikTok 프로필

파라미터위치필수타입설명
usernamepath필수stringTikTok uniqueId 핸들(맨 앞 @ 제외).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200요청한 사용자의 정규화된 프로필입니다.

404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/newdev"

응답 예제

{
  "data": {
    "id": "7004994945112",
    "platform": "tiktok",
    "type": "profile",
    "username": "creatordev",
    "display_name": "Creator Dev",
    "description": "Short videos about data APIs.",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
    "verified": true,
    "is_private": false,
    "created_at": "2017-10-01T00:00:00Z",
    "metrics": {
      "followers": 88230,
      "following": 412,
      "posts": 356,
      "likes": 2140000
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 120,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/users/{username}/poststiktok.user_posts

TikTok 사용자 게시물 목록

파라미터위치필수타입설명
usernamepath필수stringTikTok uniqueId 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 사용자의 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "7410886000000000001",
      "platform": "tiktok",
      "type": "post",
      "author": {
        "id": "7004994945112",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "One API for every platform.",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 864,
        "comments": 42,
        "shares": 87,
        "collects": 310,
        "views": 154203
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover.jpeg",
          "duration_ms": 34567
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "7410886000000000002",
      "platform": "tiktok",
      "type": "post",
      "author": {
        "id": "7004994945112",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "Photo dump from launch week.",
      "created_at": "2026-09-16T08:00:00Z",
      "metrics": {
        "likes": 412,
        "comments": 18,
        "shares": 9,
        "collects": 77,
        "views": 52100
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/p/1.jpeg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiIxNzU4MzI2NDAwIn0",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/posts/{id}tiktok.post

TikTok 동영상 상세

파라미터위치필수타입설명
idpath필수stringTikTok 동영상 id(플랫폼 네이티브 숫자 문자열).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 게시물입니다.

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7410886000000000001",
    "platform": "tiktok",
    "type": "post",
    "author": {
      "id": "7004994945112",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "verified": true
    },
    "text": "One API for every platform.",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "likes": 864,
      "comments": 42,
      "shares": 87,
      "collects": 310,
      "views": 154203
    },
    "attachments": [
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/cover.jpeg",
        "duration_ms": 34567
      }
    ],
    "fetched_at": "2026-09-18T07:30:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 3600,
      "source_layer": "cache",
      "stale": false
    },
    "billing": {
      "amount_credits": 0,
      "cache_hit": true
    }
  }
}
GET/v1/tiktok/posts/{id}/commentstiktok.comments

TikTok 동영상 댓글

파라미터위치필수타입설명
idpath필수stringTikTok 동영상 id(플랫폼 네이티브 숫자 문자열).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 게시물의 정규화된 댓글을 페이지 단위로 반환합니다.

404 — 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "7411111111000000001",
      "platform": "tiktok",
      "type": "comment",
      "post_id": "7410886000000000001",
      "author": {
        "id": "3311223344",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:00:00Z",
      "metrics": {
        "likes": 12,
        "replies": 2
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 600,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/search/poststiktok.search_posts

TikTok 동영상 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200검색어와 일치하는 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "7410999000000000001",
      "platform": "tiktok",
      "type": "post",
      "author": {
        "id": "5566778899001",
        "username": "datafan",
        "display_name": "Data Fan",
        "verified": true
      },
      "text": "normalized entities for every feed!",
      "created_at": "2026-09-15T10:00:00Z",
      "metrics": {
        "likes": 91,
        "comments": 3,
        "shares": 12,
        "collects": 24,
        "views": 40320
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/s1.jpeg",
          "duration_ms": 21000
        }
      ],
      "fetched_at": "2026-09-18T09:05:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "live",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/posts/{id}/comments/{comment_id}/repliestiktok.comment_replies

댓글 답글 목록

파라미터위치필수타입설명
idpath필수stringTikTok 동영상 id(플랫폼 네이티브 숫자 문자열).
comment_idpath필수string답글을 나열할 부모 댓글 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "7411111111000000001",
      "platform": "tiktok",
      "type": "comment",
      "post_id": "7410886000000000001",
      "author": {
        "id": "3311223344",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:00:00Z",
      "metrics": {
        "likes": 12,
        "replies": 2
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/users/{username}/followerstiktok.user_followers

팔로워 목록

파라미터위치필수타입설명
usernamepath필수stringTikTok uniqueId 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "7004994945112",
      "platform": "tiktok",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Short videos about data APIs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": "2017-10-01T00:00:00Z",
      "metrics": {
        "followers": 88230,
        "following": 412,
        "posts": 356,
        "likes": 2140000
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/users/{username}/followingtiktok.user_following

팔로잉 목록

파라미터위치필수타입설명
usernamepath필수stringTikTok uniqueId 핸들(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "7004994945112",
      "platform": "tiktok",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Short videos about data APIs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": "2017-10-01T00:00:00Z",
      "metrics": {
        "followers": 88230,
        "following": 412,
        "posts": 356,
        "likes": 2140000
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/search/userstiktok.search_users

사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/search/users?q=fetchpi"

응답 예제

{
  "query": "data api",
  "data": [
    {
      "id": "7004994945112",
      "platform": "tiktok",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Short videos about data APIs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": "2017-10-01T00:00:00Z",
      "metrics": {
        "followers": 88230,
        "following": 412,
        "posts": 356,
        "likes": 2140000
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/hashtags/{tag}tiktok.hashtag

해시태그 조회

파라미터위치필수타입설명
tagpath필수stringTikTok 해시태그 이름(# 제외). 게시물 목록에서는 upstream 챌린지 id를 그대로 전달합니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/hashtags/trending"

응답 예제

{
  "data": {
    "id": "1600000000000000001",
    "platform": "tiktok",
    "type": "hashtag",
    "name": "fetchpi",
    "description": "One API for every platform feed.",
    "cover_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/hashtag/fetchpi.jpeg",
    "metrics": {
      "views": 4820000000
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/hashtags/{tag}/poststiktok.hashtag_posts

해시태그 동영상 목록

파라미터위치필수타입설명
tagpath필수stringTikTok 해시태그 이름(# 제외). 게시물 목록에서는 upstream 챌린지 id를 그대로 전달합니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/hashtags/trending/posts"

응답 예제

{
  "data": [
    {
      "id": "7410886000000000001",
      "platform": "tiktok",
      "type": "post",
      "author": {
        "id": "7004994945112",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "One API for every platform.",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 864,
        "comments": 42,
        "shares": 87,
        "collects": 310,
        "views": 154203
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover.jpeg",
          "duration_ms": 34567
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/musics/{id}tiktok.music

음악 조회

파라미터위치필수타입설명
idpath필수stringTikTok 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id, /download는 동영상 id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/musics/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7416880000000000001",
    "platform": "tiktok",
    "type": "music",
    "title": "Sim Song (prod. Creator Dev)",
    "author_name": "Creator Dev",
    "duration_ms": 34567,
    "cover_image_url": "https://p16-sign-sg.tiktokcdn.com/aweme/music/7416880000000000001.jpeg",
    "metrics": {
      "videos": 128000
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/live/{id}tiktok.live_room

라이브 룸 조회

파라미터위치필수타입설명
idpath필수stringTikTok 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id, /download는 동영상 id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/live/1842951234567890123"

응답 예제

{
  "data": {
    "id": "8800000000000000001",
    "platform": "tiktok",
    "type": "live_room",
    "title": "Live: normalized entities Q&A",
    "username": "creatordev",
    "display_name": "Creator Dev",
    "status": "LIVE",
    "viewer_count": 2345,
    "started_at": "2026-09-20T00:00:00Z",
    "cover_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/live/8800000000000000001.jpeg",
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/search/livetiktok.live_search

라이브 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/search/live?q=fetchpi"

응답 예제

{
  "query": "data talk",
  "data": [
    {
      "id": "8800000000000000001",
      "platform": "tiktok",
      "type": "live_room",
      "title": "Live: normalized entities Q&A",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "status": "LIVE",
      "viewer_count": 2345,
      "started_at": "2026-09-20T00:00:00Z",
      "cover_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/live/8800000000000000001.jpeg",
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/homefeedtiktok.homefeed

홈 피드

파라미터위치필수타입설명
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/homefeed"

응답 예제

{
  "data": [
    {
      "id": "7410886000000000001",
      "platform": "tiktok",
      "type": "post",
      "author": {
        "id": "7004994945112",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "One API for every platform.",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 864,
        "comments": 42,
        "shares": 87,
        "collects": 310,
        "views": 154203
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover.jpeg",
          "duration_ms": 34567
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/tiktok/download/{id}tiktok.download

다운로드 해석

파라미터위치필수타입설명
idpath필수stringTikTok 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id, /download는 동영상 id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/tiktok/download/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7412050000000000001",
    "platform": "tiktok",
    "type": "download",
    "play_url": "https://v16-webapp.tiktok.com/aweme/v1/play/?video_id=7412050000000000001&no-watermark=1",
    "preview_image_url": "https://p19-sign-sg.tiktokcdn.com/aweme/cover/7412050000000000001.jpeg",
    "duration_ms": 34567,
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/ig/users/{username}ig.profile

Instagram 프로필

파라미터위치필수타입설명
usernamepath필수stringInstagram 사용자 이름(맨 앞 @ 제외).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200요청한 사용자의 정규화된 프로필입니다.

404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/users/newdev"

응답 예제

{
  "data": {
    "id": "1295448945",
    "platform": "instagram",
    "type": "profile",
    "username": "creatordev",
    "display_name": "Creator Dev",
    "description": "Photo dumps and API graphs.",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
    "verified": true,
    "is_private": false,
    "created_at": null,
    "metrics": {
      "followers": 51230,
      "following": 310,
      "posts": 862
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 120,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/ig/users/{username}/postsig.user_posts

Instagram 사용자 게시물 목록

파라미터위치필수타입설명
usernamepath필수stringInstagram 사용자 이름(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 사용자의 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "CwxOne00001",
      "platform": "instagram",
      "type": "post",
      "author": {
        "id": "1295448945",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "Carousel dump",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 1204,
        "comments": 36,
        "views": 0
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/1.jpg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/2.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "CwxTwo00002",
      "platform": "instagram",
      "type": "post",
      "author": {
        "id": "1295448945",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "Reel day",
      "created_at": "2026-09-16T08:00:00Z",
      "metrics": {
        "likes": 640,
        "comments": 21,
        "views": 60110
      },
      "attachments": [
        {
          "type": "video",
          "url": "https://cdn.example.com/reel2.mp4",
          "duration_ms": 30100
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "QVFBQ2daOTItcGxhdGZvcm0",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/posts/{id}ig.post

Instagram 게시물 상세

파라미터위치필수타입설명
idpath필수stringInstagram 게시물 SHORTCODE(/p/{code} 어드레싱 키).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 게시물입니다.

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "Creel00001",
    "platform": "instagram",
    "type": "post",
    "author": {
      "id": "1295448945",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "verified": true
    },
    "text": "Reel day",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "likes": 1204,
      "comments": 36,
      "views": 88231
    },
    "attachments": [
      {
        "type": "video",
        "url": "https://cdn.example.com/reel.mp4",
        "duration_ms": 32500
      }
    ],
    "fetched_at": "2026-09-18T07:30:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 3600,
      "source_layer": "cache",
      "stale": false
    },
    "billing": {
      "amount_credits": 0,
      "cache_hit": true
    }
  }
}
GET/v1/ig/posts/{id}/commentsig.comments

Instagram 게시물 댓글

파라미터위치필수타입설명
idpath필수stringInstagram 게시물 SHORTCODE(/p/{code} 어드레싱 키).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 게시물의 정규화된 댓글을 페이지 단위로 반환합니다.

404 — 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "17990000000000001",
      "platform": "instagram",
      "type": "comment",
      "post_id": "CwxOne00001",
      "author": {
        "id": "8811223344",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "Clean normalized shape!",
      "created_at": "2026-09-17T13:00:00Z",
      "metrics": {
        "likes": 5
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 600,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/search/postsig.search_posts

Instagram 게시물 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200검색어와 일치하는 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "Creel00001",
      "platform": "instagram",
      "type": "post",
      "author": {
        "id": "5566778899001",
        "username": "datafan",
        "display_name": "Data Fan",
        "verified": true
      },
      "text": "search hit one",
      "created_at": "2026-09-15T10:00:00Z",
      "metrics": {
        "likes": 341,
        "comments": 12,
        "views": 88231
      },
      "attachments": [
        {
          "type": "video",
          "url": "https://cdn.example.com/reel1.mp4",
          "duration_ms": 32500
        }
      ],
      "fetched_at": "2026-09-18T09:05:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "live",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/ig/posts/{id}/comments/{comment_id}/repliesig.comment_replies

댓글 답글 목록

파라미터위치필수타입설명
idpath필수stringInstagram 게시물 SHORTCODE(/p/{code} 어드레싱 키).
comment_idpath필수string답글을 나열할 부모 댓글 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "17990000000000001",
      "platform": "instagram",
      "type": "comment",
      "post_id": "CwxOne00001",
      "author": {
        "id": "8811223344",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "Clean normalized shape!",
      "created_at": "2026-09-17T13:00:00Z",
      "metrics": {
        "likes": 5
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/users/{username}/followersig.user_followers

팔로워 목록

파라미터위치필수타입설명
usernamepath필수stringInstagram 사용자 이름(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "1295448945",
      "platform": "instagram",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Photo dumps and API graphs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": null,
      "metrics": {
        "followers": 51230,
        "following": 310,
        "posts": 862
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/users/{username}/followingig.user_following

팔로잉 목록

파라미터위치필수타입설명
usernamepath필수stringInstagram 사용자 이름(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "1295448945",
      "platform": "instagram",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Photo dumps and API graphs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": null,
      "metrics": {
        "followers": 51230,
        "following": 310,
        "posts": 862
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/search/usersig.search_users

사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/search/users?q=fetchpi"

응답 예제

{
  "query": "data api",
  "data": [
    {
      "id": "1295448945",
      "platform": "instagram",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Photo dumps and API graphs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": null,
      "metrics": {
        "followers": 51230,
        "following": 310,
        "posts": 862
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/ig/users/{username}/storiesig.stories

스토리 목록

파라미터위치필수타입설명
usernamepath필수stringInstagram 사용자 이름(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/users/newdev/stories"

응답 예제

{
  "data": [
    {
      "id": "CwxOne00001",
      "platform": "instagram",
      "type": "post",
      "author": {
        "id": "1295448945",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "text": "Carousel dump #1",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 1204,
        "comments": 36,
        "views": 0
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/1.jpg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/2.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/users/{username}/highlightsig.highlights

하이라이트 목록

파라미터위치필수타입설명
usernamepath필수stringInstagram 사용자 이름(맨 앞 @ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/users/newdev/highlights"

응답 예제

{
  "data": [
    {
      "id": "highlight_launch",
      "platform": "instagram",
      "type": "highlight",
      "title": "Launch Week",
      "username": "creatordev",
      "cover_image_url": "https://scontent.cdninstagram.com/hl-launch.jpg",
      "media_count": 3,
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/ig/posts/{id}/likersig.post_likers

게시물 좋아요 사용자

파라미터위치필수타입설명
idpath필수stringInstagram 게시물 SHORTCODE(/p/{code} 어드레싱 키).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/ig/posts/1842951234567890123/likers"

응답 예제

{
  "data": [
    {
      "id": "1295448945",
      "platform": "instagram",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Photo dumps and API graphs.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/profile_pic/creatordev.jpg",
      "verified": true,
      "is_private": false,
      "created_at": null,
      "metrics": {
        "followers": 51230,
        "following": 310,
        "posts": 862
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/users/{username}xhs.profile

샤오홍슈 프로필

파라미터위치필수타입설명
usernamepath필수string샤오홍슈 사용자 id——업스트림은 숫자 사용자 id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200요청한 사용자의 정규화된 프로필입니다.

404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/users/newdev"

응답 예제

{
  "data": {
    "id": "66f2a1de000000001e0167a1",
    "platform": "xiaohongshu",
    "type": "profile",
    "username": "creatordev",
    "display_name": "Creator Dev",
    "description": "Notes about data APIs.",
    "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
    "verified": true,
    "created_at": null,
    "metrics": {
      "followers": 51230,
      "following": 310,
      "posts": 862,
      "likes": 2140000
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 120,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/users/{username}/postsxhs.user_posts

샤오홍슈 사용자 게시물 목록

파라미터위치필수타입설명
usernamepath필수string샤오홍슈 사용자 id——업스트림은 숫자 사용자 id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 사용자의 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 알 수 없는 사용자입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "66f2b1de000000001f0167a1",
      "platform": "xiaohongshu",
      "type": "post",
      "author": null,
      "title": "First note on the platform.",
      "text": null,
      "created_at": null,
      "metrics": {
        "likes": 512,
        "collects": 0,
        "comments": 0,
        "shares": 0
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/n1-cover.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "66f2b1de000000001f0167a2",
      "platform": "xiaohongshu",
      "type": "post",
      "author": null,
      "title": "Freshness modes, explained in 30s.",
      "text": null,
      "created_at": null,
      "metrics": {
        "likes": 512,
        "collects": 0,
        "comments": 0,
        "shares": 0
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/n2-cover.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiI2NmYyYjFkZTAwIn0",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/posts/{id}xhs.post

샤오홍슈 게시물 상세

파라미터위치필수타입설명
idpath필수string샤오홍슈 노트 id.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 게시물입니다.

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "66f2b1de000000001f0167a1",
    "platform": "xiaohongshu",
    "type": "post",
    "author": {
      "id": "66f2a1de000000001e0167a1",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "verified": true
    },
    "title": "One API for every feed.",
    "text": "One API for every platform.",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "likes": 1204,
      "collects": 310,
      "comments": 42,
      "shares": 87
    },
    "attachments": [
      {
        "type": "video",
        "url": "https://cdn.example.com/note.mp4",
        "preview_image_url": "https://cdn.example.com/note-cover.jpg"
      }
    ],
    "fetched_at": "2026-09-18T07:30:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 3600,
      "source_layer": "cache",
      "stale": false
    },
    "billing": {
      "amount_credits": 0,
      "cache_hit": true
    }
  }
}
GET/v1/xhs/posts/{id}/commentsxhs.comments

샤오홍슈 게시물 댓글

파라미터위치필수타입설명
idpath필수string샤오홍슈 노트 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 게시물의 정규화된 댓글을 페이지 단위로 반환합니다.

404 — 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "66f3a1de000000001f0267c1",
      "platform": "xiaohongshu",
      "type": "comment",
      "post_id": "66f2b1de000000001f0167a1",
      "author": {
        "id": "66f1a1de000000001f0167d1",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:06:40Z",
      "metrics": {
        "likes": 12,
        "replies": 2
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 600,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/search/postsxhs.search_posts

샤오홍슈 게시물 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200검색어와 일치하는 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "66f2c1de000000001f0167b1",
      "platform": "xiaohongshu",
      "type": "post",
      "author": null,
      "title": "search hit one",
      "text": null,
      "created_at": null,
      "metrics": {
        "likes": 512,
        "collects": 0,
        "comments": 0,
        "shares": 0
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/s1-cover.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:05:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "live",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/posts/{id}/comments/{comment_id}/repliesxhs.comment_replies

댓글 답글 목록

파라미터위치필수타입설명
idpath필수stringTikTok 동영상 id(플랫폼 네이티브 숫자 문자열).
comment_idpath필수string대댓글을 나열할 부모 댓글 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "66f3a1de000000001f0267c1",
      "platform": "xiaohongshu",
      "type": "comment",
      "post_id": "66f2b1de000000001f0167a1",
      "author": {
        "id": "66f1a1de000000001f0167d1",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:06:40Z",
      "metrics": {
        "likes": 12,
        "replies": 2
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/search/usersxhs.search_users

사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/search/users?q=fetchpi"

응답 예제

{
  "query": "data api",
  "data": [
    {
      "id": "66f2a1de000000001e0167a1",
      "platform": "xiaohongshu",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Notes about data APIs.",
      "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
      "verified": true,
      "created_at": null,
      "metrics": {
        "followers": 51230,
        "following": 310,
        "posts": 862,
        "likes": 2140000
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/xhs/homefeedxhs.homefeed

홈 피드

파라미터위치필수타입설명
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xhs/homefeed"

응답 예제

{
  "data": [
    {
      "id": "66f2b1de000000001f0167a1",
      "platform": "xiaohongshu",
      "type": "post",
      "author": {
        "id": "66f2a1de000000001e0167a1",
        "username": "creatordev",
        "display_name": "Creator Dev",
        "verified": true
      },
      "title": "One API for every feed.",
      "text": "One API for every platform.",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 1204,
        "collects": 310,
        "comments": 42,
        "shares": 87
      },
      "attachments": [
        {
          "type": "video",
          "url": "https://cdn.example.com/note.mp4",
          "preview_image_url": "https://cdn.example.com/note-cover.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/youtube/users/{username}youtube.profile

YouTube 채널 프로필(채널이 사용자)

파라미터위치필수타입설명
usernamepath필수stringYouTube 채널 id(UC…)——채널이 곧 플랫폼 사용자입니다. 업스트림은 채널 id로 지정하므로 값은 그대로 전달됩니다(핸들 허용은 upstream 조정 대기 항목).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200요청한 사용자의 정규화된 프로필입니다.

404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 채널).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/youtube/users/newdev"

응답 예제

{
  "data": {
    "id": "UCsim0000000000000000777",
    "platform": "youtube",
    "type": "profile",
    "username": "creatordev",
    "display_name": "Creator Dev",
    "description": "Videos about data APIs.",
    "url": "https://www.youtube.com/@creatordev",
    "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
    "verified": true,
    "created_at": "2019-04-01T10:15:00Z",
    "metrics": {
      "subscribers": 51230,
      "views": 19824567,
      "posts": 862
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 120,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/youtube/users/{username}/postsyoutube.user_posts

YouTube 채널 동영상 목록

파라미터위치필수타입설명
usernamepath필수stringYouTube 채널 id(UC…)——채널이 곧 플랫폼 사용자입니다. 업스트림은 채널 id로 지정하므로 값은 그대로 전달됩니다(핸들 허용은 upstream 조정 대기 항목).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 사용자의 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 알 수 없는 채널입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/youtube/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "wSimVideo0001",
      "platform": "youtube",
      "type": "post",
      "author": null,
      "title": "First video on the platform.",
      "text": null,
      "created_at": "2026-09-16T08:00:00Z",
      "metrics": {
        "views": 0,
        "likes": 0,
        "comments": 0
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/t1.jpg",
          "duration_ms": 30000
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "wSimVideo0002",
      "platform": "youtube",
      "type": "post",
      "author": null,
      "title": "Freshness modes, explained in 30s.",
      "text": null,
      "created_at": "2026-09-15T08:00:00Z",
      "metrics": {
        "views": 52100,
        "likes": 0,
        "comments": 0
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/t2.jpg",
          "duration_ms": 30000
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiJDQlFTRCJ9",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/youtube/posts/{id}youtube.post

YouTube 게시물 상세

파라미터위치필수타입설명
idpath필수stringYouTube 동영상 id.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 게시물입니다.

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/youtube/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "wSimVideo0001",
    "platform": "youtube",
    "type": "post",
    "author": {
      "id": "UCsim0000000000000000777",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "verified": true
    },
    "title": "One API for every platform.",
    "text": "One API for every platform.",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "views": 154203,
      "likes": 864,
      "comments": 42
    },
    "attachments": [
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/thumb.jpg",
        "duration_ms": 212000
      }
    ],
    "fetched_at": "2026-09-18T07:30:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 3600,
      "source_layer": "cache",
      "stale": false
    },
    "billing": {
      "amount_credits": 0,
      "cache_hit": true
    }
  }
}
GET/v1/youtube/posts/{id}/commentsyoutube.comments

YouTube 동영상 댓글

파라미터위치필수타입설명
idpath필수stringYouTube 동영상 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 게시물의 정규화된 댓글을 페이지 단위로 반환합니다.

404 — 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/youtube/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "UgxSim000000000001",
      "platform": "youtube",
      "type": "comment",
      "post_id": "wSimVideo0001",
      "author": {
        "id": "UCsimfan000000000001",
        "username": "curiousfan",
        "display_name": "Curious Fan",
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:00:00Z",
      "metrics": {
        "likes": 12,
        "replies": 2
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 600,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/youtube/search/postsyoutube.search_posts

YouTube 동영상 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200검색어와 일치하는 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/youtube/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "sSimVideo001",
      "platform": "youtube",
      "type": "post",
      "author": {
        "id": "UCsimsearch00000000001",
        "username": "datafan",
        "display_name": "Data Fan",
        "verified": false
      },
      "title": "normalized entities for every feed!",
      "text": null,
      "created_at": null,
      "metrics": {
        "views": 0,
        "likes": 0,
        "comments": 0
      },
      "attachments": [],
      "fetched_at": "2026-09-18T09:05:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "live",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/youtube/search/usersyoutube.search_users

채널 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/youtube/search/users?q=fetchpi"

응답 예제

{
  "query": "data api",
  "data": [
    {
      "id": "UCsim0000000000000000777",
      "platform": "youtube",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Videos about data APIs.",
      "url": "https://www.youtube.com/@creatordev",
      "profile_image_url": "https://cdn.example.com/avatar/creatordev.jpg",
      "verified": true,
      "created_at": "2019-04-01T10:15:00Z",
      "metrics": {
        "subscribers": 51230,
        "views": 19824567,
        "posts": 862
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/users/{username}reddit.profile

Reddit 프로필

파라미터위치필수타입설명
usernamepath필수stringReddit 사용자 이름(앞의 u/ 제외).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200요청한 사용자의 정규화된 프로필입니다.

404 — 사용 가능한 데이터가 없습니다(예: 캐시 전용 모드에서 캐시된 엔티티가 없거나 알 수 없는 사용자 이름).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/users/newdev"

응답 예제

{
  "data": {
    "id": "1a2b3c",
    "platform": "reddit",
    "type": "profile",
    "username": "creatordev",
    "display_name": "Creator Dev",
    "description": "Posts about data APIs.",
    "profile_image_url": "https://cdn.example.com/avatar/creatordev.png",
    "verified": true,
    "created_at": "2019-04-01T08:15:00Z",
    "metrics": {
      "karma_posts": 8620,
      "karma_comments": 15300,
      "total_karma": 24100,
      "followers": 4811
    },
    "fetched_at": "2026-09-18T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 120,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/users/{username}/postsreddit.user_posts

Reddit 사용자 게시물 목록

파라미터위치필수타입설명
usernamepath필수stringReddit 사용자 이름(앞의 u/ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 사용자의 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "1simpost01",
      "platform": "reddit",
      "type": "post",
      "author": {
        "id": "7004994945",
        "username": "creatordev",
        "display_name": null,
        "verified": false
      },
      "title": "First post on the platform.",
      "text": "One API for every platform.",
      "url": "https://www.reddit.com/r/dataapi/comments/1simpost01/",
      "created_at": "2026-09-16T19:23:20Z",
      "metrics": {
        "upvotes": 864,
        "downvotes": 12,
        "comments": 42
      },
      "attachments": [],
      "fetched_at": "2026-09-18T09:00:00Z"
    },
    {
      "id": "1simpost02",
      "platform": "reddit",
      "type": "post",
      "author": {
        "id": "7004994945",
        "username": "creatordev",
        "display_name": null,
        "verified": false
      },
      "title": "Freshness modes, explained.",
      "text": "One API for every platform.",
      "url": "https://www.reddit.com/r/dataapi/comments/1simpost02/",
      "created_at": "2026-09-16T08:00:00Z",
      "metrics": {
        "upvotes": 412,
        "downvotes": 9,
        "comments": 18
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/p1-full.jpg",
          "preview_image_url": "https://cdn.example.com/p1.jpg"
        },
        {
          "type": "video",
          "url": "https://cdn.example.com/p2.mp4",
          "preview_image_url": "https://cdn.example.com/p2.jpg"
        }
      ],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": "eyJ2IjoxLCJzcmMiOiJ4dGhpcmQiLCJwb3MiOiJ0M19zaW0ifQ",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/posts/{id}reddit.post

Reddit 게시물 상세

파라미터위치필수타입설명
idpath필수stringReddit 게시물 id(t3 base36, 접두사 없음).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 게시물입니다.

404 — 캐시·DB·upstream 어디에서도 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "1simpost01",
    "platform": "reddit",
    "type": "post",
    "author": {
      "id": "7004994945",
      "username": "creatordev",
      "display_name": null,
      "verified": false
    },
    "title": "One API for every platform.",
    "text": "One API for every platform.",
    "url": "https://www.reddit.com/r/dataapi/comments/1simpost01/",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "upvotes": 864,
      "downvotes": 12,
      "comments": 42
    },
    "attachments": [],
    "fetched_at": "2026-09-18T07:30:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 3600,
      "source_layer": "cache",
      "stale": false
    },
    "billing": {
      "amount_credits": 0,
      "cache_hit": true
    }
  }
}
GET/v1/reddit/posts/{id}/commentsreddit.comments

Reddit 게시물 댓글

파라미터위치필수타입설명
idpath필수stringReddit 게시물 id(t3 base36, 접두사 없음).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200해당 게시물의 정규화된 댓글을 페이지 단위로 반환합니다.

404 — 게시물을 찾을 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "simcomment1",
      "platform": "reddit",
      "type": "comment",
      "post_id": "1simpost01",
      "author": {
        "id": "fan0000001",
        "username": "curiousfan",
        "display_name": null,
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:06:40Z",
      "metrics": {
        "upvotes": 12,
        "downvotes": 1
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 600,
      "source_layer": "db",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/search/postsreddit.search_posts

Reddit 게시물 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200검색어와 일치하는 정규화된 게시물을 페이지 단위로 반환합니다.

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "1simsear01",
      "platform": "reddit",
      "type": "post",
      "author": {
        "id": "5566778899",
        "username": "datafan",
        "display_name": null,
        "verified": false
      },
      "title": "normalized entities for every feed!",
      "text": "One API for every platform.",
      "url": "https://www.reddit.com/r/dataapi/comments/1simsear01/",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "upvotes": 91,
        "downvotes": 2,
        "comments": 3
      },
      "attachments": [],
      "fetched_at": "2026-09-18T09:05:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "live",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/search/usersreddit.search_users

사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/search/users?q=fetchpi"

응답 예제

{
  "query": "data api",
  "data": [
    {
      "id": "1a2b3c",
      "platform": "reddit",
      "type": "profile",
      "username": "creatordev",
      "display_name": "Creator Dev",
      "description": "Posts about data APIs.",
      "profile_image_url": "https://cdn.example.com/avatar/creatordev.png",
      "verified": true,
      "created_at": "2019-04-01T08:15:00Z",
      "metrics": {
        "karma_posts": 8620,
        "karma_comments": 15300,
        "total_karma": 24100,
        "followers": 4811
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/subreddits/{name}/postsreddit.subreddit_posts

서브레딧 게시물 목록

파라미터위치필수타입설명
namepath필수string서브레딧 이름(앞의 r/ 제외).
sortquery선택hot | new | top = hot서브레딧 게시물 목록의 upstream 피드 정렬.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/subreddits/technology/posts"

응답 예제

{
  "data": [
    {
      "id": "1simpost01",
      "platform": "reddit",
      "type": "post",
      "author": {
        "id": "7004994945",
        "username": "creatordev",
        "display_name": null,
        "verified": false
      },
      "title": "One API for every platform.",
      "text": "One API for every platform.",
      "url": "https://www.reddit.com/r/dataapi/comments/1simpost01/",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "upvotes": 864,
        "downvotes": 12,
        "comments": 42
      },
      "attachments": [],
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/reddit/users/{username}/commentsreddit.user_comments

사용자 댓글 목록

파라미터위치필수타입설명
usernamepath필수stringReddit 사용자 이름(앞의 u/ 제외).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 알 수 없는 사용자 이름입니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/reddit/users/newdev/comments"

응답 예제

{
  "data": [
    {
      "id": "simcomment1",
      "platform": "reddit",
      "type": "comment",
      "post_id": "1simpost01",
      "author": {
        "id": "fan0000001",
        "username": "curiousfan",
        "display_name": null,
        "verified": false
      },
      "text": "This is the future of data APIs.",
      "created_at": "2026-09-17T13:06:40Z",
      "metrics": {
        "upvotes": 12,
        "downvotes": 1
      },
      "fetched_at": "2026-09-18T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/users/{username}douyin.profile

Douyin 프로필

파라미터위치필수타입설명
usernamepath필수string더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/users/newdev"

응답 예제

{
  "data": {
    "id": "7004994945113",
    "platform": "douyin",
    "type": "profile",
    "username": "fetchpi_dev",
    "display_name": "FetchPI 抖音站",
    "description": "短视频形式的数据 API 教程。",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/avatar/douyin-fetchpi.jpg",
    "verified": true,
    "created_at": "2019-06-01T00:00:00Z",
    "metrics": {
      "followers": 1288000,
      "following": 88,
      "posts": 412,
      "likes": 18600000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/posts/{id}douyin.post

Douyin 동영상 상세

파라미터위치필수타입설명
idpath필수string더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7412050000000001001",
    "platform": "douyin",
    "type": "post",
    "author": {
      "id": "7004994945113",
      "username": "fetchpi_dev",
      "display_name": "FetchPI 抖音站",
      "verified": true
    },
    "text": "一条关于数据 API 的短视频。",
    "created_at": "2026-09-17T12:34:56Z",
    "metrics": {
      "likes": 32810,
      "comments": 1204,
      "shares": 988,
      "collects": 5600,
      "views": 2140000
    },
    "attachments": [
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
        "duration_ms": 45678
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/users/{username}/postsdouyin.user_posts

Douyin 사용자 동영상

파라미터위치필수타입설명
usernamepath필수string더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "7412050000000001001",
      "platform": "douyin",
      "type": "post",
      "author": {
        "id": "7004994945113",
        "username": "fetchpi_dev",
        "display_name": "FetchPI 抖音站",
        "verified": true
      },
      "text": "一条关于数据 API 的短视频。",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 32810,
        "comments": 1204,
        "shares": 988,
        "collects": 5600,
        "views": 2140000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
          "duration_ms": 45678
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/posts/{id}/commentsdouyin.comments

Douyin 동영상 댓글

파라미터위치필수타입설명
idpath필수string더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "7411222200000001001",
      "platform": "douyin",
      "type": "comment",
      "post_id": "7412050000000001001",
      "author": {
        "id": "7004994945114",
        "username": "commentfan",
        "display_name": "评论粉丝",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-17T13:01:22Z",
      "metrics": {
        "likes": 823,
        "replies": 12
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/posts/{id}/comments/{comment_id}/repliesdouyin.comment_replies

Douyin 댓글 답글

파라미터위치필수타입설명
idpath필수string더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함).
comment_idpath필수string답글을 나열할 부모 댓글 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "7411222200000001001",
      "platform": "douyin",
      "type": "comment",
      "post_id": "7412050000000001001",
      "author": {
        "id": "7004994945114",
        "username": "commentfan",
        "display_name": "评论粉丝",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-17T13:01:22Z",
      "metrics": {
        "likes": 823,
        "replies": 12
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/users/{username}/followersdouyin.user_followers

Douyin 팔로워 목록

파라미터위치필수타입설명
usernamepath필수string더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "7004994945113",
      "platform": "douyin",
      "type": "profile",
      "username": "fetchpi_dev",
      "display_name": "FetchPI 抖音站",
      "description": "短视频形式的数据 API 教程。",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/douyin-fetchpi.jpg",
      "verified": true,
      "created_at": "2019-06-01T00:00:00Z",
      "metrics": {
        "followers": 1288000,
        "following": 88,
        "posts": 412,
        "likes": 18600000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/users/{username}/followingdouyin.user_following

Douyin 팔로잉 목록

파라미터위치필수타입설명
usernamepath필수string더우인(Douyin) 사용자 어드레싱 키(sec_user_id)——업스트림은 sec_user_id로 사용자를 지정하므로 값은 그대로 전달됩니다(핸들 조회는 upstream 조정 대기 항목).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "7004994945113",
      "platform": "douyin",
      "type": "profile",
      "username": "fetchpi_dev",
      "display_name": "FetchPI 抖音站",
      "description": "短视频形式的数据 API 教程。",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/douyin-fetchpi.jpg",
      "verified": true,
      "created_at": "2019-06-01T00:00:00Z",
      "metrics": {
        "followers": 1288000,
        "following": 88,
        "posts": 412,
        "likes": 18600000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/hashtags/{tag}douyin.hashtag

Douyin 해시태그 상세

파라미터위치필수타입설명
tagpath필수string더우인 해시태그 어드레싱 키: upstream 챌린지 id ch_id를 그대로 전달합니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/hashtags/trending"

응답 예제

{
  "data": {
    "id": "1655000000000001001",
    "platform": "douyin",
    "type": "hashtag",
    "name": "数据API",
    "description": "话题详情(按上游 ch_id 寻址)。",
    "cover_image_url": "https://cdn.example.com/cover/douyin-hashtag.jpeg",
    "metrics": {
      "views": 960000000,
      "posts": 128000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/hashtags/{tag}/postsdouyin.hashtag_posts

Douyin 해시태그 동영상

파라미터위치필수타입설명
tagpath필수string더우인 해시태그 어드레싱 키: upstream 챌린지 id ch_id를 그대로 전달합니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/hashtags/trending/posts"

응답 예제

{
  "data": [
    {
      "id": "7412050000000001001",
      "platform": "douyin",
      "type": "post",
      "author": {
        "id": "7004994945113",
        "username": "fetchpi_dev",
        "display_name": "FetchPI 抖音站",
        "verified": true
      },
      "text": "一条关于数据 API 的短视频。",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 32810,
        "comments": 1204,
        "shares": 988,
        "collects": 5600,
        "views": 2140000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
          "duration_ms": 45678
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/musics/{id}douyin.music

Douyin 음악 상세

파라미터위치필수타입설명
idpath필수string더우인 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/musics/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7416880000000001001",
    "platform": "douyin",
    "type": "music",
    "title": "原创音源(数据 API 主题曲)",
    "author_name": "数据工场",
    "duration_ms": 45678,
    "cover_image_url": "https://cdn.example.com/cover/douyin-music.jpeg",
    "metrics": {
      "videos": 128000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/musics/{id}/postsdouyin.music_posts

Douyin 음악 동영상

파라미터위치필수타입설명
idpath필수string더우인 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/musics/1842951234567890123/posts"

응답 예제

{
  "data": [
    {
      "id": "7412050000000001001",
      "platform": "douyin",
      "type": "post",
      "author": {
        "id": "7004994945113",
        "username": "fetchpi_dev",
        "display_name": "FetchPI 抖音站",
        "verified": true
      },
      "text": "一条关于数据 API 的短视频。",
      "created_at": "2026-09-17T12:34:56Z",
      "metrics": {
        "likes": 32810,
        "comments": 1204,
        "shares": 988,
        "collects": 5600,
        "views": 2140000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
          "duration_ms": 45678
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/live/{id}douyin.live_room

Douyin 라이브 룸 정보

파라미터위치필수타입설명
idpath필수string더우인 플랫폼 네이티브 미디어 id(/musics는 음악 id, /live는 라이브 방 id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/live/1842951234567890123"

응답 예제

{
  "data": {
    "id": "8800000000000001001",
    "platform": "douyin",
    "type": "live_room",
    "title": "直播:数据 API 问答",
    "username": "fetchpi_dev",
    "display_name": "FetchPI 抖音站",
    "status": "LIVE",
    "viewer_count": 3456,
    "started_at": "2026-09-21T08:00:00Z",
    "cover_image_url": "https://cdn.example.com/cover/douyin-live.jpeg",
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/hot-searchdouyin.hot_search

Douyin 핫서치 차트

파라미터위치필수타입설명
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/hot-search"

응답 예제

{
  "data": {
    "platform": "douyin",
    "type": "hot_search",
    "words": [
      {
        "word": "数据开放",
        "hot_value": 4821000
      },
      {
        "word": "实体层",
        "hot_value": 3120004
      }
    ],
    "updated_at": "2026-09-21T08:00:00Z",
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/douyin/download/{id}douyin.download

Douyin 다운로드 URL 해석

파라미터위치필수타입설명
idpath필수string더우인 동영상 id(플랫폼 네이티브 aweme id, /download의 어드레싱 키이기도 함).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/douyin/download/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7412050000000001001",
    "platform": "douyin",
    "type": "download",
    "play_url": "https://v.douyincdn.com/aweme/7412050000000001001/play.mp4?no-watermark=1",
    "preview_image_url": "https://cdn.example.com/cover/douyin-7412050000000001001.jpeg",
    "duration_ms": 45678,
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/users/{username}kuaishou.profile

콰이쇼우 프로필

파라미터위치필수타입설명
usernamepath필수string콰이쇼우(Kuaishou) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/users/newdev"

응답 예제

{
  "data": {
    "id": "3185500122",
    "platform": "kuaishou",
    "type": "profile",
    "username": "fetchpi_ks",
    "display_name": "FetchPI 快手号",
    "description": "快手短视频与数据开放。",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/avatar/kuaishou-fetchpi.jpg",
    "verified": false,
    "created_at": "2018-03-15T00:00:00Z",
    "metrics": {
      "followers": 156000,
      "following": 210,
      "posts": 389,
      "likes": 2100000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/posts/{id}kuaishou.post

콰이쇼우 게시물 상세

파라미터위치필수타입설명
idpath필수string콰이쇼우 사진 id(플랫폼 네이티브 photo_id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "5566778899001",
    "platform": "kuaishou",
    "type": "post",
    "author": {
      "id": "3185500122",
      "username": "fetchpi_ks",
      "display_name": "FetchPI 快手号",
      "verified": false
    },
    "text": "快手短视频数据示例。",
    "created_at": "2026-09-16T10:00:00Z",
    "metrics": {
      "likes": 8642,
      "comments": 512,
      "shares": 87,
      "views": 154000
    },
    "attachments": [
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
        "duration_ms": 38400
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/users/{username}/postskuaishou.user_posts

콰이쇼우 사용자 게시물

파라미터위치필수타입설명
usernamepath필수string콰이쇼우(Kuaishou) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "5566778899001",
      "platform": "kuaishou",
      "type": "post",
      "author": {
        "id": "3185500122",
        "username": "fetchpi_ks",
        "display_name": "FetchPI 快手号",
        "verified": false
      },
      "text": "快手短视频数据示例。",
      "created_at": "2026-09-16T10:00:00Z",
      "metrics": {
        "likes": 8642,
        "comments": 512,
        "shares": 87,
        "views": 154000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
          "duration_ms": 38400
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/posts/{id}/commentskuaishou.comments

콰이쇼우 게시물 댓글

파라미터위치필수타입설명
idpath필수string콰이쇼우 사진 id(플랫폼 네이티브 photo_id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "7700112233445",
      "platform": "kuaishou",
      "type": "comment",
      "post_id": "5566778899001",
      "author": {
        "id": "4400112233445",
        "username": "ksfan001",
        "display_name": "快手网友",
        "verified": false
      },
      "text": "这个讲解很实用。",
      "created_at": "2026-09-16T10:20:00Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/search/postskuaishou.search_posts

콰이쇼우 게시물 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "5566778899001",
      "platform": "kuaishou",
      "type": "post",
      "author": {
        "id": "3185500122",
        "username": "fetchpi_ks",
        "display_name": "FetchPI 快手号",
        "verified": false
      },
      "text": "快手短视频数据示例。",
      "created_at": "2026-09-16T10:00:00Z",
      "metrics": {
        "likes": 8642,
        "comments": 512,
        "shares": 87,
        "views": 154000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
          "duration_ms": 38400
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/posts/{id}/comments/{comment_id}/replieskuaishou.comment_replies

콰이쇼우 댓글 답글

파라미터위치필수타입설명
idpath필수string콰이쇼우 사진 id(플랫폼 네이티브 photo_id).
comment_idpath필수string대댓글을 나열할 루트 댓글 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "7700112233445",
      "platform": "kuaishou",
      "type": "comment",
      "post_id": "5566778899001",
      "author": {
        "id": "4400112233445",
        "username": "ksfan001",
        "display_name": "快手网友",
        "verified": false
      },
      "text": "这个讲解很实用。",
      "created_at": "2026-09-16T10:20:00Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/search/userskuaishou.search_users

콰이쇼우 사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/search/users?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "3185500122",
      "platform": "kuaishou",
      "type": "profile",
      "username": "fetchpi_ks",
      "display_name": "FetchPI 快手号",
      "description": "快手短视频与数据开放。",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/kuaishou-fetchpi.jpg",
      "verified": false,
      "created_at": "2018-03-15T00:00:00Z",
      "metrics": {
        "followers": 156000,
        "following": 210,
        "posts": 389,
        "likes": 2100000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/hashtags/{tag}/postskuaishou.hashtag_posts

콰이쇼우 태그 게시물

파라미터위치필수타입설명
tagpath필수string콰이쇼우 태그 어드레싱 키: upstream general_tag_id를 그대로 전달합니다(이 풀에는 태그 상세 라우트가 없음).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/hashtags/trending/posts"

응답 예제

{
  "data": [
    {
      "id": "5566778899001",
      "platform": "kuaishou",
      "type": "post",
      "author": {
        "id": "3185500122",
        "username": "fetchpi_ks",
        "display_name": "FetchPI 快手号",
        "verified": false
      },
      "text": "快手短视频数据示例。",
      "created_at": "2026-09-16T10:00:00Z",
      "metrics": {
        "likes": 8642,
        "comments": 512,
        "shares": 87,
        "views": 154000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/kuaishou-5566778899001.jpeg",
          "duration_ms": 38400
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/kuaishou/users/{username}/livekuaishou.live_room

콰이쇼우 라이브 룸 정보

파라미터위치필수타입설명
usernamepath필수string콰이쇼우(Kuaishou) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/kuaishou/users/newdev/live"

응답 예제

{
  "data": {
    "id": "8810000000000001001",
    "platform": "kuaishou",
    "type": "live_room",
    "title": "快手直播:数据开放夜",
    "username": "fetchpi_ks",
    "display_name": "FetchPI 快手号",
    "status": "LIVE",
    "viewer_count": 1234,
    "started_at": "2026-09-21T07:30:00Z",
    "cover_image_url": "https://cdn.example.com/cover/kuaishou-live.jpeg",
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/xigua/users/{username}xigua.profile

시과 비디오 프로필

파라미터위치필수타입설명
usernamepath필수string시과(Xigua) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xigua/users/newdev"

응답 예제

{
  "data": {
    "id": "7004994945115",
    "platform": "xigua",
    "type": "profile",
    "username": "fetchpi_xigua",
    "display_name": "FetchPI 西瓜号",
    "description": "中视频数据 API 演示。",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/avatar/xigua-fetchpi.jpg",
    "verified": false,
    "created_at": "2020-01-10T00:00:00Z",
    "metrics": {
      "followers": 86500,
      "following": 35,
      "posts": 128,
      "likes": 940000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/xigua/posts/{id}xigua.post

시과 비디오 동영상 상세

파라미터위치필수타입설명
idpath필수string시과 동영상 id(플랫폼 네이티브 item id, /download의 어드레싱 키이기도 함).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xigua/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7413050000000001001",
    "platform": "xigua",
    "type": "post",
    "author": {
      "id": "7004994945115",
      "username": "fetchpi_xigua",
      "display_name": "FetchPI 西瓜号",
      "verified": false
    },
    "title": "西瓜视频:一条中视频",
    "text": "中视频格式的数据 API 演示。",
    "created_at": "2026-09-15T08:30:00Z",
    "metrics": {
      "likes": 5120,
      "comments": 320,
      "shares": 140,
      "views": 880000
    },
    "attachments": [
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
        "duration_ms": 732000
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/xigua/users/{username}/postsxigua.user_posts

시과 비디오 사용자 동영상

파라미터위치필수타입설명
usernamepath필수string시과(Xigua) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xigua/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "7413050000000001001",
      "platform": "xigua",
      "type": "post",
      "author": {
        "id": "7004994945115",
        "username": "fetchpi_xigua",
        "display_name": "FetchPI 西瓜号",
        "verified": false
      },
      "title": "西瓜视频:一条中视频",
      "text": "中视频格式的数据 API 演示。",
      "created_at": "2026-09-15T08:30:00Z",
      "metrics": {
        "likes": 5120,
        "comments": 320,
        "shares": 140,
        "views": 880000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
          "duration_ms": 732000
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/xigua/posts/{id}/commentsxigua.comments

시과 비디오 동영상 댓글

파라미터위치필수타입설명
idpath필수string시과 동영상 id(플랫폼 네이티브 item id, /download의 어드레싱 키이기도 함).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xigua/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "7413222200000001001",
      "platform": "xigua",
      "type": "comment",
      "post_id": "7413050000000001001",
      "author": {
        "id": "7004994945116",
        "username": "xiguafan",
        "display_name": "西瓜观众",
        "verified": false
      },
      "text": "中视频也可以结构化。",
      "created_at": "2026-09-15T09:12:00Z",
      "metrics": {
        "likes": 41,
        "replies": 2
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/xigua/search/postsxigua.search_posts

시과 비디오 동영상 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xigua/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "7413050000000001001",
      "platform": "xigua",
      "type": "post",
      "author": {
        "id": "7004994945115",
        "username": "fetchpi_xigua",
        "display_name": "FetchPI 西瓜号",
        "verified": false
      },
      "title": "西瓜视频:一条中视频",
      "text": "中视频格式的数据 API 演示。",
      "created_at": "2026-09-15T08:30:00Z",
      "metrics": {
        "likes": 5120,
        "comments": 320,
        "shares": 140,
        "views": 880000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
          "duration_ms": 732000
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/xigua/download/{id}xigua.download

시과 비디오 재생 URL 해석

파라미터위치필수타입설명
idpath필수string시과 동영상 id(플랫폼 네이티브 item id, /download의 어드레싱 키이기도 함).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/xigua/download/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7413050000000001001",
    "platform": "xigua",
    "type": "download",
    "play_url": "https://v.xiguacdn.com/item/7413050000000001001/play.mp4",
    "preview_image_url": "https://cdn.example.com/cover/xigua-7413050000000001001.jpeg",
    "duration_ms": 732000,
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/toutiao/users/{username}toutiao.profile

투우차오 작가 프로필

파라미터위치필수타입설명
usernamepath필수string투터아오(Toutiao) 사용자 id——업스트림은 숫자 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/toutiao/users/newdev"

응답 예제

{
  "data": {
    "id": "1567049494",
    "platform": "toutiao",
    "type": "profile",
    "username": "toutiao_datastudio",
    "display_name": "数据工场头条号",
    "description": "今日头条创作与数据开放。",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/avatar/toutiao-fetchpi.jpg",
    "verified": true,
    "created_at": "2016-08-01T00:00:00Z",
    "metrics": {
      "followers": 235000,
      "following": 12,
      "posts": 890,
      "likes": 620000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/toutiao/posts/{id}toutiao.post

투우차오 기사 상세

파라미터위치필수타입설명
idpath필수string투터아오 콘텐츠 id(기사의 플랫폼 네이티브 group_id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/toutiao/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "1820000000001001",
    "platform": "toutiao",
    "type": "post",
    "author": {
      "id": "1567049494",
      "username": "toutiao_datastudio",
      "display_name": "数据工场头条号",
      "verified": true
    },
    "title": "头条文章:实体层与数据集市",
    "text": "结构化访问文章内容与互动指标。",
    "url": "https://www.toutiao.com/article/1820000000001001",
    "created_at": "2026-09-14T07:00:00Z",
    "metrics": {
      "likes": 610,
      "comments": 88,
      "views": 45200
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/toutiao/posts/{id}/commentstoutiao.comments

투우차오 기사 댓글

파라미터위치필수타입설명
idpath필수string투터아오 콘텐츠 id(기사의 플랫폼 네이티브 group_id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/toutiao/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "1821000000001001",
      "platform": "toutiao",
      "type": "comment",
      "post_id": "1820000000001001",
      "author": {
        "id": "1567049500",
        "username": "toutiaoreader",
        "display_name": "头条读者",
        "verified": false
      },
      "text": "文章数据口径讲得明白。",
      "created_at": "2026-09-14T08:05:00Z",
      "metrics": {
        "likes": 18,
        "replies": 1
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/lemon8/users/{username}lemon8.profile

Lemon8 프로필

파라미터위치필수타입설명
usernamepath필수stringLemon8 사용자 id——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/lemon8/users/newdev"

응답 예제

{
  "data": {
    "id": "7304994945116",
    "platform": "lemon8",
    "type": "profile",
    "username": "fetchpi_lemon",
    "display_name": "FetchPI on Lemon8",
    "description": "Lifestyle data notes.",
    "url": "https://fetchpi.com",
    "profile_image_url": "https://cdn.example.com/avatar/lemon8-fetchpi.jpg",
    "verified": false,
    "created_at": "2023-04-01T00:00:00Z",
    "metrics": {
      "followers": 24800,
      "following": 150,
      "posts": 96,
      "likes": 158000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/lemon8/posts/{id}lemon8.post

Lemon8 노트 상세

파라미터위치필수타입설명
idpath필수stringLemon8 노트 id(플랫폼 네이티브 item id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/lemon8/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7423050000000001001",
    "platform": "lemon8",
    "type": "post",
    "author": {
      "id": "7304994945116",
      "username": "fetchpi_lemon",
      "display_name": "FetchPI on Lemon8",
      "verified": false
    },
    "title": "Lemon8 note: data APIs",
    "text": "A lifestyle note with structured metrics.",
    "created_at": "2026-09-13T11:00:00Z",
    "metrics": {
      "likes": 1320,
      "comments": 64,
      "collects": 210
    },
    "attachments": [
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/lemon8-7423050000000001001-1.jpeg"
      },
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/lemon8-7423050000000001001-2.jpeg"
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/lemon8/search/postslemon8.search_posts

Lemon8 노트 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/lemon8/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "7423050000000001001",
      "platform": "lemon8",
      "type": "post",
      "author": {
        "id": "7304994945116",
        "username": "fetchpi_lemon",
        "display_name": "FetchPI on Lemon8",
        "verified": false
      },
      "title": "Lemon8 note: data APIs",
      "text": "A lifestyle note with structured metrics.",
      "created_at": "2026-09-13T11:00:00Z",
      "metrics": {
        "likes": 1320,
        "comments": 64,
        "collects": 210
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/lemon8-7423050000000001001-1.jpeg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/lemon8-7423050000000001001-2.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/lemon8/users/{username}/followerslemon8.user_followers

Lemon8 팔로워 목록

파라미터위치필수타입설명
usernamepath필수stringLemon8 사용자 id——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/lemon8/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "7304994945116",
      "platform": "lemon8",
      "type": "profile",
      "username": "fetchpi_lemon",
      "display_name": "FetchPI on Lemon8",
      "description": "Lifestyle data notes.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/lemon8-fetchpi.jpg",
      "verified": false,
      "created_at": "2023-04-01T00:00:00Z",
      "metrics": {
        "followers": 24800,
        "following": 150,
        "posts": 96,
        "likes": 158000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/lemon8/users/{username}/followinglemon8.user_following

Lemon8 팔로잉 목록

파라미터위치필수타입설명
usernamepath필수stringLemon8 사용자 id——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/lemon8/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "7304994945116",
      "platform": "lemon8",
      "type": "profile",
      "username": "fetchpi_lemon",
      "display_name": "FetchPI on Lemon8",
      "description": "Lifestyle data notes.",
      "url": "https://fetchpi.com",
      "profile_image_url": "https://cdn.example.com/avatar/lemon8-fetchpi.jpg",
      "verified": false,
      "created_at": "2023-04-01T00:00:00Z",
      "metrics": {
        "followers": 24800,
        "following": 150,
        "posts": 96,
        "likes": 158000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/lemon8/topics/{id}lemon8.topic

Lemon8 토픽 상세

파라미터위치필수타입설명
idpath필수stringLemon8 토픽 id(플랫폼 네이티브 포럼 id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/lemon8/topics/1842951234567890123"

응답 예제

{
  "data": {
    "id": "1666000000000001001",
    "platform": "lemon8",
    "type": "topic",
    "name": "数据开放",
    "description": "Lemon8 话题详情(按 forum_id 寻址)。",
    "metrics": {
      "posts": 8600
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/users/{username}bilibili.profile

Bilibili 프로필

파라미터위치필수타입설명
usernamepath필수string비리빌리(bilibili) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/users/newdev"

응답 예제

{
  "data": {
    "id": "3255000122",
    "platform": "bilibili",
    "type": "profile",
    "username": "FetchPI 哔哩站",
    "display_name": "FetchPI 哔哩站",
    "description": "哔哩哔哩数据开放。",
    "profile_image_url": "https://cdn.example.com/avatar/bilibili-fetchpi.jpg",
    "verified": true,
    "metrics": {
      "followers": 328000,
      "following": 45,
      "posts": 388
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/posts/{id}bilibili.post

Bilibili 동영상 상세

파라미터위치필수타입설명
idpath필수string비리빌리 동영상 id(플랫폼 네이티브 BV id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "BV1ma101c0001",
    "platform": "bilibili",
    "type": "post",
    "author": {
      "id": "3255000122",
      "username": "FetchPI 哔哩站",
      "display_name": "FetchPI 哔哩站",
      "verified": true
    },
    "title": "哔哩哔哩:数据 API 实战",
    "text": "一条关于数据 API 的视频。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 18220,
      "comments": 940,
      "collects": 2100,
      "views": 480000
    },
    "attachments": [
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/users/{username}/postsbilibili.user_posts

Bilibili 사용자 동영상

파라미터위치필수타입설명
usernamepath필수string비리빌리(bilibili) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "BV1ma101c0001",
      "platform": "bilibili",
      "type": "post",
      "author": {
        "id": "3255000122",
        "username": "FetchPI 哔哩站",
        "display_name": "FetchPI 哔哩站",
        "verified": true
      },
      "title": "哔哩哔哩:数据 API 实战",
      "text": "一条关于数据 API 的视频。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 18220,
        "comments": 940,
        "collects": 2100,
        "views": 480000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/posts/{id}/commentsbilibili.comments

Bilibili 동영상 댓글

파라미터위치필수타입설명
idpath필수string비리빌리 동영상 id(플랫폼 네이티브 BV id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "887711220001",
      "platform": "bilibili",
      "type": "comment",
      "post_id": "BV1ma101c0001",
      "author": {
        "id": "3255000200",
        "username": "哔哩网友",
        "display_name": "哔哩网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/posts/{id}/comments/{comment_id}/repliesbilibili.comment_replies

Bilibili 댓글 답글

파라미터위치필수타입설명
idpath필수string비리빌리 동영상 id(플랫폼 네이티브 BV id).
comment_idpath필수string답글을 나열할 부모 댓글 id(rpid).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "887711220001",
      "platform": "bilibili",
      "type": "comment",
      "post_id": "BV1ma101c0001",
      "author": {
        "id": "3255000200",
        "username": "哔哩网友",
        "display_name": "哔哩网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/search/postsbilibili.search_posts

Bilibili 동영상 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "BV1ma101c0001",
      "platform": "bilibili",
      "type": "post",
      "author": {
        "id": "3255000122",
        "username": "FetchPI 哔哩站",
        "display_name": "FetchPI 哔哩站",
        "verified": true
      },
      "title": "哔哩哔哩:数据 API 实战",
      "text": "一条关于数据 API 的视频。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 18220,
        "comments": 940,
        "collects": 2100,
        "views": 480000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/popularbilibili.popular

Bilibili 인기 동영상

파라미터위치필수타입설명
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/popular"

응답 예제

{
  "data": [
    {
      "id": "BV1ma101c0001",
      "platform": "bilibili",
      "type": "post",
      "author": {
        "id": "3255000122",
        "username": "FetchPI 哔哩站",
        "display_name": "FetchPI 哔哩站",
        "verified": true
      },
      "title": "哔哩哔哩:数据 API 实战",
      "text": "一条关于数据 API 的视频。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 18220,
        "comments": 940,
        "collects": 2100,
        "views": 480000
      },
      "attachments": [
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/bilibili-BV1ma101c0001.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/hot-searchbilibili.hot_search

Bilibili 핫서치 보드

파라미터위치필수타입설명
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/hot-search"

응답 예제

{
  "data": {
    "platform": "bilibili",
    "type": "hot_search",
    "words": [
      {
        "word": "数据开放",
        "hot_value": 4821000
      },
      {
        "word": "实体层",
        "hot_value": 3120004
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/bilibili/live/{id}bilibili.live_room

Bilibili 라이브 룸 정보

파라미터위치필수타입설명
idpath필수string비리빌리 라이브 방 id(플랫폼 네이티브 room_id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/bilibili/live/1842951234567890123"

응답 예제

{
  "data": {
    "id": "8900000000001001",
    "platform": "bilibili",
    "type": "live_room",
    "title": "直播:数据 API 问答",
    "username": "FetchPI 哔哩站",
    "display_name": "FetchPI 哔哩站",
    "status": "LIVE",
    "viewer_count": 3456,
    "cover_image_url": "https://cdn.example.com/cover/bilibili-live.jpeg",
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/users/{username}weibo.profile

웨이보 프로필

파라미터위치필수타입설명
usernamepath필수string웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/users/newdev"

응답 예제

{
  "data": {
    "id": "6605000122",
    "platform": "weibo",
    "type": "profile",
    "username": "微博数据站",
    "display_name": "微博数据站",
    "description": "微博数据开放。",
    "profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
    "verified": true,
    "created_at": "2018-06-01T00:00:00Z",
    "metrics": {
      "followers": 1288000,
      "following": 210,
      "posts": 19800
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/posts/{id}weibo.post

웨이보 게시물 상세

파라미터위치필수타입설명
idpath필수string웨이보 게시물 id(플랫폼 네이티브 status id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "5551000000001001",
    "platform": "weibo",
    "type": "post",
    "author": {
      "id": "6605000122",
      "username": "微博数据站",
      "display_name": "微博数据站",
      "verified": true
    },
    "text": "一条关于数据 API 的微博。",
    "created_at": "2026-09-17T04:34:56Z",
    "metrics": {
      "likes": 8230,
      "comments": 1204,
      "shares": 988
    },
    "attachments": [
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
      },
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/users/{username}/postsweibo.user_posts

웨이보 사용자 게시물

파라미터위치필수타입설명
usernamepath필수string웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "5551000000001001",
      "platform": "weibo",
      "type": "post",
      "author": {
        "id": "6605000122",
        "username": "微博数据站",
        "display_name": "微博数据站",
        "verified": true
      },
      "text": "一条关于数据 API 的微博。",
      "created_at": "2026-09-17T04:34:56Z",
      "metrics": {
        "likes": 8230,
        "comments": 1204,
        "shares": 988
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/posts/{id}/commentsweibo.comments

웨이보 게시물 댓글

파라미터위치필수타입설명
idpath필수string웨이보 게시물 id(플랫폼 네이티브 status id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "5551222200001001",
      "platform": "weibo",
      "type": "comment",
      "post_id": "5551000000001001",
      "author": {
        "id": "6605000200",
        "username": "微博网友",
        "display_name": "微博网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-17T05:01:22Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/posts/{id}/comments/{comment_id}/repliesweibo.comment_replies

웨이보 댓글 답글

파라미터위치필수타입설명
idpath필수string웨이보 게시물 id(플랫폼 네이티브 status id).
comment_idpath필수string대댓글을 나열할 부모 댓글 id(주평론 id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/posts/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "5551222200001001",
      "platform": "weibo",
      "type": "comment",
      "post_id": "5551000000001001",
      "author": {
        "id": "6605000200",
        "username": "微博网友",
        "display_name": "微博网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-17T05:01:22Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/posts/{id}/repostsweibo.post_reposts

웨이보 리포스트 목록

파라미터위치필수타입설명
idpath필수string웨이보 게시물 id(플랫폼 네이티브 status id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/posts/1842951234567890123/reposts"

응답 예제

{
  "data": [
    {
      "id": "5551000000001001",
      "platform": "weibo",
      "type": "post",
      "author": {
        "id": "6605000122",
        "username": "微博数据站",
        "display_name": "微博数据站",
        "verified": true
      },
      "text": "一条关于数据 API 的微博。",
      "created_at": "2026-09-17T04:34:56Z",
      "metrics": {
        "likes": 8230,
        "comments": 1204,
        "shares": 988
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/posts/{id}/likersweibo.post_likers

웨이보 좋아요 목록

파라미터위치필수타입설명
idpath필수string웨이보 게시물 id(플랫폼 네이티브 status id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/posts/1842951234567890123/likers"

응답 예제

{
  "data": [
    {
      "id": "6605000122",
      "platform": "weibo",
      "type": "profile",
      "username": "微博数据站",
      "display_name": "微博数据站",
      "description": "微博数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
      "verified": true,
      "created_at": "2018-06-01T00:00:00Z",
      "metrics": {
        "followers": 1288000,
        "following": 210,
        "posts": 19800
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/users/{username}/followersweibo.user_followers

웨이보 팔로워 목록

파라미터위치필수타입설명
usernamepath필수string웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "6605000122",
      "platform": "weibo",
      "type": "profile",
      "username": "微博数据站",
      "display_name": "微博数据站",
      "description": "微博数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
      "verified": true,
      "created_at": "2018-06-01T00:00:00Z",
      "metrics": {
        "followers": 1288000,
        "following": 210,
        "posts": 19800
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/users/{username}/followingweibo.user_following

웨이보 팔로잉 목록

파라미터위치필수타입설명
usernamepath필수string웨이보(Weibo) 사용자 어드레싱 키(숫자 uid)——업스트림은 uid로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "6605000122",
      "platform": "weibo",
      "type": "profile",
      "username": "微博数据站",
      "display_name": "微博数据站",
      "description": "微博数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
      "verified": true,
      "created_at": "2018-06-01T00:00:00Z",
      "metrics": {
        "followers": 1288000,
        "following": 210,
        "posts": 19800
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/search/postsweibo.search_posts

웨이보 게시물 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "5551000000001001",
      "platform": "weibo",
      "type": "post",
      "author": {
        "id": "6605000122",
        "username": "微博数据站",
        "display_name": "微博数据站",
        "verified": true
      },
      "text": "一条关于数据 API 的微博。",
      "created_at": "2026-09-17T04:34:56Z",
      "metrics": {
        "likes": 8230,
        "comments": 1204,
        "shares": 988
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/weibo-5551000000001001-1.jpeg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/weibo-5551000000001001-2.jpeg"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/search/usersweibo.search_users

웨이보 사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/search/users?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "6605000122",
      "platform": "weibo",
      "type": "profile",
      "username": "微博数据站",
      "display_name": "微博数据站",
      "description": "微博数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/weibo-fetchpi.jpg",
      "verified": true,
      "created_at": "2018-06-01T00:00:00Z",
      "metrics": {
        "followers": 1288000,
        "following": 210,
        "posts": 19800
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/weibo/hot-searchweibo.hot_search

웨이보 핫서치 보드

파라미터위치필수타입설명
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/weibo/hot-search"

응답 예제

{
  "data": {
    "platform": "weibo",
    "type": "hot_search",
    "words": [
      {
        "word": "数据开放",
        "hot_value": 4821000
      },
      {
        "word": "实体层",
        "hot_value": 3120004
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/users/{username}zhihu.profile

쯔후 프로필

파라미터위치필수타입설명
usernamepath필수string즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/users/newdev"

응답 예제

{
  "data": {
    "id": "9905000122",
    "platform": "zhihu",
    "type": "profile",
    "username": "fetchpi-zhihu",
    "display_name": "知乎数据答主",
    "description": "知乎数据开放。",
    "profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
    "verified": false,
    "metrics": {
      "followers": 86500,
      "following": 35,
      "posts": 128
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/answers/{id}zhihu.post

쯔후 답변 상세

파라미터위치필수타입설명
idpath필수string즈후 답변 id(즈후 게시물 면의 표준 형태).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/answers/1842951234567890123"

응답 예제

{
  "data": {
    "id": "8801000000001001",
    "platform": "zhihu",
    "type": "post",
    "author": {
      "id": "9905000122",
      "username": "fetchpi-zhihu",
      "display_name": "知乎数据答主",
      "verified": false
    },
    "title": "实体层是如何炼成的?",
    "text": "回答:结构化访问知乎内容。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 5120,
      "comments": 320
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/articles/{id}zhihu.article

쯔후 아티클 상세

파라미터위치필수타입설명
idpath필수string즈후 칼럼 기사 id.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/articles/1842951234567890123"

응답 예제

{
  "data": {
    "id": "8801000000001001",
    "platform": "zhihu",
    "type": "post",
    "author": {
      "id": "9905000122",
      "username": "fetchpi-zhihu",
      "display_name": "知乎数据答主",
      "verified": false
    },
    "title": "实体层是如何炼成的?",
    "text": "回答:结构化访问知乎内容。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 5120,
      "comments": 320
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/questions/{id}zhihu.question

쯔후 질문 상세

파라미터위치필수타입설명
idpath필수string즈후 질문 id.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/questions/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7701000000001001",
    "platform": "zhihu",
    "type": "question",
    "title": "实体层是如何炼成的?",
    "detail": "问题详情:数据 API 的实体层设计。",
    "metrics": {
      "answers": 1280,
      "followers": 8600
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/questions/{id}/answerszhihu.question_answers

쯔후 질문 답변 목록

파라미터위치필수타입설명
idpath필수string즈후 질문 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/questions/1842951234567890123/answers"

응답 예제

{
  "data": [
    {
      "id": "8801000000001001",
      "platform": "zhihu",
      "type": "post",
      "author": {
        "id": "9905000122",
        "username": "fetchpi-zhihu",
        "display_name": "知乎数据答主",
        "verified": false
      },
      "title": "实体层是如何炼成的?",
      "text": "回答:结构化访问知乎内容。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 5120,
        "comments": 320
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/users/{username}/answerszhihu.user_answers

쯔후 사용자 답변 목록

파라미터위치필수타입설명
usernamepath필수string즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/users/newdev/answers"

응답 예제

{
  "data": [
    {
      "id": "8801000000001001",
      "platform": "zhihu",
      "type": "post",
      "author": {
        "id": "9905000122",
        "username": "fetchpi-zhihu",
        "display_name": "知乎数据答主",
        "verified": false
      },
      "title": "实体层是如何炼成的?",
      "text": "回答:结构化访问知乎内容。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 5120,
        "comments": 320
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/users/{username}/articleszhihu.user_articles

쯔후 사용자 아티클 목록

파라미터위치필수타입설명
usernamepath필수string즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/users/newdev/articles"

응답 예제

{
  "data": [
    {
      "id": "8801000000001001",
      "platform": "zhihu",
      "type": "post",
      "author": {
        "id": "9905000122",
        "username": "fetchpi-zhihu",
        "display_name": "知乎数据答主",
        "verified": false
      },
      "title": "实体层是如何炼成的?",
      "text": "回答:结构化访问知乎内容。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 5120,
        "comments": 320
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/answers/{id}/commentszhihu.comments

쯔후 답변 댓글

파라미터위치필수타입설명
idpath필수string즈후 답변 id(즈후 게시물 면의 표준 형태).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/answers/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "9901222200001001",
      "platform": "zhihu",
      "type": "comment",
      "post_id": "8801000000001001",
      "author": {
        "id": "9905000200",
        "username": "zhihu-fan",
        "display_name": "知乎网友",
        "verified": false
      },
      "text": "讲得明白。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 41,
        "replies": 2
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/answers/{id}/comments/{comment_id}/replieszhihu.comment_replies

쯔후 댓글 답글

파라미터위치필수타입설명
idpath필수string즈후 답변 id(즈후 게시물 면의 표준 형태).
comment_idpath필수string대댓글을 나열할 부모 댓글 id.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/answers/1842951234567890123/comments/9901222200001001/replies"

응답 예제

{
  "data": [
    {
      "id": "9901222200001001",
      "platform": "zhihu",
      "type": "comment",
      "post_id": "8801000000001001",
      "author": {
        "id": "9905000200",
        "username": "zhihu-fan",
        "display_name": "知乎网友",
        "verified": false
      },
      "text": "讲得明白。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 41,
        "replies": 2
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/users/{username}/followerszhihu.user_followers

쯔후 팔로워 목록

파라미터위치필수타입설명
usernamepath필수string즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "9905000122",
      "platform": "zhihu",
      "type": "profile",
      "username": "fetchpi-zhihu",
      "display_name": "知乎数据答主",
      "description": "知乎数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
      "verified": false,
      "metrics": {
        "followers": 86500,
        "following": 35,
        "posts": 128
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/users/{username}/followingzhihu.user_following

쯔후 팔로잉 목록

파라미터위치필수타입설명
usernamepath필수string즈후(Zhihu) 사용자 어드레싱 키(url_token)——업스트림은 url_token으로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "9905000122",
      "platform": "zhihu",
      "type": "profile",
      "username": "fetchpi-zhihu",
      "display_name": "知乎数据答主",
      "description": "知乎数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
      "verified": false,
      "metrics": {
        "followers": 86500,
        "following": 35,
        "posts": 128
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/search/postszhihu.search_posts

쯔후 아티클 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "8801000000001001",
      "platform": "zhihu",
      "type": "post",
      "author": {
        "id": "9905000122",
        "username": "fetchpi-zhihu",
        "display_name": "知乎数据答主",
        "verified": false
      },
      "title": "实体层是如何炼成的?",
      "text": "回答:结构化访问知乎内容。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 5120,
        "comments": 320
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/search/userszhihu.search_users

쯔후 사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/search/users?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "9905000122",
      "platform": "zhihu",
      "type": "profile",
      "username": "fetchpi-zhihu",
      "display_name": "知乎数据答主",
      "description": "知乎数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/zhihu-fetchpi.jpg",
      "verified": false,
      "metrics": {
        "followers": 86500,
        "following": 35,
        "posts": 128
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/zhihu/hot-listzhihu.hot_list

쯔후 핫리스트

파라미터위치필수타입설명
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/zhihu/hot-list"

응답 예제

{
  "data": {
    "platform": "zhihu",
    "type": "hot_list",
    "items": [
      {
        "title": "实体层是如何炼成的?",
        "question_id": "7701000000001001",
        "heat": 4821000
      },
      {
        "title": "数据开放意味着什么?",
        "question_id": "7701000000001002",
        "heat": 3120004
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/threads/users/{username}threads.profile

프로필 조회

파라미터위치필수타입설명
usernamepath필수stringThreads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/users/newdev"

응답 예제

{
  "data": {
    "id": "7455000122",
    "platform": "threads",
    "type": "profile",
    "username": "fetchpi",
    "display_name": "FetchPI Threads",
    "description": "Threads 数据开放。",
    "profile_image_url": "https://cdn.example.com/avatar/threads-fetchpi.jpg",
    "verified": true,
    "created_at": "2021-07-06T00:00:00Z",
    "metrics": {
      "followers": 815000,
      "following": 310,
      "posts": 4200
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/threads/posts/{id}threads.post

게시물 조회

파라미터위치필수타입설명
idpath필수stringThreads 게시물 id(플랫폼 네이티브 pk).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7459000000001001",
    "platform": "threads",
    "type": "post",
    "author": {
      "id": "7455000122",
      "username": "fetchpi",
      "display_name": "FetchPI Threads",
      "verified": true
    },
    "text": "一条关于数据 API 的 Threads。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 12480,
      "comments": 214,
      "shares": 66,
      "views": 91000
    },
    "attachments": [
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/threads-7459000000001001-1.jpeg"
      },
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/threads-7459000000001001-2.jpeg"
      },
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/media/threads-7459000000001001.mp4"
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/threads/users/{username}/poststhreads.user_posts

사용자 게시물 목록

파라미터위치필수타입설명
usernamepath필수stringThreads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "7459000000001001",
      "platform": "threads",
      "type": "post",
      "author": {
        "id": "7455000122",
        "username": "fetchpi",
        "display_name": "FetchPI Threads",
        "verified": true
      },
      "text": "一条关于数据 API 的 Threads。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 12480,
        "comments": 214,
        "shares": 66,
        "views": 91000
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/threads-7459000000001001-1.jpeg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/threads-7459000000001001-2.jpeg"
        },
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/media/threads-7459000000001001.mp4"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/threads/users/{username}/repliesthreads.user_replies

사용자 답글 목록

파라미터위치필수타입설명
usernamepath필수stringThreads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/users/newdev/replies"

응답 예제

{
  "data": [
    {
      "id": "7458000000003001",
      "platform": "threads",
      "type": "comment",
      "post_id": "7459000000001001",
      "author": {
        "id": "7455000200",
        "username": "threads_fan",
        "display_name": null,
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/threads/users/{username}/repoststhreads.user_reposts

사용자 리포스트 목록

파라미터위치필수타입설명
usernamepath필수stringThreads 사용자 어드레싱 키——프로필은 username, 목록은 숫자 user_id로 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/users/newdev/reposts"

응답 예제

{
  "data": [
    {
      "id": "7459000000001001",
      "platform": "threads",
      "type": "post",
      "author": {
        "id": "7455000122",
        "username": "fetchpi",
        "display_name": "FetchPI Threads",
        "verified": true
      },
      "text": "一条关于数据 API 的 Threads。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 12480,
        "comments": 214,
        "shares": 66,
        "views": 91000
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/threads-7459000000001001-1.jpeg"
        },
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/threads-7459000000001001-2.jpeg"
        },
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/media/threads-7459000000001001.mp4"
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/threads/posts/{id}/commentsthreads.comments

게시물 댓글 목록

파라미터위치필수타입설명
idpath필수stringThreads 게시물 id(플랫폼 네이티브 pk).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "7458000000003001",
      "platform": "threads",
      "type": "comment",
      "post_id": "7459000000001001",
      "author": {
        "id": "7455000200",
        "username": "threads_fan",
        "display_name": null,
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 96,
        "replies": 3
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/threads/search/usersthreads.search_users

사용자 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/threads/search/users?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "7455000122",
      "platform": "threads",
      "type": "profile",
      "username": "fetchpi",
      "display_name": "FetchPI Threads",
      "description": "Threads 数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/threads-fetchpi.jpg",
      "verified": true,
      "created_at": "2021-07-06T00:00:00Z",
      "metrics": {
        "followers": 815000,
        "following": 310,
        "posts": 4200
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/users/{username}linkedin.profile

프로필 조회

파라미터위치필수타입설명
usernamepath필수stringLinkedIn 멤버 어드레싱 키: 프로필 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/users/newdev"

응답 예제

{
  "data": {
    "id": "6155000122",
    "platform": "linkedin",
    "type": "profile",
    "username": "fetchpi-linkedin",
    "display_name": "FetchPI LinkedIn",
    "description": "结构化 LinkedIn 数据。",
    "url": "https://www.linkedin.com/in/fetchpi-linkedin",
    "profile_image_url": "https://cdn.example.com/avatar/linkedin-fetchpi.jpg",
    "verified": false,
    "metrics": {
      "followers": 92000,
      "following": 4800,
      "posts": 610
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/users/{username}/postslinkedin.user_posts

사용자 게시물 목록

파라미터위치필수타입설명
usernamepath필수stringLinkedIn 멤버 어드레싱 키: 프로필 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "7255000000001001",
      "platform": "linkedin",
      "type": "post",
      "author": {
        "id": "6155000122",
        "username": "fetchpi-linkedin",
        "display_name": "FetchPI LinkedIn",
        "verified": false
      },
      "text": "一条关于数据 API 的 LinkedIn 帖子。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 3120,
        "comments": 96,
        "shares": 18
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/companies/{username}linkedin.company_profile

회사 프로필 조회

파라미터위치필수타입설명
usernamepath필수stringLinkedIn 기업 어드레싱 키: 회사 페이지 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/companies/newdev"

응답 예제

{
  "data": {
    "id": "6155000122",
    "platform": "linkedin",
    "type": "profile",
    "username": "fetchpi-linkedin",
    "display_name": "FetchPI LinkedIn",
    "description": "结构化 LinkedIn 数据。",
    "url": "https://www.linkedin.com/in/fetchpi-linkedin",
    "profile_image_url": "https://cdn.example.com/avatar/linkedin-fetchpi.jpg",
    "verified": false,
    "metrics": {
      "followers": 92000,
      "following": 4800,
      "posts": 610
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/companies/{username}/postslinkedin.company_posts

회사 게시물 목록

파라미터위치필수타입설명
usernamepath필수stringLinkedIn 기업 어드레싱 키: 회사 페이지 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/companies/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "7255000000001001",
      "platform": "linkedin",
      "type": "post",
      "author": {
        "id": "6155000122",
        "username": "fetchpi-linkedin",
        "display_name": "FetchPI LinkedIn",
        "verified": false
      },
      "text": "一条关于数据 API 的 LinkedIn 帖子。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 3120,
        "comments": 96,
        "shares": 18
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/posts/{id}linkedin.post

게시물 조회

파라미터위치필수타입설명
idpath필수stringLinkedIn 게시물 어드레싱 키: 게시물 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "7255000000001001",
    "platform": "linkedin",
    "type": "post",
    "author": {
      "id": "6155000122",
      "username": "fetchpi-linkedin",
      "display_name": "FetchPI LinkedIn",
      "verified": false
    },
    "text": "一条关于数据 API 的 LinkedIn 帖子。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 3120,
      "comments": 96,
      "shares": 18
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/posts/{id}/commentslinkedin.post_comments

게시물 댓글 목록

파라미터위치필수타입설명
idpath필수stringLinkedIn 공유 URN(퍼센트 인코딩)——upstream urn 쿼리로 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "7258000000002001",
      "platform": "linkedin",
      "type": "comment",
      "post_id": "7255000000001001",
      "author": {
        "id": "6155000200",
        "username": "linkedin-fan",
        "display_name": "LinkedIn 网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 12,
        "replies": 1
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/jobs/{id}linkedin.job

채용 상세 조회

파라미터위치필수타입설명
idpath필수stringLinkedIn 채용 어드레싱 키: 채용 URL을 퍼센트 인코딩한 값——upstream url 쿼리로 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/jobs/1842951234567890123"

응답 예제

{
  "data": {
    "id": "6257000000001001",
    "platform": "linkedin",
    "type": "job",
    "title": "数据平台工程师",
    "company": "FetchPI",
    "location": "Remote",
    "description": "数据平台工程师职位。",
    "employment_type": "FULL_TIME",
    "posted_at": "2026-09-15T11:20:00Z",
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/linkedin/search/jobslinkedin.search_jobs

채용 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/linkedin/search/jobs?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "6257000000001001",
      "platform": "linkedin",
      "type": "job",
      "title": "数据平台工程师",
      "company": "FetchPI",
      "location": "Remote",
      "description": "数据平台工程师职位。",
      "employment_type": "FULL_TIME",
      "posted_at": "2026-09-15T11:20:00Z",
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/telegram/channels/{username}telegram.profile

채널 정보 조회

파라미터위치필수타입설명
usernamepath필수string텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/telegram/channels/newdev"

응답 예제

{
  "data": {
    "id": "8355000122",
    "platform": "telegram",
    "type": "profile",
    "username": "fetchpi_tg",
    "display_name": "FetchPI 频道",
    "description": "Telegram 频道数据开放。",
    "profile_image_url": "https://cdn.example.com/avatar/telegram-fetchpi_tg.jpg",
    "verified": false,
    "metrics": {
      "followers": 230000,
      "following": 0,
      "posts": 5100
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/telegram/channels/{username}/poststelegram.user_posts

채널 게시물 목록

파라미터위치필수타입설명
usernamepath필수string텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/telegram/channels/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "8359000000001002",
      "platform": "telegram",
      "type": "post",
      "author": {
        "id": "8355000122",
        "username": "fetchpi_tg",
        "display_name": "FetchPI 频道",
        "verified": false
      },
      "text": "频道消息:数据 API 发布。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 0,
        "comments": 2,
        "shares": 120,
        "views": 51000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/telegram/channels/{username}/posts/{id}telegram.post

게시물 조회

파라미터위치필수타입설명
usernamepath필수string텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다.
idpath필수string텔레그램 메시지 id(upstream post_id 쿼리).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/telegram/channels/newdev/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "8359000000001002",
    "platform": "telegram",
    "type": "post",
    "author": {
      "id": "8355000122",
      "username": "fetchpi_tg",
      "display_name": "FetchPI 频道",
      "verified": false
    },
    "text": "频道消息:数据 API 发布。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 0,
      "comments": 2,
      "shares": 120,
      "views": 51000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/telegram/channels/{username}/posts/{id}/commentstelegram.comments

게시물 댓글 목록

파라미터위치필수타입설명
usernamepath필수string텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다.
idpath필수string텔레그램 메시지 id(upstream post_id 쿼리).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/telegram/channels/newdev/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "8358000000002001",
      "platform": "telegram",
      "type": "comment",
      "post_id": "8359000000001002",
      "author": {
        "id": "8355000200",
        "username": "tg_fan",
        "display_name": "TG 网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 8,
        "replies": 0
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/telegram/channels/{username}/search/poststelegram.search_posts

채널 내 검색

파라미터위치필수타입설명
usernamepath필수string텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다.
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/telegram/channels/newdev/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "8359000000001002",
      "platform": "telegram",
      "type": "post",
      "author": {
        "id": "8355000122",
        "username": "fetchpi_tg",
        "display_name": "FetchPI 频道",
        "verified": false
      },
      "text": "频道消息:数据 API 发布。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 0,
        "comments": 2,
        "shares": 120,
        "views": 51000
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/telegram/channels/{username}/similartelegram.similar_channels

유사 채널 목록

파라미터위치필수타입설명
usernamepath필수string텔레그램 채널 어드레싱 키(채널 핸들)——upstream channel 쿼리로 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/telegram/channels/newdev/similar"

응답 예제

{
  "data": [
    {
      "id": "8355000122",
      "platform": "telegram",
      "type": "profile",
      "username": "fetchpi_tg",
      "display_name": "FetchPI 频道",
      "description": "Telegram 频道数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/telegram-fetchpi_tg.jpg",
      "verified": false,
      "metrics": {
        "followers": 230000,
        "following": 0,
        "posts": 5100
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/users/{username}pipixia.profile

프로필 조회

파라미터위치필수타입설명
usernamepath필수string피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/users/newdev"

응답 예제

{
  "data": {
    "id": "9255000122",
    "platform": "pipixia",
    "type": "profile",
    "username": "皮皮虾数据站",
    "display_name": "皮皮虾数据站",
    "description": "皮皮虾数据开放。",
    "profile_image_url": "https://cdn.example.com/avatar/pipixia-fetchpi.jpg",
    "verified": false,
    "created_at": "2021-06-30T17:33:20Z",
    "metrics": {
      "followers": 456000,
      "following": 64,
      "posts": 1320
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/users/{username}/postspipixia.user_posts

사용자 작품 목록

파라미터위치필수타입설명
usernamepath필수string피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/users/newdev/posts"

응답 예제

{
  "data": [
    {
      "id": "9259000000001001",
      "platform": "pipixia",
      "type": "post",
      "author": {
        "id": "9255000122",
        "username": "皮皮虾数据站",
        "display_name": "皮皮虾数据站",
        "verified": false
      },
      "title": "皮皮虾:数据 API 实战",
      "text": "一条关于数据 API 的作品。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 21000,
        "comments": 158,
        "shares": 74,
        "views": 780000
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
        },
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
          "duration_ms": 45000
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/users/{username}/followerspipixia.user_followers

팔로워 목록

파라미터위치필수타입설명
usernamepath필수string피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/users/newdev/followers"

응답 예제

{
  "data": [
    {
      "id": "9255000122",
      "platform": "pipixia",
      "type": "profile",
      "username": "皮皮虾数据站",
      "display_name": "皮皮虾数据站",
      "description": "皮皮虾数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/pipixia-fetchpi.jpg",
      "verified": false,
      "created_at": "2021-06-30T17:33:20Z",
      "metrics": {
        "followers": 456000,
        "following": 64,
        "posts": 1320
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/users/{username}/followingpipixia.user_following

팔로잉 목록

파라미터위치필수타입설명
usernamepath필수string피피샤(Pipixia) 사용자 어드레싱 키(숫자 user_id)——업스트림은 user_id로 사용자를 지정하므로 값은 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/users/newdev/following"

응답 예제

{
  "data": [
    {
      "id": "9255000122",
      "platform": "pipixia",
      "type": "profile",
      "username": "皮皮虾数据站",
      "display_name": "皮皮虾数据站",
      "description": "皮皮虾数据开放。",
      "profile_image_url": "https://cdn.example.com/avatar/pipixia-fetchpi.jpg",
      "verified": false,
      "created_at": "2021-06-30T17:33:20Z",
      "metrics": {
        "followers": 456000,
        "following": 64,
        "posts": 1320
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/posts/{id}pipixia.post

작품 조회

파라미터위치필수타입설명
idpath필수string피피샤 작품 id(플랫폼 네이티브 cell id).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/posts/1842951234567890123"

응답 예제

{
  "data": {
    "id": "9259000000001001",
    "platform": "pipixia",
    "type": "post",
    "author": {
      "id": "9255000122",
      "username": "皮皮虾数据站",
      "display_name": "皮皮虾数据站",
      "verified": false
    },
    "title": "皮皮虾:数据 API 实战",
    "text": "一条关于数据 API 的作品。",
    "created_at": "2026-09-16T11:20:00Z",
    "metrics": {
      "likes": 21000,
      "comments": 158,
      "shares": 74,
      "views": 780000
    },
    "attachments": [
      {
        "type": "photo",
        "url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
      },
      {
        "type": "video",
        "preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
        "duration_ms": 45000
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/posts/{id}/commentspipixia.comments

작품 댓글 목록

파라미터위치필수타입설명
idpath필수string피피샤 작품 id(플랫폼 네이티브 cell id).
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/posts/1842951234567890123/comments"

응답 예제

{
  "data": [
    {
      "id": "9258000000002001",
      "platform": "pipixia",
      "type": "comment",
      "post_id": "9259000000001001",
      "author": {
        "id": "9255000200",
        "username": "皮皮虾网友",
        "display_name": "皮皮虾网友",
        "verified": false
      },
      "text": "讲得清楚,赞。",
      "created_at": "2026-09-16T12:01:22Z",
      "metrics": {
        "likes": 22,
        "replies": 1
      },
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/search/postspipixia.search_posts

작품 검색

파라미터위치필수타입설명
qquery필수string검색 키워드.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

응답

200정규화된 응답입니다(구조는 아래 스키마 참조).

404 — 캐시 전용 모드에서 결과가 없으면 검색을 사용할 수 없습니다.

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/search/posts?q=fetchpi"

응답 예제

{
  "data": [
    {
      "id": "9259000000001001",
      "platform": "pipixia",
      "type": "post",
      "author": {
        "id": "9255000122",
        "username": "皮皮虾数据站",
        "display_name": "皮皮虾数据站",
        "verified": false
      },
      "title": "皮皮虾:数据 API 实战",
      "text": "一条关于数据 API 的作品。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 21000,
        "comments": 158,
        "shares": 74,
        "views": 780000
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
        },
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
          "duration_ms": 45000
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "query": "数据",
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 300,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/hashtags/{tag}pipixia.hashtag

해시태그 조회

파라미터위치필수타입설명
tagpath필수string피피샤 해시태그 id——upstream hashtag_id 쿼리로 그대로 전달됩니다.
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/hashtags/trending"

응답 예제

{
  "data": {
    "id": "9257000000001001",
    "platform": "pipixia",
    "type": "hashtag",
    "name": "数据开放",
    "description": "皮皮虾话题面。",
    "metrics": {
      "views": 88000000,
      "posts": 123000
    },
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/hashtags/{tag}/postspipixia.hashtag_posts

해시태그 게시물 목록

파라미터위치필수타입설명
tagpath필수string피피샤 해시태그 id——upstream hashtag_id 쿼리로 그대로 전달됩니다.
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/hashtags/trending/posts"

응답 예제

{
  "data": [
    {
      "id": "9259000000001001",
      "platform": "pipixia",
      "type": "post",
      "author": {
        "id": "9255000122",
        "username": "皮皮虾数据站",
        "display_name": "皮皮虾数据站",
        "verified": false
      },
      "title": "皮皮虾:数据 API 实战",
      "text": "一条关于数据 API 的作品。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 21000,
        "comments": 158,
        "shares": 74,
        "views": 780000
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
        },
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
          "duration_ms": 45000
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/homefeedpipixia.homefeed

홈 피드 조회

파라미터위치필수타입설명
limitquery선택integer = 20페이지 크기(1–100, 기본값 20).
cursorquery선택string이전 응답의 next_cursor(불투명한 페이지네이션 커서).
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/homefeed"

응답 예제

{
  "data": [
    {
      "id": "9259000000001001",
      "platform": "pipixia",
      "type": "post",
      "author": {
        "id": "9255000122",
        "username": "皮皮虾数据站",
        "display_name": "皮皮虾数据站",
        "verified": false
      },
      "title": "皮皮虾:数据 API 实战",
      "text": "一条关于数据 API 的作品。",
      "created_at": "2026-09-16T11:20:00Z",
      "metrics": {
        "likes": 21000,
        "comments": 158,
        "shares": 74,
        "views": 780000
      },
      "attachments": [
        {
          "type": "photo",
          "url": "https://cdn.example.com/images/pipixia-9259000000001001-1.jpeg"
        },
        {
          "type": "video",
          "preview_image_url": "https://cdn.example.com/cover/pipixia-9259000000001001.jpeg",
          "duration_ms": 45000
        }
      ],
      "fetched_at": "2026-09-21T09:00:00Z"
    }
  ],
  "next_cursor": null,
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 200,
      "cache_hit": false
    }
  }
}
GET/v1/pipixia/hot-searchpipixia.hot_search

핫서치 조회

파라미터위치필수타입설명
max_agequery선택integer이 초 이내의 데이터만 허용합니다. freshness가 우선합니다.
freshnessquery선택cache | default | live = default신선도 모드: cache(업스트림 요청 없음), default, live(추가 과금 가능).

요청 예제

curl -H "Authorization: Bearer $FETCHPI_API_KEY" \
  "https://fetchpi.com/v1/pipixia/hot-search"

응답 예제

{
  "data": {
    "platform": "pipixia",
    "type": "hot_search",
    "words": [
      {
        "word": "数据开放",
        "hot_value": 4821000
      },
      {
        "word": "实体层",
        "hot_value": 3120004
      }
    ],
    "fetched_at": "2026-09-21T09:00:00Z"
  },
  "meta": {
    "request_id": "req_01HTXQ8Z9HTQ",
    "freshness": {
      "mode": "default",
      "age_seconds": 0,
      "source_layer": "upstream",
      "stale": false
    },
    "billing": {
      "amount_credits": 100,
      "cache_hit": false
    }
  }
}