개발가이드SNS 수집틱톡 키워드 영상 검색

틱톡 키워드 영상 검색 API

명세 내보내기
OpenAPI 3.0.3Postman 컬렉션Markdown

키워드·해시태그로 틱톡 영상을 최대 50개까지 검색해 조회수·좋아요·댓글·공유 수와 작성자 정보를 수집합니다.

POSThttps://apick.app/rest/tiktok_search/jobs전체 3개 경로
인증
Bearer 키
요청 형식
form-data / GET
응답
JSON
경로
3개

알아둘 점

지원 API 요약

수집 작업은 접수한 뒤 상태를 조회해 결과를 받는 흐름입니다. 접수할 때 max_results 만큼 포인트를 예약하고, 완료되면 실제로 받은 결과 건수만큼만 차감한 뒤 나머지를 바로 돌려드립니다. 대상을 찾지 못하거나 실패하면 예약한 포인트를 모두 돌려드립니다.

Method
API entry point
기능
성공 결과
POST
/rest/tiktok_search/jobs
수집 작업 접수
HTTP 202와 job_id
GET
/rest/scrape_jobs/{job_id}
작업 상태·결과 조회(무료)
HTTP 200과 현재 상태·결과

1. 작업 접수

요청 항목 · multipart/form-data
이름
타입
필수
설명
keyword
String
O
검색어 또는 해시태그 (예: 캠핑 요리, #캠핑, 1~100자)
max_results
Integer
X
최대 결과 수 1~50 (기본 10)
idempotency_key
String
X
응답을 못 받아 다시 보낼 때 같은 접수로 처리할 키. 영문·숫자·_.:-, 8~128자
진행 중인 작업은 계정당 최대 5개입니다. 공개 영상만 수집합니다. 검색 결과 순서는 틱톡 검색 순서를 따릅니다.

요청과 응답

1작업 접수
POST/rest/tiktok_search/jobs
  • Bearer 인증
  • multipart/form-data
  • JSON 응답
요청 파라미터 3개 · 필수 1
파라미터
설명
keywordstring필수
검색어 또는 해시태그 (예: 캠핑 요리, #캠핑, 1~100자)
예시
캠핑 요리
max_resultsstring선택
최대 결과 수 1~50 (기본 10). 이 수만큼 포인트를 먼저 예약하고 실제 건수만 차감
형식
^[0-9]{1,3}$
예시
10
idempotency_keystring선택
응답을 못 받아 다시 보낼 때 같은 접수로 처리할 키(8~128자, 영문·숫자·_.:-)
형식
^[A-Za-z0-9_.:-]{8,128}$
응답 필드 34개
응답 필드
설명
dataobject
아래 하위 항목을 확인하세요.
data.job_idstring
아래 하위 항목을 확인하세요.
data.productstring
아래 하위 항목을 확인하세요.
data.statusstring
아래 하위 항목을 확인하세요.
data.max_resultsinteger
아래 하위 항목을 확인하세요.
data.unit_pointinteger
아래 하위 항목을 확인하세요.
data.reserved_pointinteger
아래 하위 항목을 확인하세요.
data.charged_pointinteger
아래 하위 항목을 확인하세요.
data.result_countinteger
아래 하위 항목을 확인하세요.
data.created_atstring
아래 하위 항목을 확인하세요.
data.completed_atstring
아래 하위 항목을 확인하세요. null 허용.
data.result_expires_atstring
아래 하위 항목을 확인하세요.
data.itemsarray
아래 하위 항목을 확인하세요.
data.result_expiredboolean
아래 하위 항목을 확인하세요.
apiobject
아래 하위 항목을 확인하세요.
api.successboolean
아래 하위 항목을 확인하세요.
api.costinteger
아래 하위 항목을 확인하세요.
하위 필드 17개 더 보기
응답 필드
설명
data.items[].video_idstring
아래 하위 항목을 확인하세요.
data.items[].urlstring
아래 하위 항목을 확인하세요.
data.items[].usernamestring
아래 하위 항목을 확인하세요.
data.items[].descriptionstring
아래 하위 항목을 확인하세요.
data.items[].posted_atstring
아래 하위 항목을 확인하세요.
data.items[].viewsinteger
아래 하위 항목을 확인하세요.
data.items[].likesinteger
아래 하위 항목을 확인하세요.
data.items[].commentsinteger
아래 하위 항목을 확인하세요.
data.items[].sharesinteger
아래 하위 항목을 확인하세요.
data.items[].savesinteger
아래 하위 항목을 확인하세요.
data.items[].duration_secinteger
아래 하위 항목을 확인하세요.
data.items[].hashtagsarray
아래 하위 항목을 확인하세요.
data.items[].regionstring
아래 하위 항목을 확인하세요.
data.items[].cover_image_urlstring
아래 하위 항목을 확인하세요.
data.items[].authorobject
아래 하위 항목을 확인하세요.
data.items[].author.followersinteger
아래 하위 항목을 확인하세요.
data.items[].author.is_verifiedboolean
아래 하위 항목을 확인하세요.
2상태·목록 조회
GET/rest/scrape_jobs/5f0c2a9e7b1d4c3a8e6f90a1b2c3d4e5
  • Bearer 인증
  • 요청 본문 없음
  • JSON 응답
요청 파라미터 없음

추가 폼 항목이 없습니다. 인증 헤더만 보내면 됩니다.

응답 필드 34개
응답 필드
설명
dataobject
아래 하위 항목을 확인하세요.
data.job_idstring
아래 하위 항목을 확인하세요.
data.productstring
아래 하위 항목을 확인하세요.
data.statusstring
아래 하위 항목을 확인하세요.
data.max_resultsinteger
아래 하위 항목을 확인하세요.
data.unit_pointinteger
아래 하위 항목을 확인하세요.
data.reserved_pointinteger
아래 하위 항목을 확인하세요.
data.charged_pointinteger
아래 하위 항목을 확인하세요.
data.result_countinteger
아래 하위 항목을 확인하세요.
data.created_atstring
아래 하위 항목을 확인하세요.
data.completed_atstring
아래 하위 항목을 확인하세요. null 허용.
data.result_expires_atstring
아래 하위 항목을 확인하세요.
data.itemsarray
아래 하위 항목을 확인하세요.
data.result_expiredboolean
아래 하위 항목을 확인하세요.
apiobject
아래 하위 항목을 확인하세요.
api.successboolean
아래 하위 항목을 확인하세요.
api.costinteger
아래 하위 항목을 확인하세요.
하위 필드 17개 더 보기
응답 필드
설명
data.items[].video_idstring
아래 하위 항목을 확인하세요.
data.items[].urlstring
아래 하위 항목을 확인하세요.
data.items[].usernamestring
아래 하위 항목을 확인하세요.
data.items[].descriptionstring
아래 하위 항목을 확인하세요.
data.items[].posted_atstring
아래 하위 항목을 확인하세요.
data.items[].viewsinteger
아래 하위 항목을 확인하세요.
data.items[].likesinteger
아래 하위 항목을 확인하세요.
data.items[].commentsinteger
아래 하위 항목을 확인하세요.
data.items[].sharesinteger
아래 하위 항목을 확인하세요.
data.items[].savesinteger
아래 하위 항목을 확인하세요.
data.items[].duration_secinteger
아래 하위 항목을 확인하세요.
data.items[].hashtagsarray
아래 하위 항목을 확인하세요.
data.items[].regionstring
아래 하위 항목을 확인하세요.
data.items[].cover_image_urlstring
아래 하위 항목을 확인하세요.
data.items[].authorobject
아래 하위 항목을 확인하세요.
data.items[].author.followersinteger
아래 하위 항목을 확인하세요.
data.items[].author.is_verifiedboolean
아래 하위 항목을 확인하세요.
3상태·목록 조회
GET/rest/scrape_jobs/:job_id
  • Bearer 인증
  • 요청 본문 없음
  • JSON 응답

경로의 job_id는 앞 단계에서 받은 값으로 바꾸세요. 예제는 APICK_JOB_ID 환경변수에서 읽습니다.

요청 파라미터 없음

추가 폼 항목이 없습니다. 인증 헤더만 보내면 됩니다.

응답 필드 34개
응답 필드
설명
dataobject
아래 하위 항목을 확인하세요.
data.job_idstring
아래 하위 항목을 확인하세요.
data.productstring
아래 하위 항목을 확인하세요.
data.statusstring
아래 하위 항목을 확인하세요.
data.max_resultsinteger
아래 하위 항목을 확인하세요.
data.unit_pointinteger
아래 하위 항목을 확인하세요.
data.reserved_pointinteger
아래 하위 항목을 확인하세요.
data.charged_pointinteger
아래 하위 항목을 확인하세요.
data.result_countinteger
아래 하위 항목을 확인하세요.
data.created_atstring
아래 하위 항목을 확인하세요.
data.completed_atstring
아래 하위 항목을 확인하세요. null 허용.
data.result_expires_atstring
아래 하위 항목을 확인하세요.
data.itemsarray
아래 하위 항목을 확인하세요.
data.result_expiredboolean
아래 하위 항목을 확인하세요.
apiobject
아래 하위 항목을 확인하세요.
api.successboolean
아래 하위 항목을 확인하세요.
api.costinteger
아래 하위 항목을 확인하세요.
하위 필드 17개 더 보기
응답 필드
설명
data.items[].video_idstring
아래 하위 항목을 확인하세요.
data.items[].urlstring
아래 하위 항목을 확인하세요.
data.items[].usernamestring
아래 하위 항목을 확인하세요.
data.items[].descriptionstring
아래 하위 항목을 확인하세요.
data.items[].posted_atstring
아래 하위 항목을 확인하세요.
data.items[].viewsinteger
아래 하위 항목을 확인하세요.
data.items[].likesinteger
아래 하위 항목을 확인하세요.
data.items[].commentsinteger
아래 하위 항목을 확인하세요.
data.items[].sharesinteger
아래 하위 항목을 확인하세요.
data.items[].savesinteger
아래 하위 항목을 확인하세요.
data.items[].duration_secinteger
아래 하위 항목을 확인하세요.
data.items[].hashtagsarray
아래 하위 항목을 확인하세요.
data.items[].regionstring
아래 하위 항목을 확인하세요.
data.items[].cover_image_urlstring
아래 하위 항목을 확인하세요.
data.items[].authorobject
아래 하위 항목을 확인하세요.
data.items[].author.followersinteger
아래 하위 항목을 확인하세요.
data.items[].author.is_verifiedboolean
아래 하위 항목을 확인하세요.

응답 처리

HTTP 성공과 업무 결과를 구분하세요. 경로별 응답 필드와 예시는 위 요청과 응답에 함께 있습니다.

오류 코드

응답을 아래 순서로 확인하세요. 결과 유무와 과금 여부는 서로 다릅니다.

  1. HTTP 상태전송·인증·입력 오류
  2. api.successAPI 처리 여부
  3. data · result업무 결과와 오류 문구
  4. api.cost이번 요청의 과금
서비스 코드·조건

2. 상태·결과 조회

GET /rest/scrape_jobs/{job_id} 를 5~10초 간격으로 호출해 status 가 completed 또는 failed 가 될 때까지 확인합니다. 보통 1~3분 안에 끝납니다. 조회는 무료이며, 완료되면 이 조회에서 정산이 끝납니다.

Body (data)
이름
타입
설명
job_id
String
작업 ID (32자리). 상태·결과 조회에 씁니다
product
String
수집 상품 이름
status
String
waiting · processing · completed · failed
max_results
Integer
요청한 최대 결과 수
unit_point
Integer
결과 1건당 포인트(이 작업에 적용된 단가)
reserved_point
Integer
현재 예약 중인 포인트. 완료·실패하면 0
charged_point
Integer
최종 차감 포인트(완료 시 결과 건수 × 단가)
result_count
Integer
받은 결과 수
created_at
String
접수 시각 (ISO 8601)
completed_at
String
완료 시각. 진행 중이면 null
items
Array
수집 결과(완료 시). 각 항목의 필드는 아래 표
video_id
String
영상 ID
url
String
영상 주소
username
String
작성자 사용자명
description
String
설명
posted_at
String
게시 시각
views
Integer
조회수
likes
Integer
좋아요 수
comments
Integer
댓글 수
shares
Integer
공유 수
saves
Integer
저장 수
duration_sec
Number
영상 길이(초)
hashtags
Array
해시태그
region
String
지역 코드
cover_image_url
String
표지 이미지
author
Object
{ followers, is_verified }
result_expires_at
String
결과 보관 기한(완료 후 72시간)
result_expired
Boolean
보관 기한이 지나 결과를 지웠으면 true
error
Object
실패 시 { code, message }

오류 코드

HTTP
error_code
설명
400
SCRAPE_INPUT_INVALID
입력 형식 또는 max_results 범위 오류. 상류를 호출하지 않으며 포인트는 차감되지 않습니다
402
SCRAPE_POINTS_INSUFFICIENT
max_results 만큼의 포인트가 부족합니다
403
SCRAPE_PAYMENT_REQUIRED
충전 이력이 있는 계정만 이용할 수 있습니다
404
SCRAPE_JOB_NOT_FOUND
작업이 없거나 다른 계정의 작업입니다
409
SCRAPE_IDEMPOTENCY_CONFLICT
같은 idempotency_key 로 다른 내용을 접수했습니다
429
SCRAPE_TOO_MANY_JOBS
진행 중인 작업이 5개입니다. 끝난 뒤 다시 접수해 주세요
503
SCRAPE_TEMPORARILY_UNAVAILABLE
일시적으로 접수하지 못했습니다. 포인트는 차감되지 않습니다
작업 실패
TARGET_NOT_FOUND · TARGET_PRIVATE · SCRAPE_TIMEOUT · SCRAPE_FAILED
상태 조회의 error.code. 예약한 포인트는 모두 돌려드립니다
인증·포인트 오류 result.error 문구
코드
HTTP
의미·조치
유효하지 않은 API키 입니다.
401
Authorization: Bearer 헤더의 인증키를 확인하세요.
허용되지 않은 IP주소 입니다.
401
마이페이지의 허용 IP 설정과 요청 서버 IP를 확인하세요.
비활성화된 계정입니다.
401
계정 이용 상태를 고객지원으로 문의하세요.
사용 가능한 포인트이 부족합니다.
200
HTTP 200이어도 result.error가 있으면 실패입니다. 포인트를 충전한 뒤 다시 요청하세요. 이 응답은 과금되지 않습니다.
인증 정보를 확인할 수 없습니다.
424
일시적인 확인 실패입니다. 잠시 후 다시 시도하세요.
폼 입력 오류 error.code
코드
HTTP
의미·조치
FORM_DATA_INVALID
400
필드 이름·값의 타입·배열 인덱스를 확인하세요. 인덱스는 0부터 연속으로 사용합니다.
FORM_DATA_FIELD_CONFLICT
400
같은 값과 중첩 경로를 동시에 지정하지 마세요.
MULTIPART_LIMIT_OR_PARSE_ERROR
400·413
boundary·파일 크기·필드 개수를 확인하세요. 서비스별 제한이 우선 적용됩니다.

요금·이용 조건

기본 요금기본 단가 5P · 결과 1건당

실제 차감 금액은 응답의 api.cost로 확인하세요. 상세 요금은 요금정책에서 볼 수 있습니다.

연동 팁

  • 요청 예제의 오류 처리 포함 모드는 시간 제한과 업무 실패 판정을 함께 보여줍니다.
  • 인증키는 서버 환경변수에 두고 브라우저·앱에 넣지 마세요.
  • HTTP 성공과 업무 결과를 구분하고, 실패 응답의 오류 문구를 그대로 기록하세요.
추가 예제·서비스별 연동 안내
접수 응답 (HTTP 202)

{
    "data": {
        "job_id": "5f0c2a9e7b1d4c3a8e6f90a1b2c3d4e5",
        "product": "tiktok_search",
        "status": "processing",
        "max_results": 10,
        "unit_point": 5,
        "reserved_point": 50,
        "charged_point": 0,
        "result_count": 0,
        "created_at": "2026-10-06T10:00:00.000Z",
        "completed_at": null
    },
    "api": {
        "success": true,
        "cost": 50
    }
}
            
완료 응답 (HTTP 200)

{
    "data": {
        "job_id": "5f0c2a9e7b1d4c3a8e6f90a1b2c3d4e5",
        "product": "tiktok_search",
        "status": "completed",
        "max_results": 10,
        "unit_point": 5,
        "reserved_point": 0,
        "charged_point": 5,
        "result_count": 1,
        "created_at": "2026-10-06T10:00:00.000Z",
        "completed_at": "2026-10-06T10:01:12.000Z",
        "result_expires_at": "2026-10-09T10:01:12.000Z",
        "items": [
            {
                "video_id": "7473282881658309895",
                "url": "https://www.tiktok.com/@camper.muka/video/7473282881658309895",
                "username": "camper.muka",
                "description": "이번 주 캠핑요리 종결해드릴게요 ...",
                "posted_at": "2026-02-20T09:00:00.000Z",
                "views": 120000,
                "likes": 5400,
                "comments": 88,
                "shares": 120,
                "saves": 900,
                "duration_sec": 59,
                "hashtags": [
                    "캠핑요리"
                ],
                "region": "KR",
                "cover_image_url": "https://p16-sign.tiktokcdn.com/...",
                "author": {
                    "followers": 45000,
                    "is_verified": false
                }
            }
        ],
        "result_expired": false
    },
    "api": {
        "success": true,
        "cost": 0
    }
}
            

개발가이드 검색

API 이름·경로·파라미터·오류 코드로 찾을 수 있습니다.

표시 가격은 기본 단가입니다. 상세 과금 조건은 각 가이드에서 확인하세요.