# 유튜브 채널 조회



유튜브 채널의 이름·핸들·구독자 수·소개와 영상·쇼츠·라이브·재생목록 탭의 목록을 조회합니다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/youtube_channel 응답 필드

- `data` (object): 조회 데이터

- `data.channel` (object): 채널 정보

- `data.channel.id` (string): 채널 ID

- `data.channel.name` (string): 채널 이름

- `data.channel.url` (string): 채널 주소

- `data.channel.handle` (string): 채널 핸들(@아이디). 없으면 null null 허용.

- `data.channel.description` (string): 채널 소개

- `data.channel.follower_count` (integer): 구독자 수. 비공개이면 null null 허용.

- `data.channel.is_verified` (boolean): 인증 채널 여부

- `data.channel.tags` (array): 채널 키워드

- `data.channel.thumbnail` (string): 채널 프로필 이미지 주소. 없으면 null null 허용.

- `data.tab` (string): 조회한 탭

- `data.count` (integer): 이번 응답에 담긴 항목 수

- `data.items` (array): 탭 항목 목록. 영상·쇼츠·라이브 탭은 video·short 항목, 재생목록 탭은 playlist 항목입니다(형식은 유튜브 검색 결과와 같음).

- `data.items[].type` (string): 아래 하위 항목을 확인하세요.

- `data.items[].id` (string): 아래 하위 항목을 확인하세요.

- `data.items[].url` (string): 아래 하위 항목을 확인하세요.

- `data.items[].title` (string): 아래 하위 항목을 확인하세요.

- `data.items[].description` (undefined): 아래 하위 항목을 확인하세요. null 허용.

- `data.items[].duration` (integer): 아래 하위 항목을 확인하세요.

- `data.items[].view_count` (integer): 아래 하위 항목을 확인하세요.

- `data.items[].live_status` (undefined): 아래 하위 항목을 확인하세요. null 허용.

- `data.items[].published_at` (undefined): 아래 하위 항목을 확인하세요. null 허용.

- `data.items[].channel` (object): 아래 하위 항목을 확인하세요.

- `data.items[].channel.id` (string): 아래 하위 항목을 확인하세요.

- `data.items[].channel.name` (string): 아래 하위 항목을 확인하세요.

- `data.items[].channel.url` (string): 아래 하위 항목을 확인하세요.

- `data.items[].channel.handle` (string): 아래 하위 항목을 확인하세요.

- `data.items[].thumbnail` (string): 아래 하위 항목을 확인하세요.

- `data.success` (integer): 과금 여부0: 실패1: 성공

- `api` (object): API 호출 공통 데이터

- `api.success` (boolean): API 서버 정상 응답 여부

- `api.cost` (integer): API 호출 요금

- `api.pl_id` (integer): API 결제 로그 ID

- `api.ms` (integer): API 응답 시간

## API 요청: POST /rest/youtube_channel



### 입력

- `channel` (string, 필수): 채널 URL, 핸들(@이름) 또는 채널 ID(UC...)

- `tab` (string, 선택): 목록 탭 (기본 videos) 허용값: videos, shorts, streams, playlists

- `count` (integer, 선택): 가져올 항목 수 1~100 (기본 30)



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "channel": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "채널 ID"
            },
            "name": {
              "type": "string",
              "description": "채널 이름"
            },
            "url": {
              "type": "string",
              "description": "채널 주소"
            },
            "handle": {
              "type": "string",
              "description": "채널 핸들(@아이디). 없으면 null",
              "nullable": true
            },
            "description": {
              "type": "string",
              "description": "채널 소개"
            },
            "follower_count": {
              "type": "integer",
              "description": "구독자 수. 비공개이면 null",
              "nullable": true
            },
            "is_verified": {
              "type": "boolean",
              "description": "인증 채널 여부"
            },
            "tags": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "채널 키워드"
            },
            "thumbnail": {
              "type": "string",
              "description": "채널 프로필 이미지 주소. 없으면 null",
              "nullable": true
            }
          },
          "description": "채널 정보"
        },
        "tab": {
          "type": "string",
          "description": "조회한 탭"
        },
        "count": {
          "type": "integer",
          "description": "이번 응답에 담긴 항목 수"
        },
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "title": {
                "type": "string"
              },
              "description": {
                "nullable": true
              },
              "duration": {
                "type": "integer"
              },
              "view_count": {
                "type": "integer"
              },
              "live_status": {
                "nullable": true
              },
              "published_at": {
                "nullable": true
              },
              "channel": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "name": {
                    "type": "string"
                  },
                  "url": {
                    "type": "string"
                  },
                  "handle": {
                    "type": "string"
                  }
                }
              },
              "thumbnail": {
                "type": "string"
              }
            }
          },
          "description": "탭 항목 목록. 영상·쇼츠·라이브 탭은 video·short 항목, 재생목록 탭은 playlist 항목입니다(형식은 유튜브 검색 결과와 같음)."
        },
        "success": {
          "type": "integer",
          "description": "과금 여부0: 실패1: 성공"
        }
      },
      "description": "조회 데이터"
    },
    "api": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean",
          "description": "API 서버 정상 응답 여부"
        },
        "cost": {
          "type": "integer",
          "description": "API 호출 요금"
        },
        "pl_id": {
          "type": "integer",
          "description": "API 결제 로그 ID"
        },
        "ms": {
          "type": "integer",
          "description": "API 응답 시간"
        }
      },
      "description": "API 호출 공통 데이터"
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "channel": {
      "id": "UCQNE2JmbasNYbjGAcuBiRRg",
      "name": "조코딩 JoCoding",
      "url": "https://www.youtube.com/channel/UCQNE2JmbasNYbjGAcuBiRRg",
      "handle": "@jocoding",
      "description": "누구나 배울 수 있는 쉬운 코딩 채널을 만들어가는 조코딩입니다.",
      "follower_count": 750000,
      "is_verified": true,
      "tags": [
        "코딩",
        "프로그래밍"
      ],
      "thumbnail": "https://yt3.googleusercontent.com/ytc/channel-avatar=s900"
    },
    "tab": "videos",
    "count": 1,
    "items": [
      {
        "type": "video",
        "id": "bdp9Crdw0hw",
        "url": "https://www.youtube.com/watch?v=bdp9Crdw0hw",
        "title": "AI News - Gemini 4 Argon, DevDay",
        "description": null,
        "duration": 1490,
        "view_count": 80000,
        "live_status": null,
        "published_at": null,
        "channel": {
          "id": "UCQNE2JmbasNYbjGAcuBiRRg",
          "name": "조코딩 JoCoding",
          "url": "https://www.youtube.com/channel/UCQNE2JmbasNYbjGAcuBiRRg",
          "handle": "@jocoding"
        },
        "thumbnail": "https://i.ytimg.com/vi/bdp9Crdw0hw/hq720.jpg"
      }
    ],
    "success": 1
  },
  "api": {
    "success": true,
    "cost": 20,
    "pl_id": 1595635,
    "ms": 3210
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/youtube_channel' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form 'channel=@jocoding' \
  --form-string 'tab=videos' \
  --form-string 'count=1'

```

### Node.js (서버 ESM)

```javascript

import { readFile } from "node:fs/promises";
const form = new FormData();
form.append("channel", new Blob([await readFile("jocoding")]), "jocoding");
form.append("tab", "videos");
form.append("count", "1");
const response = await fetch("https://apick.app/rest/youtube_channel", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const result = await response.json();
console.log(result);

```

### python

```python

import os
import requests
parts = [
    ("channel", ("jocoding", open("jocoding", "rb"))),
    ("tab", (None, "videos")),
    ("count", (None, "1")),
]
response = requests.request("POST", "https://apick.app/rest/youtube_channel",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'channel' => new CURLFile('jocoding'),
    'tab' => 'videos',
    'count' => '1',
];
$curl = curl_init('https://apick.app/rest/youtube_channel');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);

```

## 코드·오류

## 상세 기능·요금

Method URL POST https://apick.app/rest/youtube_channel API 호출 요청 요청하기 Key Value channel tab count 응답

## 상세 요청

Header 이름 필수 설명 Authorization O Bearer 인증키

## 상세 응답

Body 이름 타입 설명 data Object 조회 데이터 channel Object 채널 정보 id String 채널 ID name String 채널 이름 url String 채널 주소 handle String 채널 핸들(@아이디). 없으면 null description String 채널 소개 follower_count Integer 구독자 수. 비공개이면 null is_verified Boolean 인증 채널 여부 tags Array 채널 키워드 thumbnail String 채널 프로필 이미지 주소. 없으면 null tab String 조회한 탭 count Integer 이번 응답에 담긴 항목 수 items Array 탭 항목 목록. 영상·쇼츠·라이브 탭은 video·short 항목, 재생목록 탭은 playlist 항목입니다(형식은 유튜브 검색 결과와 같음). success Integer 과금 여부0: 실패1: 성공 api Object API 호출 공통 데이터 success Boolean API 서버 정상 응답 여부 cost Integer API 호출 요금 ms Integer API 응답 시간 pl_id Integer API 결제 로그 ID

## 상세 코드·정책

오류 HTTP 상태 코드 HTTP 상황 설명 400 입력 오류 channel, tab, count 값을 확인하세요. 404 채널 없음 없는 채널이거나 잘못된 주소·핸들입니다. 408 시간 초과 처리 시간이 초과됐습니다. 과금하지 않습니다. 424 조회 불가 일시적으로 가져오지 못했습니다. 잠시 후 다시 시도해 주세요. 실패한 호출은 과금하지 않습니다.

## 상세 예제

요청 예시 form-data 전체 예제 보기 응답 예시 { "data": { "channel": { "id": "UCQNE2JmbasNYbjGAcuBiRRg", "name": "조코딩 JoCoding", "url": "https://www.youtube.com/channel/UCQNE2JmbasNYbjGAcuBiRRg", "handle": "@jocoding", "description": "누구나 배울 수 있는 쉬운 코딩 채널을 만들어가는 조코딩입니다.", "follower_count": 750000, "is_verified": true, "tags": [ "코딩", "프로그래밍" ], "thumbnail": "https://yt3.googleusercontent.com/ytc/channel-avatar=s900" }, "tab": "videos", "count": 1, "items": [ { "type": "video", "id": "bdp9Crdw0hw", "url": "https://www.youtube.com/watch?v=bdp9Crdw0hw", "title": "AI News - Gemini 4 Argon, DevDay", "description": null, "duration": 1490, "view_count": 80000, "live_status": null, "published_at": null, "channel": { "id": "UCQNE2JmbasNYbjGAcuBiRRg", "name": "조코딩 JoCoding", "url": "https://www.youtube.com/channel/UCQNE2JmbasNYbjGAcuBiRRg", "handle": "@jocoding" }, "thumbnail": "https://i.ytimg.com/vi/bdp9Crdw0hw/hq720.jpg" } ], "success": 1 }, "api": { "success": true, "cost": 20, "pl_id": 1595635, "ms": 3210 } }
