Search YouTube videos, channels, playlists and shorts
import { Stophy } from "stophy";
const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });
const result = await stophy.youtube.search({ query: "rust tutorial" });
console.log(result.data.results);
from stophy import Stophy
stophy = Stophy() # reads STOPHY_API_KEY
result = stophy.youtube.search(query="rust tutorial")
print(result["data"]["results"])
curl -X POST https://api.stophy.dev/v1/youtube/search \
-H "Authorization: Bearer $STOPHY_API_KEY" \
-H "content-type: application/json" \
-d '{"query":"rust tutorial"}'
stophy youtube search "rust tutorial"
{
"success": true,
"data": {
"results": [
{
"type": "video",
"id": "Wc0ZJo06oAw",
"url": "https://www.youtube.com/watch?v=Wc0ZJo06oAw",
"title": "The Ultimate Rust Beginners Guide (2026)",
"channel": {
"id": "UCt6XPuD8u3YjvybuT-Xnj5A",
"username": "SBJake",
"name": "SBJake",
"url": "https://www.youtube.com/channel/UCt6XPuD8u3YjvybuT-Xnj5A"
},
"durationSeconds": 422,
"views": 543208,
"thumbnail": "https://i.ytimg.com/vi/Wc0ZJo06oAw/hqdefault.jpg",
"isShort": false,
"isLive": false,
"createdAt": "2025-09-28T13:19:10.000Z"
},
{
"type": "video",
"id": "5C_HPTJg5ek",
"url": "https://www.youtube.com/watch?v=5C_HPTJg5ek",
"title": "Rust in 100 Seconds",
"channel": {
"id": "UCsBjURrPoezykLs9EqgamOA",
"username": "Fireship",
"name": "Fireship",
"url": "https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA"
},
"durationSeconds": 149,
"views": 2518131,
"thumbnail": "https://i.ytimg.com/vi/5C_HPTJg5ek/hqdefault.jpg",
"isShort": false,
"isLive": false,
"createdAt": "2022-09-28T19:51:34.000Z"
}
]
},
"creditsUsed": 0,
"requestId": "5fb0898a-3983-4f30-ae3e-3146c406ccd1"
}
Endpoints
More ways to call it
Get a video’s transcript, with optional timestamps
import { Stophy } from "stophy";
const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });
const result = await stophy.youtube.transcript({ video: "dQw4w9WgXcQ" });
console.log(result.data.text);
from stophy import Stophy
stophy = Stophy() # reads STOPHY_API_KEY
result = stophy.youtube.transcript(video="dQw4w9WgXcQ")
print(result["data"]["text"])
curl -X POST https://api.stophy.dev/v1/youtube/transcript \
-H "Authorization: Bearer $STOPHY_API_KEY" \
-H "content-type: application/json" \
-d '{"video":"dQw4w9WgXcQ"}'
stophy youtube transcript dQw4w9WgXcQ
Get a profile’s bio and stats
import { Stophy } from "stophy";
const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });
const result = await stophy.tiktok.profile({ user: "khaby.lame" });
console.log(result.data.profile);
from stophy import Stophy
stophy = Stophy() # reads STOPHY_API_KEY
result = stophy.tiktok.profile(user="khaby.lame")
print(result["data"]["profile"])
curl -X POST https://api.stophy.dev/v1/tiktok/profile \
-H "Authorization: Bearer $STOPHY_API_KEY" \
-H "content-type: application/json" \
-d '{"user":"khaby.lame"}'
stophy tiktok profile khaby.lame
Get a channel’s info and stats
import { Stophy } from "stophy";
const stophy = new Stophy({ apiKey: process.env.STOPHY_API_KEY });
const result = await stophy.kick.channel({ channel: "xqc" });
console.log(result.data.channel);
from stophy import Stophy
stophy = Stophy() # reads STOPHY_API_KEY
result = stophy.kick.channel(channel="xqc")
print(result["data"]["channel"])
curl -X POST https://api.stophy.dev/v1/kick/channel \
-H "Authorization: Bearer $STOPHY_API_KEY" \
-H "content-type: application/json" \
-d '{"channel":"xqc"}'
stophy kick channel xqc
YouTube search, YouTube transcripts, and web search work without a key. Every other endpoint on this page needs one.