Made HTTP listing, video-detail, and channel-identity enrichers fall back to direct public requests if Apify proxy URL creation is unavailable, preventing hosted limited-permission runs from losing metadata before trying non-proxy endpoints.
Fixed null player-metadata merging so oEmbed fallback still runs when the player endpoint returns no usable data.
0.0.115
Added a short-timeout Innertube channel metadata lookup before RSS/HTML identity fallbacks, improving fast author recovery from channel IDs without paying full browser or channel-profile costs.
0.0.114
Added a lightweight channel-page identity fallback so fast hashtag rows can still recover author when RSS/oEmbed identity endpoints are thin from the hosted runtime.
0.0.113
Tightened lightweight RSS identity recovery so fallback-only channel IDs do not stop author lookup before a useful direct feed response is tried.
0.0.112
Updated public documentation and dataset field descriptions to clarify that author can be a channel handle or RSS-recovered display name.
0.0.111
Added cached lightweight channel-identity enrichment from YouTube RSS feeds so fast hashtag rows can fill author from channel IDs without enabling full channel profile scraping or browser fallback.
0.0.110
Tightened listing-recovered channel IDs to YouTube's exact 24-character channel ID shape.
0.0.109
Recovered channel IDs and channel URLs from YouTube's structured Shorts listing payload when available, improving fast hashtag rows even when detail endpoints are blocked or thin.
0.0.108
Added non-breaking durationSeconds and durationText output fields, populated from already-fetched YouTube player metadata so users can filter Shorts by exact length without slower extra requests.
Prefilled the public sample input with a 240-second soft runtime cap and aligned omitted concurrency to 1, so Apify test runs avoid the 300-second hard timeout even if a saved/default input is slow.
0.0.107
Kept viewCountText consistent with the final numeric viewCount when YouTube exposes conflicting counts from listing, player, or metadata responses, reducing confusing rows such as viewCount: 149 with viewCountText: "140 views".
0.0.106
Added soft runtime-budget handling. The Actor now watches Apify timeout metadata and stops before a hard platform kill, preserving rows already collected and reporting gracefullyStopped, stopReason, and timeBudget in OUTPUT.
Added optional maxRunSeconds for users who want a shorter graceful cap than the Apify run timeout.
0.0.105
Channel profile HTTP enrichment now parses YouTube's structured aboutChannelViewModel JSON for subscriber count, channel video count, total channel views, joined date, canonical handle URL, and channel ID.
0.0.104
Channel profile enrichment now prefers creator handles such as @youtube over channel-ID URLs when both are available, improving HTTP profile extraction for RSS-sourced channel rows.
0.0.103
Added HTTP channel profile enrichment for includeChannelDetails: true, with per-channel caching, so many creator-profile runs no longer need to start Puppeteer.
Improved channel stats parsing for compact HTML where joined date and total views appear inline instead of on separate visible lines.
0.0.102
Changed the Marketplace/default sample input from a hashtag to the youtube channel so first-time Apify test runs stay small while producing richer author, channel, view, and publish-date fields.
0.0.101
Fast HTTP-only runs now mark useful listing rows as detailStatus: "partial" when detail enrichment is incomplete, instead of reporting them as failed results.
Run summaries now include partialResults so users can distinguish partial data from actual scrape failures.
0.0.100
Disabled Puppeteer recovery unless fallbackToBrowser is explicitly enabled, keeping the default Apify test input on the HTTP-only fast path.
0.0.99
Added a hard 100-result cap per channel or hashtag source so API inputs cannot accidentally trigger unexpectedly large runs.
Run summaries now show both requestedNumberOfResults and the capped numberOfResults, with a recommendation when a request is capped.
Updated input schema and README to document the per-source cap.
0.0.98
Added actionable OUTPUT.summary.recommendations so users know when to enable browser fallback, include channel details, retry, or adjust proxy/timeout settings.
Added browser fallback status to the overview dataset view for faster troubleshooting.
0.0.97
If optional browser fallback fails after a useful HTTP/RSS row was already found, the row now remains detailStatus: "success" and reports the browser failure in browserFallbackStatus / browserFallbackError.
Added browserFallbackStatus and browserFallbackError to the raw dataset schema view for easier troubleshooting.
0.0.96
Added fallbackToBrowser input, disabled by default, so users can choose fast HTTP-only detail enrichment or slower browser fallback for missing important fields.
Run summaries now include fallbackToBrowser, making the speed/completeness setting visible in the OUTPUT record.
Updated docs and input schema to clarify that comment count may require browser fallback.
0.0.95
Detail enrichment now accepts complete RSS/listing rows when all lightweight detail metadata endpoints fail, avoiding Puppeteer fallback for rows that already have title, author, channel ID/URL, views, likes, and publish date.
Added tests for the complete base-row fast path and the all-metadata-failed scenario.
0.0.94
HTTP detail enrichment now tries YouTube player metadata and oEmbed directly when the Shorts HTML request times out or is blocked.
This reduces hosted browser fallback for channel RSS rows while preserving author, channel ID, channel URL, view count, likes, and publish date when lightweight metadata endpoints respond.
0.0.93
Sanitized channel source values before using them as Apify Proxy session IDs, fixing hosted HTTP listing attempts for handles such as @youtube.
Added a regression test for proxy session IDs so the RSS-first channel path is not skipped on hosted runs because of handle characters.
0.0.92
Channel HTTP listing now tries the lightweight YouTube RSS feed directly from channel IDs and handles before loading the channel page.
This removes the browser listing startup for channels whose recent feed entries are Shorts, while preserving the existing browser fallback for channels with no feed-visible Shorts.
Added tests for normalized channel-ID and handle extraction used by the feed-first path.
0.0.91
Added a no-browser HTTP listing path for channel and hashtag sources when channel-page enrichment is disabled.
The default and fast detail runs can now collect listing cards and enrich video metrics without starting Puppeteer, falling back to the browser only when HTTP listing or detail extraction is incomplete.
Added a channel RSS fallback for thin channel Shorts pages, preserving recent Short IDs, titles, thumbnails, views, likes, and publish dates without browser listing.
Channel RSS fallback can now resolve handle URLs through YouTube's lightweight navigation API before loading the feed.
Added a YouTube oEmbed metadata fallback to recover creator handles, channel URLs, thumbnails, and titles before starting Puppeteer.
HTTP listing and detail requests now send a YouTube consent cookie, reducing the chance that Apify Proxy receives a consent page that forces browser fallback.
Kept the public sample input on one enriched hashtag result after hosted direct-URL evidence showed faster runtime but a missing viewCount.
HTTP detail enrichment now keeps trying alternate network routes when the first response has views and publish date but is still missing channel identity.
HTTP detail rows now avoid slow browser fallback when they already have title, author, a channel identity hint, and view metadata, which keeps short Apify test runs under the 300-second timeout more reliably.
Moved linkedom into production dependencies because listing HTML parsing now runs in the Actor container.
0.0.79
Reused the no-browser HTTP Shorts metadata path for hashtag and channel listing results when includeChannelDetails is disabled.
Detail runs now fall back to browser pages only when HTTP metadata enrichment cannot produce a row, reducing default sample runtime while preserving reliability.
Partial HTTP rows that miss core channel or view-count fields now continue to browser detail enrichment instead of being accepted too early.
Channel and hashtag listing extraction now also reads structured shortsLockupViewModel data, which recovers listing view counts when YouTube does not render them into visible card text.
Added normalized viewCountText output when YouTube exposes only a numeric view count.
Tightened local enriched smoke checks so regressions in key fields such as viewCount, viewCountText, author, publish date, and channel URL fail before publishing.
0.0.78
Added per-row dataQualityScore and missingFields fields so users can quickly filter complete rows and understand which YouTube fields were unavailable.
0.0.77
Reduced browser navigation timeout to 30 seconds so slow YouTube/proxy attempts retry faster while still keeping one retry for reliability.
0.0.75
Added a default key-value store OUTPUT summary with result counts, detail status breakdowns, source breakdowns, missing-field counts, and field completeness scores.
0.0.74
Tuned browser navigation to proceed after domcontentloaded and reduced retry cost, avoiding long waits for late YouTube assets when Shorts content is already available.
0.0.73
Broadened detail-page view-count fallback selectors to scan Shorts metapanel and view-labelled accessibility text, improving channel result completeness when structured metadata omits views.
0.0.72
Changed the public sample input to one enriched hashtag result, which kept hosted test runtime under 300 seconds while returning listing view counts plus detail fields.
Removed the hosted-ineffective direct /watch?v= fallback so direct URL runs do not pay extra latency before browser fallback.
0.0.71
Direct URL HTTP enrichment now also tries the matching /watch?v= page before browser fallback, which can expose richer player metadata for Shorts.
0.0.70
Made the public sample input unambiguously use one direct Short URL so Apify's default test run stays under the 300-second limit.
Direct URL HTTP enrichment now retries the initial Shorts page without proxy before starting Puppeteer, reducing browser fallback on hosted runs.
0.0.69
The direct URL player metadata fallback now retries without proxy if the proxied player request is too thin or blocked.
0.0.68
Added a default YouTube web client key fallback for thin direct Shorts HTML that omits Innertube config.
This keeps the direct URL no-browser path able to request player metadata on Apify Proxy responses.
0.0.67
Added a lightweight YouTube player metadata fallback for direct URL HTTP runs.
The no-browser path can now recover view count, publish date, and description when the first Shorts HTML response is thin.
0.0.66
Added a no-browser fast path for direct videoUrls when channel page enrichment is disabled.
Direct URL sample runs now fetch and parse Shorts HTML first, then fall back to Puppeteer only when needed.
Added fixture tests for direct Shorts HTML metadata parsing and output shaping.
0.0.65
Changed the default for includeChannelDetails to false so the public sample run avoids slow channel-page visits.
Kept video detail enrichment enabled by default; users can still enable channel profile enrichment explicitly.
0.0.64
Removed unsafe Shorts interactionCount view-count fallback because hosted YouTube pages can expose likes there instead of real views.
Added explicit viewCountText model scanning so only values labelled as views are parsed as view counts.
0.0.63
Made the Marketplace sample input use one direct Short URL so hosted test runs avoid slow listing scans.
Improved detail extraction from inline YouTube JSON and page meta tags for better cloud results when the live Shorts UI is only partially hydrated.
Reduced the internal fallback default for numberOfResults to 1 to match the public input schema.
Added a schema-default smoke script so the published sample input can be tested directly.
0.0.62
Added videoUrls input for direct YouTube Shorts URL enrichment without first scraping a channel or hashtag listing.
Added direct URL smoke coverage for cheaper focused validation runs.
0.0.61
Added includeChannelDetails so users can collect enriched video metrics while skipping slower creator channel profile visits.
Kept the default test input small enough for Apify's 300-second smoke run.
Improved local smoke scripts to fail when a run only emits failed rows or no Shorts URLs.
0.0.56
Detail enrichment is now enabled by default so hashtag and channel runs return author, engagement, publish date, and channel metadata when available.
Added channel fields: channelId and channelUrl.
Improved YouTube Shorts detail extraction from structured page data.
Added cached channel profile enrichment for subscriber counts, profile pictures, and channel info.
Improved view-count merging so detail fallbacks do not overwrite stronger listing view counts.
Added deterministic tests, local smoke scripts, output schema, and richer dataset views.
0.0.55
Fixed a detail view-count regression found during hosted Apify testing.
Published improved detail extraction and channel enrichment.
0.0.54
Added proxy configuration support, input normalization, hashtag and channel source tracking, listing/detail request labels, and structured output fields.