YouTube Video Stats: Views, Likes, Comments by Video URL avatar

YouTube Video Stats: Views, Likes, Comments by Video URL

Pricing

from $0.40 / 1,000 video returneds

Go to Apify Store
YouTube Video Stats: Views, Likes, Comments by Video URL

YouTube Video Stats: Views, Likes, Comments by Video URL

Paste YouTube video URLs or IDs and get one row per video: exact views, likes and comment count, duration, publish date, category, tags, description and channel. No login, no Google API key, no API quota. Private or removed videos are free.

Pricing

from $0.40 / 1,000 video returneds

Rating

0.0

(0)

Developer

Adriana Voss

Adriana Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Share

Paste a list of YouTube video URLs or IDs and get a spreadsheet with each video's exact views, likes, comment count, duration and publish date.

Who uses this

  • Creator and brand teams tracking how a set of competitor or campaign videos performs, without opening each one.
  • Agencies and analysts filling a Google Sheet or Airtable with view and like counts for a client report.
  • Researchers and data teams collecting tags, category and publish dates for a list of video IDs, with no Google API key and no daily quota.

Try it in 30 seconds

The input box already holds two real video IDs. Click Start and you get one row per video. No login, no cookies, no API key.

Example output

Real rows from a keyless run on 2026-10-11:

videoIdtitleviewslikescommentsduration (s)published
dQw4w9WgXcQRick Astley - Never Gonna Give You Up1,825,571,54419,484,2722,458,7892132009-10-24
jNQXAC9IVRwMe at the zoo442,880,51720,055,52910,638,397192005-04-23
9bZkp7q19f0PSY - GANGNAM STYLE6,089,273,79732,303,4295,465,1162522012-07-15

Every row also carries channel name, ID and URL, category, tags, description, thumbnail and live/unlisted flags.

What it costs

About $0.60 to $0.80 per 1,000 videos returned, depending on your Apify plan, and nothing at all for a video that is private, removed or mistyped. First runs fit inside Apify's free credit.

Why this one

  • Exact numbers, not the rounded ones on the page. The watch page shows "1.8B views" and "19M"; the page's own data carries the full integers, and that is what you get.
  • Comment count included. The count comes from the same public comments panel a visitor sees. A video with comments turned off returns null and commentsEnabled: false, never a fake 0.
  • Missing is null, never 0. A hidden like count or a video with no tags comes back empty, so a chart never plots a false zero.
  • Never charged for a miss. A private, removed or bot-checked video comes back as a clean NOT_FOUND or BLOCKED row and costs nothing.
  • Any URL shape works. watch?v=, youtu.be/, Shorts, embed and live links, or a bare 11-character ID.
  • No API key and no quota. It reads the public watch page, so there is no Google Cloud project to set up and no 10,000-unit daily limit to plan around.

Example runs

Keyless runs, no API key and no login. Counts move by the minute, so yours will be slightly higher.

1. The prefilled input, run on a datacenter IP that YouTube bot-checked

{ "videos": ["dQw4w9WgXcQ", "jNQXAC9IVRw"] }

One row for Rick Astley - Never Gonna Give You Up (1,825,571,456 views, 19,484,269 likes, 2,458,789 comments) and one BLOCKED row for the second video, with the message "YouTube asked this connection to confirm it is not a bot". The blocked line cost nothing. Later versions re-fetch a bot-checked page on a fresh proxy IP before giving up.

2. A mix of IDs and a short link

{ "videos": ["dQw4w9WgXcQ", "jNQXAC9IVRw", "https://youtu.be/9bZkp7q19f0"] }

Three rows, one per video, the short link resolved to 9bZkp7q19f0 (PSY - GANGNAM STYLE, 6,089,273,797 views, category Music, 14 tags). Run time about 8 seconds, platform cost under $0.0005.

3. A line that is not a video

{ "videos": ["dQw4w9WgXcQ", "https://www.youtube.com/@NASA"] }

A channel link is not a video, so that line comes back as one BAD_FORMAT row that says so, and only the real video is returned. A private or removed video returns a NOT_FOUND row the same way, and a YouTube bot check returns BLOCKED; none of these is charged.

How to use

  1. In the Apify Console. Open the actor page and click Start — the videos field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~youtube-video-stats-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"videos":["dQw4w9WgXcQ","jNQXAC9IVRw"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Input

{
"videos": [
"dQw4w9WgXcQ",
"jNQXAC9IVRw"
]
}

One YouTube video URL or 11-character video ID per line. Accepted formats: dQw4w9WgXcQ, https://www.youtube.com/watch?v=dQw4w9WgXcQ, https://youtu.be/dQw4w9WgXcQ, https://www.youtube.com/shorts/jNQXAC9IVRw.

{
"items": ["<identifier-1>", "<identifier-2>"],
"maxConcurrency": 5
}

items is a list of YouTube video URLs or 11-character video IDs. One dataset row is returned per item; rows with "found": false are never charged.

Output

One row per item, for example:

queryfoundstatusvideoIdurltitlechannelNamechannelIdchannelUrlviewCountlikeCountcommentCountcommentsEnableddurationSecondspublishedAtcategorytagsdescriptionisLiveisUnlistedthumbnailUrlscrapedAt
dQw4w9WgXcQtrueOK <channel><duration (seconds)>1970-01-01T00:00:00.000Z

A miss comes back as a row with "found": false and is never charged.

Pricing

Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed per item only when data is actually found and returned — see .actor/pay_per_event.json for exact prices. A miss is never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~youtube-video-stats-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"videos":["dQw4w9WgXcQ","jNQXAC9IVRw"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~youtube-video-stats-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"videos":["dQw4w9WgXcQ","jNQXAC9IVRw"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~youtube-video-stats-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"videos":["{{video}}"]}, mapping the row's video into the videos array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "youtube video stats scraper" — the agent will find and run this actor.