YouTube Channel Videos API
curl --request POST \
--url https://api.socq.ai/v1/youtube/channel-videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"results_limit": 1000
}
'import requests
url = "https://api.socq.ai/v1/youtube/channel-videos"
payload = {
"urls": ["<string>"],
"results_limit": 1000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], results_limit: 1000})
};
fetch('https://api.socq.ai/v1/youtube/channel-videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/youtube/channel-videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'results_limit' => 1000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/youtube/channel-videos"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/youtube/channel-videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/youtube/channel-videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}YouTube Channel Videos
Collect public videos from YouTube channels.
POST
/
v1
/
youtube
/
channel-videos
YouTube Channel Videos API
curl --request POST \
--url https://api.socq.ai/v1/youtube/channel-videos \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"urls": [
"<string>"
],
"results_limit": 1000
}
'import requests
url = "https://api.socq.ai/v1/youtube/channel-videos"
payload = {
"urls": ["<string>"],
"results_limit": 1000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({urls: ['<string>'], results_limit: 1000})
};
fetch('https://api.socq.ai/v1/youtube/channel-videos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/youtube/channel-videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'urls' => [
'<string>'
],
'results_limit' => 1000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/youtube/channel-videos"
payload := strings.NewReader("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/youtube/channel-videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/youtube/channel-videos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"urls\": [\n \"<string>\"\n ],\n \"results_limit\": 1000\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}YouTube Channel Videos
Collect regular videos from one or more public channels.{
"urls": ["https://www.youtube.com/@example"],
"results_limit": 100
}
Use with MCP
| Interface | Value |
|---|---|
| REST | POST /v1/youtube/channel-videos |
| Compact MCP | socq_execute with endpoint: "youtube/channel-videos" |
| Typed MCP | socq_youtube_channel_videos |
| Exact-tool URL | https://api.socq.ai/mcp?tools=youtube_channel_videos |
| CLI | socq youtube channel-videos |
input object for socq_execute, or pass the same fields directly to the typed tool. Typed tools also accept _wait_seconds, _result_limit, and _idempotency_key.
A successful collection returns a
task_id. Continue with socq_get_task until the task succeeds, then read normalized records from results.items.results_limit defaults to 100 and applies to each channel URL.
Results use the normalized video structure documented in YouTube Videos, with resource set to channel-videos.
Result Fields
Task results use the stable SocQ fields below. Source-specific field names and formats are normalized without inferring or enriching values that the source did not provide. To request a smaller field set, usefields for MCP queries, _result_fields for typed tools, or --result-fields in the CLI. Declared fields remain present when their value is null.
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this result item. |
platform | string | No | Platform the result belongs to, such as instagram or linkedin. |
resource | string | No | SocQ resource represented by the result, such as videos or comments. |
type | string | No | Category of the result item, such as video, post, or comment. |
url | string | Yes | Public URL of the result item when available. |
published_at | string | Yes | Time the source item was published, in ISO 8601 format when available. |
collected_at | string | No | Time SocQ collected or processed this result, in ISO 8601 format. |
text | string | Yes | Video caption or description. |
author | object | Yes | Author or publisher of the content. |
author.id | string | Yes | Unique identifier of the author. |
author.username | string | Yes | Public username or handle of the account. |
author.name | string | Yes | Display name of the author. |
author.url | string | Yes | Public URL of the author when available. |
author.avatar_url | string | Yes | URL of the account avatar image. |
author.is_verified | boolean | Yes | Whether the account is verified on the platform. |
author.is_private | boolean | Yes | Whether the account is private. |
metrics | object | Yes | Counters and measurements available for the result item. |
metrics.likes_count | integer | Yes | Number of likes. |
metrics.comments_count | integer | Yes | Number of comments. |
metrics.shares_count | integer | Yes | Number of shares or reposts. |
metrics.plays_count | integer | Yes | Number of video playback starts reported by the platform. |
metrics.views_count | integer | Yes | Number of views reported by the platform. |
media | array<object> | Yes | Images, videos, or other media attached to the result. |
media.type | string | Yes | Media kind, such as image or video. |
media.url | string | Yes | URL of the media asset. |
media.thumbnail_url | string | Yes | URL of the media preview image. |
media.width | integer | Yes | Media width in pixels. |
media.height | integer | Yes | Media height in pixels. |
media.duration_seconds | number | Yes | Media duration in seconds. |
hashtags | array<string> | Yes | Hashtags associated with the content, without changing their source spelling. |
mentions | array<string> | Yes | Accounts mentioned in the content. |
shortcode | string | Yes | Platform shortcode used to identify the media item. |
duration_seconds | number | Yes | Duration in seconds. |
audio | object | Yes | Audio or music metadata associated with the video. |
audio.id | string | Yes | Identifier of the audio or music track. |
audio.title | string | Yes | Title of the audio or music track. |
audio.artist | string | Yes | Name of the audio artist or creator. |
audio.url | string | Yes | URL of the audio or music track when available. |
Completed Task Response
{
"code": 200,
"data": {
"task_id": "E4O8BVIRP55GBD4P",
"status": "succeeded",
"public_id": "youtube/channel-videos",
"result_count": 5,
"credits_amount": 2.5,
"results": {
"limit": 1,
"next_cursor": "OTQ0NA",
"has_more": true,
"schema_id": "reel-video",
"schema_version": "1.0",
"items": [
{
"id": "C0H9gGqAGxo",
"platform": "youtube",
"resource": "channel-videos",
"type": "video",
"url": "https://www.youtube.com/watch?v=C0H9gGqAGxo",
"published_at": "2026-07-29T15:58:06Z",
"collected_at": "2026-07-31T02:28:03.221505Z",
"text": "HONEY! Fresh off her new single “ROCKSTAR,” global drag icon and musical artist @pabllovittar is opening her YouTube Watch History for the very first time! \n\nShe takes us on an unfiltered tour of what she is watching, revealing the videos that inspire everything from her upcoming album “LOST IN LUST” to her KILLER QUEEN moves in Fortnite. From stanning BLACKPINK, to true crime deep dives with Jaqueline Guerreiro, to incredible drag beauty secrets from Plastique Tiara, Pabllo’s Watch HIstory is EVERYTHING. Plus, Pabllo opens up about the power of Brazilian drag culture and reflects on her iconic performance with her “mama” Madonna. \n\nFeatured Creators:\n@pabllovittar \n@BLACKPINK \n@ChakraFrequenciesMusic \n@DragBrunchBrasil \n@giantfoodmaker \n@JaquelineGuerreiroOficial \n@kingjoe83 \n@missfamenyc \n@PlastiqueTiara \n@VogueBrasil \n\nCredits: \n\nCreated & Produced by Somehow Studios\n\nCo-founder, Executive Producer: Greg T. Gordon\nCo-founder, Chief Creative Officer: Joe Sabia\nCreative Producer: Grace Lauson\nDirector, Post Production: Doug Larsen\n\nDirector: Grace Lauson\nProducer: Sam Weiser\n\nDirector of Photography: Jordan \nGaffer: \nKey Grip: \nScript Supervisor: \nPA’s: \n\nEditor: Phil \nGraphics: Louis Hamwey\n\nYouTube Team: \nJulia Templeman\nJake Wright\nMonica Honorato\nRyan Briggs\nMarly Ellis\nRed Fabbri",
"author": {
"id": "UCBR8-60-B28hp2BmDPdntcQ",
"username": "YouTube",
"name": "YouTube",
"url": "https://www.youtube.com/channel/UCBR8-60-B28hp2BmDPdntcQ",
"avatar_url": "https://yt3.googleusercontent.com/3s6evpqAiDU9tQR4sC2siJippbH2RWVPnwHgyl4V0th2iuQz0VDQZbUhQBGmsxLYo-mjG6TqZQ=s68-c-k-c0x00ffffff-no-rj",
"is_verified": true,
"is_private": null
},
"metrics": {
"likes_count": 2100,
"comments_count": 295,
"shares_count": null,
"plays_count": null,
"views_count": 21426
},
"media": [
{
"type": "image",
"url": "https://i.ytimg.com/vi/C0H9gGqAGxo/maxresdefault.jpg",
"thumbnail_url": null,
"width": null,
"height": null,
"duration_seconds": null
}
],
"hashtags": [],
"mentions": null,
"shortcode": null,
"duration_seconds": 427.0,
"audio": null
}
]
}
}
}
Authorizations
bearerAuthapiKeyAuth
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json

