YouTube Latest Videos: No API Key, With View Counts
Pricing
from $1.40 / 1,000 videos
YouTube Latest Videos: No API Key, With View Counts
The latest YouTube channel videos, about 30 per channel or playlist, with view counts, upload age and length, or exact views, dates and likes on request. No Google API key, no quota, no browser. Paste a handle, URL, channel id or playlist.
Pricing
from $1.40 / 1,000 videos
Rating
0.0
(0)
Developer
Daniel Meshulam
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
The latest videos from any YouTube channel or playlist: about 30 recent
videos per channel with their view counts, upload age and length, as clean
JSON. Turn on exactStats for the exact view count, publication date and
like count of each video.
No Google Cloud project. No Data API key. No quota. No browser. No cookies.
Why that matters
Every other way to read YouTube programmatically costs you something:
- The YouTube Data API needs a Google Cloud project and gives you 10,000 quota units a day. A single channel listing costs ~100. It does not survive real use, and when it runs out your pipeline stops until midnight Pacific.
- A headless browser is slow, expensive per run, and breaks every time YouTube reshuffles its markup.
This reads the ordinary public pages: a channel's own Videos tab and a playlist's own page, the ones robots.txt leaves open.
What you paste
Any of these. Whatever is in your address bar will work:
@mkbhdmkbhdhttps://www.youtube.com/@veritasiumhttps://www.youtube.com/channel/UCBJycsmduvYEL83R_U4JriQhttps://www.youtube.com/c/mkbhdhttps://www.youtube.com/user/marquesbrownleeUCBJycsmduvYEL83R_U4JriQhttps://www.youtube.com/playlist?list=PLbpi6ZahtOH6Blw3RGYpWkSByi_T7Rygb
What you get back
One row per video, measured on @mkbhd: 30 rows.
| field | notes |
|---|---|
title | as published |
url | the watch link |
videoId | YouTube's own id |
viewCount | parsed from what YouTube prints ("9.9M views" is 9,900,000) |
viewCountText | exactly what YouTube printed |
publishedTimeText | YouTube's own wording, e.g. "4 days ago" |
durationText | e.g. "14:32" |
thumbnailUrl | full-size image |
channelName, channelId, channelUrl | who published it |
requestedTarget, sourceType | what you asked for, so a row traces back |
With exactStats on, each video's own page adds the exact figures:
| field | notes |
|---|---|
viewCount | exact, and viewCountIsExact is true |
publishedAt | the publication date |
likeCount | likes |
lengthSeconds | length in seconds |
YouTube shows individual video pages to datacenter addresses only behind a
sign-in wall, so exactStats needs the RESIDENTIAL proxy group. The Actor
says so in the log before it spends a request, and keeps the rounded figures
rather than failing if a page cannot be read.
The limit, before you pay for it
One page per channel: about 30 recent videos. A playlist page holds more (19 and 100 on the two measured). There is no paging.
This reads a channel's recent output. It cannot read a back catalogue. If you need a full history, you need the Data API and its quota.
Filters
Filtered videos are never returned and never charged.
titleKeywords/titleExclude: plain text, case-insensitiveminViews: compared against YouTube's rounded figure; a video with no published count is excluded when this is set, because no count is not the same as zeropublishedAfter: an ISO date; it needs the exact publication date, so it turnsexactStatson for the runmaxVideosPerChannel: lower it to keep a trial cheapmaxResults: hard ceiling across the whole run, 1,000 by default
Good for
- Watching competitors' channels for new uploads and how they perform
- Tracking a topic across a set of creators
- Feeding a newsletter, dashboard or alerting pipeline
- Measuring which of your own videos are still gaining views
Pricing
Pay per video returned. Nothing else: not the run, not filtered videos, not a channel that turns out to be empty.
Use it from an AI agent
This Actor is a ready-made tool for Claude, ChatGPT, Cursor or any other MCP client, through Apify's MCP server. Add it as a connector at:
https://mcp.apify.com?tools=glitchbound/youtube-latest-videos-scraper
In Cursor or VS Code the same address goes in mcp.json:
{ "mcpServers": { "apify": { "url": "https://mcp.apify.com?tools=glitchbound/youtube-latest-videos-scraper" } } }
The first call asks you to sign in to Apify, or takes an API token. From then on the agent sees this Actor's input fields and calls it directly.
Feedback
If this saved you time, a review on the Actor's Store page helps other people find it. If something is missing or wrong, the Issues tab on the same page is the fastest way to reach me, and it gets read.