SPVD API Reference

Fill these in to personalise every example on this page. Nothing is sent anywhere.

API reference

Every public endpoint, parameter and response object of the SPVD API. New here? Start with the API guide.

Conventions

  • All endpoints are GET requests with parameters in the query string. Remember to URL-encode values such as url.
  • Every data endpoint returns the same envelope, ExtractionResult. Check error first.
  • Empty query values (?lang=) are treated as not provided.
  • csv<T> means a comma-separated list, e.g. renderableFormats=720p,1080p. Duplicates are ignored.
  • Unknown enum values are rejected with HTTP 400.
HeaderValue
X-RapidAPI-KeyYour API key from the API marketplace.
X-RapidAPI-HostThe API host shown on the marketplace, e.g. spvd-v3-plus.p.rapidapi.com.

Utility endpoints

These endpoints need no API key.

Health checkno auth

GET/health

Returns {"status":"ok"} when the service is up. Does not consume credits.

Returns: {"status": "ok"}

const res = await fetch("https://api-host/health");
const data = await res.json();
console.log(data);

OpenAPI spec (all platforms)no auth

GET/openapi

Combined OpenAPI 3 document for every platform, with tags grouped per platform. Import it into Postman, Insomnia or any code generator.

Returns: OpenAPI 3 JSON document.

const res = await fetch("https://api-host/openapi");
const data = await res.json();
console.log(data);

OpenAPI spec listno auth

GET/openapi/platforms

Lists the per-platform specs that are available and where to download them.

Returns: { combined, platforms: [{ id, name, title, version, endpoints, url }] }

const res = await fetch("https://api-host/openapi/platforms");
const data = await res.json();
console.log(data);

OpenAPI spec (one platform)no auth

GET/openapi/{platform}

OpenAPI 3 document for a single platform, e.g. /openapi/youtube or /openapi/tiktok.json.

ParameterTypeDescription
platform
required
pathPlatform id as listed by /openapi/platforms: youtube, instagram, facebook, tiktok, …

Returns: OpenAPI 3 JSON document, or 404 for an unknown platform.

const res = await fetch("https://api-host/openapi/youtube");
const data = await res.json();
console.log(data);

YouTube

Video details1–2 credits

GET/youtube/v3/video/details

Everything about a single video: downloadable video and audio streams, optional merged MP4 render configs, title, thumbnail, channel, transcript and extended metadata.

ParameterTypeDescription
videoId
required
string11-character YouTube video ID, e.g. dQw4w9WgXcQ.
renderableFormats
optional
csv<RenderableFormat>Comma-separated qualities to prepare as merged MP4 files, e.g. 720p,1080p or highres. See renderable formats. Adds 1 credit when at least one render config is returned.
urlAccess
optional
enumnormal (default): direct stream links, fastest. proxied: links are relayed through the API to avoid 403 errors in restricted networks; slower downloads. Costs 2 credits.
getTranscript
optional
enumtrue to include the transcript. Default false.
transcriptLanguage
optional
stringTranscript language to return. Must be one of the values listed in metadata.transcript.languages. Defaults to the video's primary track.
fields
optional
csv<Field>Include or exclude parts of the response, e.g. contents.videos,metadata.author or -metadata.additionalData. See field filtering.
countryCode
optional
stringTwo-letter country code (case-insensitive) used for geo-specific content, e.g. us, gb, or worldwide. See country codes.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Costs 2 credits when urlAccess=proxied or when at least one render config is returned; otherwise 1. The two do not stack.

Returns: contents[0].videos, contents[0].audios, contents[0].renderableVideos; metadata.title, thumbnailUrl, author, transcript, additionalData (duration, view count, keywords, captions, storyboards, end screen…).

const params = new URLSearchParams({
  videoId: "dQw4w9WgXcQ",
  renderableFormats: "720p,1080p",
  getTranscript: "true",
});

const res = await fetch(`https://api-host/youtube/v3/video/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Video comments1 credit

GET/youtube/v3/video/comments

Top-level comments for a video, or replies to one comment. Paginated.

ParameterTypeDescription
videoId
required
stringYouTube video ID.
commentId
optional
stringReturn replies to this comment instead of top-level comments.
sortBy
optional
enumTOP_COMMENTS or NEWEST_FIRST.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.comments (comment threads, header, counts) and metadata.comments.nextToken.

const params = new URLSearchParams({
  videoId: "dQw4w9WgXcQ",
  sortBy: "NEWEST_FIRST",
});

const res = await fetch(`https://api-host/youtube/v3/video/comments?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Community post details1 credit

GET/youtube/v3/post/details

A single community post (text, images, polls, shared videos).

ParameterTypeDescription
postId
required
stringPost ID (starts with Ug).
channelId
required
stringID of the channel that published the post.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.post.

const params = new URLSearchParams({
  postId: "UgkxPOST_ID",
  channelId: "UCxxxxxxxxxxxxxxxxxxxxxx",
});

const res = await fetch(`https://api-host/youtube/v3/post/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Community post comments1 credit

GET/youtube/v3/post/comments

Comments on a community post. Paginated.

ParameterTypeDescription
postId
required
stringPost ID.
channelId
required
stringChannel ID of the post.
sortBy
optional
enumTOP_COMMENTS or NEWEST_FIRST.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.comments and metadata.comments.nextToken.

const params = new URLSearchParams({
  postId: "UgkxPOST_ID",
  channelId: "UCxxxxxxxxxxxxxxxxxxxxxx",
});

const res = await fetch(`https://api-host/youtube/v3/post/comments?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Playlist1 credit

GET/youtube/v3/playlist

Playlist information and its videos, page by page.

ParameterTypeDescription
playlistId
required
stringPlaylist ID, e.g. PLxxxxxxxx.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
countryCode
optional
stringTwo-letter country code (case-insensitive) used for geo-specific content, e.g. us, gb, or worldwide. See country codes.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.playlist.info, metadata.playlist.videos, metadata.playlist.messages, metadata.playlist.nextToken.

const params = new URLSearchParams({
  playlistId: "PLrAXtmRdnEQy6nuLMt20JyowgskgQGfXH",
});

const res = await fetch(`https://api-host/youtube/v3/playlist?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Search videos1 credit

GET/youtube/v3/search/video

Search restricted to videos.

ParameterTypeDescription
query
required
stringSearch terms.
uploadDate
optional
enumall (default), today, week, month, year.
prioritize
optional
enumrelevance (default) or popularity.
duration
optional
enumall (default), under_three_mins, three_to_twenty_mins, over_twenty_mins.
features
optional
csv<enum>Any of 360, 3d, 4k, creative_commons, hd, hdr, live, location, purchased, subtitles, vr180.
sortBy
optional
enumDeprecated. relevance, rating, upload_date, view_count. Use prioritize and uploadDate instead.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.additionalData.searchResults.

const params = new URLSearchParams({
  query: "programming tutorial",
  prioritize: "popularity",
  duration: "over_twenty_mins",
});

const res = await fetch(`https://api-host/youtube/v3/search/video?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Search channels1 credit

GET/youtube/v3/search/channel

Search restricted to channels.

ParameterTypeDescription
query
required
stringSearch terms.
uploadDate
optional
enumall (default), today, week, month, year.
prioritize
optional
enumrelevance (default) or popularity.
duration
optional
enumall (default), under_three_mins, three_to_twenty_mins, over_twenty_mins.
features
optional
csv<enum>Any of 360, 3d, 4k, creative_commons, hd, hdr, live, location, purchased, subtitles, vr180.
sortBy
optional
enumDeprecated. relevance, rating, upload_date, view_count. Use prioritize and uploadDate instead.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.additionalData.searchResults.

const params = new URLSearchParams({
  query: "cooking",
});

const res = await fetch(`https://api-host/youtube/v3/search/channel?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Search playlists1 credit

GET/youtube/v3/search/playlist

Search restricted to playlists.

ParameterTypeDescription
query
required
stringSearch terms.
uploadDate
optional
enumall (default), today, week, month, year.
prioritize
optional
enumrelevance (default) or popularity.
duration
optional
enumall (default), under_three_mins, three_to_twenty_mins, over_twenty_mins.
features
optional
csv<enum>Any of 360, 3d, 4k, creative_commons, hd, hdr, live, location, purchased, subtitles, vr180.
sortBy
optional
enumDeprecated. relevance, rating, upload_date, view_count. Use prioritize and uploadDate instead.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.additionalData.searchResults.

const params = new URLSearchParams({
  query: "workout mix",
});

const res = await fetch(`https://api-host/youtube/v3/search/playlist?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Search movies1 credit

GET/youtube/v3/search/movie

Search restricted to movies.

ParameterTypeDescription
query
required
stringSearch terms.
uploadDate
optional
enumall (default), today, week, month, year.
prioritize
optional
enumrelevance (default) or popularity.
duration
optional
enumall (default), under_three_mins, three_to_twenty_mins, over_twenty_mins.
features
optional
csv<enum>Any of 360, 3d, 4k, creative_commons, hd, hdr, live, location, purchased, subtitles, vr180.
sortBy
optional
enumDeprecated. relevance, rating, upload_date, view_count. Use prioritize and uploadDate instead.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.additionalData.searchResults.

const params = new URLSearchParams({
  query: "documentary",
});

const res = await fetch(`https://api-host/youtube/v3/search/movie?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Search suggestions1 credit

GET/youtube/v3/search/suggestions

Autocomplete suggestions for a partial query.

ParameterTypeDescription
query
required
stringPartial search text.
previousQuery
optional
stringThe user's previous query, for more relevant suggestions.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.additionalData.searchSuggestions.

const params = new URLSearchParams({
  query: "javascri",
});

const res = await fetch(`https://api-host/youtube/v3/search/suggestions?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Channel details1 credit

GET/youtube/v3/channel/details

Channel profile: name, handle, description, avatar, banner, subscriber and video counts, links.

ParameterTypeDescription
channelId
required
stringChannel ID (starts with UC). Use Channel ID from handle if you only have @handle.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.channel.

const params = new URLSearchParams({
  channelId: "UCX6OQ3DkcsbYNE6H8uQQuVA",
});

const res = await fetch(`https://api-host/youtube/v3/channel/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Channel videos / shorts / lives1 credit

GET/youtube/v3/channel/videos

A channel's uploads of one type, newest first. Paginated.

ParameterTypeDescription
channelId
required
stringChannel ID.
contentType
required
enumvideos, shorts or livestreams.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.channel.<contentType>.contents and …nextToken.

const params = new URLSearchParams({
  channelId: "UCX6OQ3DkcsbYNE6H8uQQuVA",
  contentType: "shorts",
});

const res = await fetch(`https://api-host/youtube/v3/channel/videos?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Channel playlists / releases / podcasts1 credit

GET/youtube/v3/channel/playlists

A channel's playlists, music releases or podcasts. Paginated.

ParameterTypeDescription
channelId
required
stringChannel ID.
contentType
required
enumplaylists, releases or podcasts.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.channel.<contentType>.contents and …nextToken.

const params = new URLSearchParams({
  channelId: "UCX6OQ3DkcsbYNE6H8uQQuVA",
  contentType: "playlists",
});

const res = await fetch(`https://api-host/youtube/v3/channel/playlists?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Channel community posts1 credit

GET/youtube/v3/channel/posts

A channel's community posts. Paginated.

ParameterTypeDescription
channelId
required
stringChannel ID.
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.channel.posts.contents and metadata.channel.posts.nextToken.

const params = new URLSearchParams({
  channelId: "UCX6OQ3DkcsbYNE6H8uQQuVA",
});

const res = await fetch(`https://api-host/youtube/v3/channel/posts?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Channel ID from handle1 credit

GET/youtube/v3/channel/id-from-handle

Resolve an @handle to its channel ID.

ParameterTypeDescription
handle
required
stringChannel handle, with or without @, e.g. @MrBeast.

Returns: metadata.channel.channelId.

const params = new URLSearchParams({
  handle: "@MrBeast",
});

const res = await fetch(`https://api-host/youtube/v3/channel/id-from-handle?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Hashtag feed1 credit

GET/youtube/v3/hashtag

Videos published under a hashtag. Paginated.

ParameterTypeDescription
tag
required
stringHashtag without # (case-insensitive).
nextToken
optional
stringOpaque pagination token from the previous page. Valid for about 15 minutes. Omit for the first page.
lang
optional
stringTwo-letter language code used for localized text, e.g. en, fr, pt. See language codes.

Returns: metadata.hashtag.contents and metadata.hashtag.nextToken.

const params = new URLSearchParams({
  tag: "programming",
});

const res = await fetch(`https://api-host/youtube/v3/hashtag?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Instagram

Post / reel details1 credit

GET/instagram/v3/media/post/details

Media of a post, reel or carousel: videos, audio tracks, images and optional render configs, plus caption, owner and comments preview.

ParameterTypeDescription
shortcode
required
stringThe code in the post URL: instagram.com/p/C0j2L9yS9-Z/ or /reel//.
renderableFormats
optional
csv<RenderableFormat>Comma-separated qualities to prepare as single MP4 files with audio, e.g. 720p or highres. See renderable formats.
countryCode
optional
stringTwo-letter country code (case-insensitive) used for geo-specific content, e.g. us, gb, or worldwide. See country codes.

Returns: One contents[] entry per carousel item (videos, audios, images, renderableVideos); metadata.title (caption), thumbnailUrl, author, comments, additionalData.

const params = new URLSearchParams({
  shortcode: "C0j2L9yS9-Z",
  renderableFormats: "highres",
});

const res = await fetch(`https://api-host/instagram/v3/media/post/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Audio (reels using a sound)1 credit

GET/instagram/v3/media/audio/details

Reels that use a given original sound or music track, with their media.

ParameterTypeDescription
audioId
required
stringThe ID in instagram.com/reels/audio/123456789/.

Returns: contents[] (one per reel) and metadata.additionalData (audio/track info).

const params = new URLSearchParams({
  audioId: "1234567890123456",
});

const res = await fetch(`https://api-host/instagram/v3/media/audio/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Profile details5 credits

GET/instagram/v3/user/profile/details

Public profile of an account: bio, profile picture, follower/following/post counts, verification and category.

ParameterTypeDescription
username
required
stringInstagram username without @.

Costs 5 credits per successful request.

Returns: metadata.author.

const params = new URLSearchParams({
  username: "instagram",
});

const res = await fetch(`https://api-host/instagram/v3/user/profile/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

User ID from username5 credits

GET/instagram/v3/user/profile/id-from-username

Resolve a username to its numeric user ID.

ParameterTypeDescription
username
required
stringInstagram username without @.

Costs 5 credits per successful request.

Returns: metadata.author.userId, metadata.author.username.

const params = new URLSearchParams({
  username: "instagram",
});

const res = await fetch(`https://api-host/instagram/v3/user/profile/id-from-username?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Facebook

Post / video / reel details1 credit

GET/facebook/v3/post/details

Media of a public post, video, watch link or reel: SD/HD progressive files, separate DASH video and audio streams, photos and optional render configs.

ParameterTypeDescription
url
required
stringPublic Facebook URL. You may paste text that contains a link; the first URL found is used. Must be a Facebook link.
renderableFormats
optional
csv<RenderableFormat>Comma-separated qualities to prepare as single MP4 files with audio, e.g. 720p or highres. See renderable formats.

Returns: contents[] with videos (native_hd, native_sd and per-resolution streams), audios, images, renderableVideos; metadata.title, thumbnailUrl, author, additionalData.

const params = new URLSearchParams({
  url: "https://www.facebook.com/watch/?v=1234567890",
  renderableFormats: "720p",
});

const res = await fetch(`https://api-host/facebook/v3/post/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Profile details1 credit

GET/facebook/v3/profile/details

Public profile or page information.

ParameterTypeDescription
url
required
stringPublic Facebook URL. You may paste text that contains a link; the first URL found is used. Must be a Facebook link.

Returns: metadata.author.

const params = new URLSearchParams({
  url: "https://www.facebook.com/zuck",
});

const res = await fetch(`https://api-host/facebook/v3/profile/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Profile ID1 credit

GET/facebook/v3/profile/id

Resolve a profile or page URL to its numeric ID.

ParameterTypeDescription
url
required
stringPublic Facebook URL. You may paste text that contains a link; the first URL found is used. Must be a Facebook link.

Returns: metadata.author.profileId.

const params = new URLSearchParams({
  url: "https://www.facebook.com/zuck",
});

const res = await fetch(`https://api-host/facebook/v3/profile/id?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Profile “About”1 credit

GET/facebook/v3/profile/about

The public About section of a profile or page.

ParameterTypeDescription
url
required
stringPublic Facebook URL. You may paste text that contains a link; the first URL found is used. Must be a Facebook link.

Returns: metadata.author.about.

const params = new URLSearchParams({
  url: "https://www.facebook.com/zuck",
});

const res = await fetch(`https://api-host/facebook/v3/profile/about?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Profile reels1 credit

GET/facebook/v3/profile/reels

Reels published by a profile or page.

ParameterTypeDescription
url
required
stringPublic Facebook URL. You may paste text that contains a link; the first URL found is used. Must be a Facebook link.

Returns: metadata.author.reels.

const params = new URLSearchParams({
  url: "https://www.facebook.com/zuck",
});

const res = await fetch(`https://api-host/facebook/v3/profile/reels?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Profile photos1 credit

GET/facebook/v3/profile/photos

Public photos of a profile or page.

ParameterTypeDescription
url
required
stringPublic Facebook URL. You may paste text that contains a link; the first URL found is used. Must be a Facebook link.

Returns: metadata.author.photos.

const params = new URLSearchParams({
  url: "https://www.facebook.com/zuck",
});

const res = await fetch(`https://api-host/facebook/v3/profile/photos?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

TikTok

Post details1 credit

GET/tiktok/v3/post/details

Video in every available quality, photo-mode images, the sound, and a render config to extract the audio as a file.

ParameterTypeDescription
url
required
stringPublic TikTok video or photo post URL (short vm.tiktok.com links work too).

Returns: contents[0].videos (main file + each bitrate), images (photo posts), audios, renderableAudios; metadata.title, thumbnailUrl, author, additionalData (stats, music, hashtags…).

const params = new URLSearchParams({
  url: "https://www.tiktok.com/@username/video/7300000000000000000",
});

const res = await fetch(`https://api-host/tiktok/v3/post/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

User details1 credit

GET/tiktok/v3/user/details

Public profile and statistics of a TikTok account.

ParameterTypeDescription
url
required
stringProfile URL, e.g. https://www.tiktok.com/@username.

Returns: metadata.title, thumbnailUrl, author.user, author.stats, author.statsV2, additionalData.

const params = new URLSearchParams({
  url: "https://www.tiktok.com/@tiktok",
});

const res = await fetch(`https://api-host/tiktok/v3/user/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Dailymotion

Video details1 credit

GET/dailymotion/v3/video/details

Streaming variants of a video plus render configs that turn a stream into a normal MP4 (video) or M4A (audio) file.

ParameterTypeDescription
videoId
required
stringID in dailymotion.com/video/x8abc12 or dai.ly/x8abc12.
renderableFormats
optional
csv<RenderableFormat>Qualities to convert to MP4. Use heights such as 380, 480, 720, 1080 (matched against the stream labels) or lowres / midres / highres / all.
countryCode
optional
stringCountry to fetch from. If omitted and the video is geo-restricted, an allowed country is picked automatically.

The videos links are HLS playlists (.m3u8). To get a single downloadable file, use a renderableVideos or renderableAudios item.

Returns: contents[0].videos (HLS playlists, labelled like hls-720), renderableVideos, renderableAudios; metadata.title, thumbnailUrl, additionalData.

const params = new URLSearchParams({
  videoId: "x8abc12",
  renderableFormats: "720",
});

const res = await fetch(`https://api-host/dailymotion/v3/video/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Pinterest

Pin details1 credit

GET/pinterest/v3/pin/details

Images (every size) and videos of a pin, including multi-page idea/story pins.

ParameterTypeDescription
pinId
required
stringNumeric ID in pinterest.com/pin/1234567890/.
countryCode
optional
stringTwo-letter country code (case-insensitive) used for geo-specific content, e.g. us, gb, or worldwide. See country codes.

Returns: One contents[] entry per story page (images, videos) followed by the main image with all size variants; metadata.title, thumbnailUrl, author (pinner, originPinner, nativeCreator), additionalData.

const params = new URLSearchParams({
  pinId: "1234567890123456789",
});

const res = await fetch(`https://api-host/pinterest/v3/pin/details?${params}`, {
  headers: {
    "X-RapidAPI-Key": "YOUR_API_KEY",
    "X-RapidAPI-Host": "api-host",
  },
});
const data = await res.json();

if (data.error) throw new Error(`${data.error.code}: ${data.error.message}`);
console.log(data);

Render URLs

Every successful renderable item carries a renderConfig with three URLs. They need no API key and cost no extra credits. Use them exactly as returned; the host and path are opaque and may change.

Start renderno auth

GET{renderConfig.executionUrl}

Starts the render, or attaches to it if it is already running or finished. Safe to call repeatedly.

HTTPMeaning
202New render started. Body: RenderStartResponse with status: "queued".
200The render already exists (running or done). Body: RenderStartResponse with status: "already_exists".
4xx / 5xxThe URL was modified or is invalid, or a temporary server problem. Request a fresh renderConfig or retry.
const res = await fetch(renderConfig.executionUrl);
const start = await res.json();   // 202 = new job, 200 = already exists
console.log(start.jobId, start.status);

Status stream (WebSocket)no auth

WS{renderConfig.statusUrl}

Open a WebSocket; the server sends a RenderStatusEvent as a JSON text frame about every second and closes the connection after done, failed or not_found. The client does not need to send anything.

const ws = new WebSocket(renderConfig.statusUrl);

ws.onmessage = (event) => {
  const job = JSON.parse(event.data);
  console.log(job.status, job.progress);

  if (job.status === "done") console.log("Download:", job.output.url);
  if (job.status === "failed" || job.status === "not_found") console.error(job.error);
};

Status stream (Server-Sent Events)no auth

SSE{renderConfig.sseStatusUrl}

A GET request that stays open and streams text/event-stream. Each event's data line is a JSON RenderStatusEvent. The stream ends after a final status.

function watchRender(sseUrl) {
  return new Promise((resolve, reject) => {
    const events = new EventSource(sseUrl);
    events.onmessage = (event) => {
      const job = JSON.parse(event.data);
      console.log(job.status, job.progress);

      if (job.status === "done") { events.close(); resolve(job.output); }
      if (job.status === "failed" || job.status === "not_found") { events.close(); reject(new Error(job.error)); }
    };
  });
}

const output = await watchRender(renderConfig.sseStatusUrl);
console.log("Download:", output.url);

Objects

ExtractionResult

The envelope returned by every data endpoint.

FieldTypeDescription
errorError | nullnull on success. When set, treat the rest of the body as empty.
contentsExtractedContent[] | undefinedDownloadable media. One entry per media item (a carousel or multi-page pin has several). Absent for metadata-only endpoints (search, comments, profiles…).
metadataContentMetadataEverything that is not a file: title, author, lists, search results…
notesstring[] | undefinedHuman-readable notes, e.g. how many credits the request cost.
{
  "error": null,
  "contents": [ { "videos": [], "audios": [], "renderableVideos": [] } ],
  "metadata": { "title": "…", "thumbnailUrl": "…", "author": {} },
  "notes": ["Endpoint cost: 1 credit."]
}

ExtractedContent

Media for one item. Each list is present only when that kind of media exists.

FieldTypeDescription
videosMediaItem[]Video files or streams. Check metadata.has_audio: many high-quality streams are video-only.
audiosMediaItem[]Audio-only streams.
imagesMediaItem[]Images / photos / thumbnails in the available sizes.
renderableVideosRenderableMediaItem[]Qualities you asked for with renderableFormats that can be rendered into one MP4 with audio. See Render URLs.
renderableAudiosRenderableMediaItem[]Audio that can be extracted into a standalone file (TikTok, Dailymotion).

MediaItem

FieldTypeDescription
labelstringHuman-readable quality, e.g. 1080p, 720p60, native_hd, 1080x1350, medium 128KBps english.
urlstringTemporary download/stream link. Do not store it long-term: request the endpoint again when it expires (typically 403 or 410).
repIdstringStable identifier of this representation, useful as a cache key or React key.
metadataMediaMetadataTechnical details.

MediaMetadata

Always contains the fields below. Platform-specific extras (bitrate, fps, codecs, itag, audio_quality, language…) are passed through as well.

FieldTypeDescription
mime_typestringe.g. video/mp4; codecs="avc1.640028", audio/mp4, image/jpeg.
width, heightnumberPixel size (0 for audio).
has_audiobooleanWhether the file contains an audio track.
content_lengthnumber | undefinedSize in bytes when known.
content_length_textstring | undefinedReadable size, e.g. 45.2 MB (YouTube).

RenderableMediaItem

Either a success item (has renderConfig) or an error item (has error). Always check which one you received.

FieldTypeDescription
labelstringThe quality or format this item is for.
renderConfigRenderConfigSuccess only. URLs to start and watch the render.
repIdstringSuccess only. Identifier of the render; it is also the jobId you see in render status events.
metadataMediaMetadataSuccess only. Details of the resulting file (has_audio: true, combined content_length).
errorstringError only. Why this format could not be prepared, e.g. not available, over your plan's size limit, or beyond your plan's number of renderables.
[
  {
    "label": "1080p",
    "repId": "a1b2c3…",
    "renderConfig": {
      "executionUrl": "https://render-host/…",
      "statusUrl": "wss://render-host/…",
      "sseStatusUrl": "https://render-host/…"
    },
    "metadata": { "mime_type": "video/mp4; codecs=\"avc1.640028, mp4a.40.2\"", "width": 1920, "height": 1080, "has_audio": true, "content_length": 98234112 }
  },
  { "label": "2160p", "error": "No available video for format '2160p' within the subscription size limit." }
]

RenderConfig

FieldTypeDescription
executionUrlstring (https)Call with GET to start (or re-attach to) the render. No API key needed; the URL itself is the credential, so keep it private.
statusUrlstring (wss)WebSocket that streams progress events until the job is done or failed.
sseStatusUrlstring (https)Same events as Server-Sent Events, for environments without WebSockets.

Treat all three URLs as opaque: use them exactly as returned and don't build them yourself.

ContentMetadata

All fields are optional; which ones appear depends on the endpoint (see Returns on each endpoint).

FieldTypeDescription
titlestringTitle, caption or description.
thumbnailUrlstringBest available thumbnail/cover image.
authorobjectCreator, channel owner or profile data.
commentsobjectComments (with nextToken when paginated).
playlistobjectinfo, videos, messages, nextToken.
channelobjectChannel profile, or lists keyed by content type (videos, shorts, posts…).
postobjectCommunity post.
hashtagobjectcontents, nextToken.
transcriptTranscriptInfoTranscript (YouTube video details).
additionalDataobjectEverything else the platform exposes (statistics, dates, keywords, search results…). Shapes follow the source platform and can gain fields over time.

TranscriptInfo

FieldTypeDescription
languagesstring[]Available transcript languages. Pass one as transcriptLanguage. Returned even when getTranscript is false.
selectedLanguagestringLanguage of the returned transcript.
transcriptobjectTranscript content as timed text segments.
errorstringSet when the transcript could not be fetched (the rest of the response is still valid).

RenderStartResponse

Returned by executionUrl.

FieldTypeDescription
jobIdstringRender job id (same as the renderable item's repId).
statusqueued | already_existsWhether a new render started or an existing one was found.
messagestringHuman-readable summary.
statusUrlstring (wss)WebSocket status stream (same as renderConfig.statusUrl).
sseStatusUrlstring (https)Server-Sent Events status stream.
{
  "jobId": "a1b2c3…",
  "status": "queued",
  "message": "Job accepted for processing.",
  "statusUrl": "wss://render-host/…",
  "sseStatusUrl": "https://render-host/…"
}

RenderStatusEvent

FieldTypeDescription
job_idstringRender job id.
statusenumpending, queued, downloading_inputs, processing, uploading_output, done, failed. See job statuses.
progressintegerOverall progress, 0–100.
outputRenderOutput | nullSet when status is done.
errorstring | nullReason, when status is failed.
created_atstring (date-time)When the render was first created.
expires_atstring (date-time)When the render and its file are deleted.
{
  "job_id": "a1b2c3…",
  "status": "done",
  "progress": 100,
  "output": {
    "url": "https://…",
    "size": 98234112,
    "sizeText": "93.68 MB",
    "key": "…"
  },
  "error": null,
  "created_at": "2026-09-23T12:00:00.000Z",
  "expires_at": "2026-09-23T13:00:00.000Z"
}

If no render exists for the id (never started, or expired), a single event is sent and the stream closes:

{ "id": "a1b2c3…", "status": "not_found", "error": "Job with ID 'a1b2c3…' not found." }

RenderOutput

FieldTypeDescription
urlstring (https)Download link for the finished file, valid until expires_at. Browsers save it with a readable file name.
sizeintegerFile size in bytes.
sizeTextstringReadable size, e.g. 93.68 MB.
keystringInternal file reference. Don't rely on its format.

Error

FieldTypeDescription
messagestringHuman-readable description.
codestringStable machine-readable code. See error codes.
statusCodenumber | nullSuggested HTTP status, when relevant.
{
  "error": { "message": "videoId not found.", "code": "params_not_found", "statusCode": null }
}

Paginated list

List endpoints return the page items together with a nextToken. Pass it back unchanged to get the next page; it is null on the last page.

{
  "error": null,
  "metadata": {
    "channel": {
      "videos": {
        "contents": [ /* items */ ],
        "nextToken": "eyJpdGVyYXRpb24…"   // null when there are no more pages
      }
    }
  }
}

Enums

RenderableFormat

ValueMeaning
lowresSmallest quality that fits your plan.
midresThe middle quality among those that fit your plan.
highresLargest quality that fits your plan's size limit.
allEvery distinct resolution, lowest first, up to your plan's renderable count.
all_highresEvery distinct resolution, highest first, up to your plan's renderable count.
PlatformSpecific values
YouTube144p, 240p, 360p, 480p, 720p, 720p60, 1080p, 1080p60, 1440p, 1440p60, 2160p, 2160p60, and HDR variants such as 1080p60 HDR (URL-encode the space as %20). Must match a video label exactly.
Instagram, Facebook144p, 240p, 360p, 480p, 720p, 1080p.
DailymotionHeights such as 240, 380, 480, 720, 1080; matched against stream labels like hls-720.

Only the first N requested formats are prepared, where N is your plan's renderable limit; the rest come back as error items. Formats larger than your plan's size limit are skipped. See plans.

Field

Used by fields on YouTube video details. Prefix with - to exclude.

contentscontents.videoscontents.audioscontents.imagescontents.renderableVideoscontents.renderableAudiosmetadatametadata.authormetadata.commentsmetadata.playlistmetadata.channelmetadata.postmetadata.hashtagmetadata.transcriptmetadata.additionalData

Other enums

ParameterValues
urlAccessnormal · proxied
getTranscripttrue · false
sortBy (comments)TOP_COMMENTS · NEWEST_FIRST
contentType (channel videos)videos · shorts · livestreams
contentType (channel playlists)playlists · releases · podcasts
uploadDateall · today · week · month · year
prioritizerelevance · popularity
durationall · under_three_mins · three_to_twenty_mins · over_twenty_mins
features360 · 3d · 4k · creative_commons · hd · hdr · live · location · purchased · subtitles · vr180

Countries & languages

countryCode accepts ISO 3166-1 alpha-2 codes (any case) plus worldwide. lang accepts two-letter ISO 639-1 codes (lowercase is applied for you).

250 country codes

ad · Andorraae · United Arab Emiratesaf · Afghanistanag · Antigua and Barbudaai · Anguillaal · Albaniaam · Armeniaao · Angolaaq · Antarcticaar · Argentinaas · American Samoaat · Austriaau · Australiaaw · Arubaax · Åland Islandsaz · Azerbaijanba · Bosnia and Herzegovinabb · Barbadosbd · Bangladeshbe · Belgiumbf · Burkina Fasobg · Bulgariabh · Bahrainbi · Burundibj · Beninbl · Saint Barthélemybm · Bermudabn · Bruneibo · Boliviabq · Caribbean Netherlandsbr · Brazilbs · Bahamasbt · Bhutanbv · Bouvet Islandbw · Botswanaby · Belarusbz · Belizeca · Canadacc · Cocos (Keeling) Islandscd · DR Congocf · Central African Republiccg · Republic of the Congoch · Switzerlandci · Ivory Coastck · Cook Islandscl · Chilecm · Camerooncn · Chinaco · Colombiacr · Costa Ricacu · Cubacv · Cape Verdecw · Curaçaocx · Christmas Islandcy · Cypruscz · Czechiade · Germanydj · Djiboutidk · Denmarkdm · Dominicado · Dominican Republicdz · Algeriaec · Ecuadoree · Estoniaeg · Egypteh · Western Saharaer · Eritreaes · Spainet · Ethiopiafi · Finlandfj · Fijifk · Falkland Islandsfm · Micronesiafo · Faroe Islandsfr · Francega · Gabongb · United Kingdomgd · Grenadage · Georgiagf · French Guianagg · Guernseygh · Ghanagi · Gibraltargl · Greenlandgm · Gambiagn · Guineagp · Guadeloupegq · Equatorial Guineagr · Greecegs · South Georgiagt · Guatemalagu · Guamgw · Guinea-Bissaugy · Guyanahk · Hong Konghm · Heard Island and McDonald Islandshn · Hondurashr · Croatiaht · Haitihu · Hungaryid · Indonesiaie · Irelandil · Israelim · Isle of Manin · Indiaio · British Indian Ocean Territoryiq · Iraqir · Iranis · Icelandit · Italyje · Jerseyjm · Jamaicajo · Jordanjp · Japanke · Kenyakg · Kyrgyzstankh · Cambodiaki · Kiribatikm · Comoroskn · Saint Kitts and Neviskp · North Koreakr · South Koreakw · Kuwaitky · Cayman Islandskz · Kazakhstanla · Laoslb · Lebanonlc · Saint Luciali · Liechtensteinlk · Sri Lankalr · Liberials · Lesotholt · Lithuanialu · Luxembourglv · Latvialy · Libyama · Moroccomc · Monacomd · Moldovame · Montenegromf · Saint Martinmg · Madagascarmh · Marshall Islandsmk · North Macedoniaml · Malimm · Myanmarmn · Mongoliamo · Macaump · Northern Mariana Islandsmq · Martiniquemr · Mauritaniams · Montserratmt · Maltamu · Mauritiusmv · Maldivesmw · Malawimx · Mexicomy · Malaysiamz · Mozambiquena · Namibianc · New Caledoniane · Nigernf · Norfolk Islandng · Nigeriani · Nicaraguanl · Netherlandsno · Norwaynp · Nepalnr · Naurunu · Niuenz · New Zealandom · Omanpa · Panamape · Perupf · French Polynesiapg · Papua New Guineaph · Philippinespk · Pakistanpl · Polandpm · Saint Pierre and Miquelonpn · Pitcairn Islandspr · Puerto Ricops · Palestinept · Portugalpw · Palaupy · Paraguayqa · Qatarre · Réunionro · Romaniars · Serbiaru · Russiarw · Rwandasa · Saudi Arabiasb · Solomon Islandssc · Seychellessd · Sudanse · Swedensg · Singaporesh · Saint Helenasi · Sloveniasj · Svalbard and Jan Mayensk · Slovakiasl · Sierra Leonesm · San Marinosn · Senegalso · Somaliasr · Surinamess · South Sudanst · São Tomé and Príncipesv · El Salvadorsx · Sint Maartensy · Syriasz · Eswatinitc · Turks and Caicos Islandstd · Chadtf · French Southern Territoriestg · Togoth · Thailandtj · Tajikistantk · Tokelautl · Timor-Lestetm · Turkmenistantn · Tunisiato · Tongatr · Turkeytt · Trinidad and Tobagotv · Tuvalutw · Taiwantz · Tanzaniaua · Ukraineug · Ugandaum · United States Minor Outlying Islandsus · United Statesuy · Uruguayuz · Uzbekistanva · Vatican Cityvc · Saint Vincent and the Grenadinesve · Venezuelavg · British Virgin Islandsvi · U.S. Virgin Islandsvn · Vietnamvu · Vanuatuwf · Wallis and Futunaworldwide · Worldwidews · Samoaye · Yemenyt · Mayotteza · South Africazm · Zambiazw · Zimbabwe

148 language codes

aaafakamarayazbebgbibmbnbscacechcocscvcydadedvdzeeeleneseteufafffifjfofrfygagdglgngugvhahehihohrhthuhyhzidigisitjajvkakgkkklkmknkokukwkylalblglnloltlulvmbmgmhmimkmlmnmrmsmtmynanbndnenlnnnonrnyocomorpaplpsptqurmrnrorurwscsdsgsiskslsmsnsosqsrssstsusvswtatetgthtitktltntotrtstttyukuruzveviwoxhyozhzu