ScrapeMole
Home / Catalog / YouTube playlist

YouTube playlist API

Use when you need the contents of a YouTube playlist (course, series, music or channel uploads playlist): up to 100 videos in playlist order with title, channel, duration and thumbnail, plus playlist title, description and total video count. Accepts a playlist URL or ID (PL…, UU…, OL…). $0.005 per successful call; private/missing playlists and errors are not charged.

Call it →openapi.jsonLive on Base$0.005 USDC per successful call

Parameters

GET https://scrapemole-api-mainnet.scrapemole.workers.dev/v1/youtube/playlist

NameRequiredDescription
playlistyesPlaylist URL (…?list=…) or playlist ID.
limitnoMax videos (1-100).
Default: 50
langnoInterface language (hl), e.g. en, de.
countrynoCountry (gl), e.g. US, GB.

Call it

// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig, decodePaymentResponseHeader } from '@x402/fetch';
import { ExactEvmScheme } from '@x402/evm';
import { privateKeyToAccount } from 'viem/accounts';

// Your agent's own wallet, holding a little USDC on Base. No ScrapeMole account or API key.
const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY);
const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: 'eip155:8453', client: new ExactEvmScheme(account) }],
});

// On 402 the wrapper signs the USDC authorization and retries once.
const res = await pay('https://scrapemole-api-mainnet.scrapemole.workers.dev/v1/youtube/playlist?playlist=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi');
console.log(res.status, await res.json());
// Settled only on 200; the receipt (tx hash) is in the PAYMENT-RESPONSE header.
if (res.ok) console.log(decodePaymentResponseHeader(res.headers.get('payment-response')));

Also available as the MCP tool youtube_playlist on https://scrapemole-api-mainnet.scrapemole.workers.dev/mcp (x402 MCP transport, same price).

Example response

A real response from this endpoint (arrays and long strings trimmed here).

{
  "playlistId": "PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi",
  "playlistTitle": "Neural networks",
  "playlistVideoCount": 8,
  "count": 1,
  "videos": [
    {
      "videoId": "aircAruvnKk",
      "url": "https://www.youtube.com/watch?v=aircAruvnKk",
      "title": "But what is a neural network? | Deep learning chapter 1",
      "channelName": "3Blue1Brown",
      "position": 1
    }
  ]
}

Live test results

1/1Paid calls through the deployed Worker, 12 Oct 2026 08:12 UTC

Paid end-to-end checks (Base Sepolia testnet, 12 Oct 2026 08:12 UTC)

CallStatusChargedPass
unpaid /v1/youtube/playlist402price quoted✓
paid /v1/youtube/playlist?playlist=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi200$0.005✓
paid /v1/youtube/playlist?playlist=PLzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz (unknown playlist)404$0✓

Errors

Failures return JSON like {"error": {"code": "NOT_FOUND", "message": "…", "charged": false}}. None of them are charged.

Status / errorCodeMeaning
400 INVALID_INPUTMissing or malformed parameter. Fix the input.
404 NOT_FOUNDThe video, channel, product or term doesn't exist or isn't public.
404 NO_DATAIt exists, but has nothing to return (for example no captions).
503 BLOCKEDThe source rate-limited us even after retries. Try again later.
502 / 504Upstream error or timeout. Try again.
402No or invalid payment. Pay the quoted amount and retry.