sfoln/youtube-video-lookup · AI, Videos, Automation On request
Scrape YouTube video and Shorts details in bulk: title, channel, publish date, duration, views, likes, comments, keywords, category and caption languages, plus an optional full transcript. $4 per 1,000 videos; transcripts $4 per 1,000. Paste URLs or video IDs.
YouTube Video Details Scraper looks up YouTube videos and Shorts in bulk and returns one normalized record per video: title, description, channel (ID, name, handle), publish date, duration, view / like / comment counts, thumbnail, keywords, category, live and paid-promotion flags, available caption languages, and optionally the full transcript in the same record. Built for content analytics, influencer vetting, dataset building and AI agents.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
YouTube video youtube-video-looked-up
$0.004
$4 / 1,000
Charged once per video whose details (title, channel, counts, duration, keywords…) were returned. Missing, private or age-restricted videos and failed requests are not charged, unless the provider billed the lookup.
YouTube transcript youtube-transcript-retrieved
$0.004
$4 / 1,000
Charged additionally, once per video, only when Include transcript is on and a caption transcript was returned. Paid plans only.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
Run
Call it from code, an agent or the Console
This API is private on Apify for now. Email us and we will publish it for you, usually within two working days. The calls below work once it is public. contact@sfoln.com
POST https://api.apify.com/v2/actors/sfoln~youtube-video-lookup/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: Get the views, likes, comment count, duration and publish date of https://www.youtube.com/watch?v=dQw4w9WgXcQ.
Input
Input fields
Paste YouTube video or Shorts URLs (or 11-character video IDs), one per line. Each video produces one dataset record with normalized metadata and, optionally, the transcript.
Field
Type
Default
Meaning
videos *
array
required
YouTube videos Video URLs (youtube.com/watch?v=…, youtu.be/…, /shorts/…, /live/…) or bare 11-character video IDs. Duplicates are removed. Accounts on the Apify free plan can process up to 10 videos per run.
includeTranscript
boolean
false
Include transcript Also fetch the caption transcript as plain text (`transcriptText`). Charged as a separate event only when a transcript is returned. Paid plans only (turned off on the Apify free plan).
transcriptLanguage
string
—
Transcript language (optional) Language code of the caption track, e.g. "en", "es" or "en-US". Leave empty for the original-language track. Only used when Include transcript is on.
cacheMaxAge
string
"off"
Accept cached results Allow results the upstream fetched within this window instead of a live fetch. Faster; results (view/like counts) may be up to N days old when enabled. Price is the same. Default: off (always live). One of "off", "1d", "7d", "30d".
maxVideos
integer
1000
Max videos Safety cap on the number of videos processed in this run. Range 1–10000.
concurrency
integer
5
Concurrency How many videos are fetched in parallel (1–8). Range 1–8.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified provider payloads (`raw.video`, `raw.transcript`) to each record (much larger output).
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The video URL or ID as provided.
videoId
string | null
Video ID 11-character YouTube video ID. e.g. "dQw4w9WgXcQ"
url
string | null
URL Watch URL.
type
string | null
Type video / short / live as reported upstream.
title
string | null
Title
description
string | null
Description
channelId
string | null
Channel ID
channelName
string | null
Channel name
channelHandle
string | null
Channel handle Without the leading @.
channelUrl
string | null
Channel URL
publishedAt
string | null
Published at ISO 8601 (UTC).
durationSecs
number | null
Duration (s)
viewCount
number | null
Views
likeCount
number | null
Likes
commentCount
number | null
Comments
thumbnailUrl
string | null
Thumbnail URL
keywords
array
Keywords / tags
category
string | null
Category YouTube genre/category, e.g. "Music".
isLive
boolean | null
Live true for live streams; null when not determinable.
isPaidPromotion
boolean | null
Paid promotion
chapterCount
integer
Chapters
captionLanguages
array
Caption languages Language codes of available caption tracks.
hasCaptions
boolean | null
Has captions
cached
boolean
Cached Served from the upstream cache (cacheMaxAge).
transcriptText
string | null
Transcript Only when includeTranscript is on.
transcriptLanguage
string | null
Transcript language
transcriptStatus
string
Transcript status not_requested | ok | no_captions | skipped_budget (budget could not pay for the transcript; never delivered uncharged) | skipped_free_plan (paid add-on, off on the Apify free plan) | error
transcriptCharged
boolean
Transcript charged Whether youtube-transcript-retrieved was charged for this video.
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
charged
boolean
Charged Whether youtube-video-looked-up was charged for this record.