YouTube Video Metadata Scraper - Details to JSON avatar

YouTube Video Metadata Scraper - Details to JSON

Pricing

from $1.20 / 1,000 results

Go to Apify Store
YouTube Video Metadata Scraper - Details to JSON

YouTube Video Metadata Scraper - Details to JSON

Export known YouTube video details with explicit source labels. Get available titles, descriptions and metrics, or reject the limited oEmbed fallback.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 hours ago

Last modified

Share

Enrich known public YouTube video URLs with available titles, descriptions, channel fields, dates and engagement metrics. Every row identifies whether it came from the video page or the limited public oEmbed response, so integrations can distinguish detailed and basic records.

Try a small export: Python course video metadata example. Free-plan result events cost $1.5 per 1,000 video records, plus the Actor-start event. Check the Pricing tab for your account’s discounts.

Cloud availability, September 10, 2026: the tested Apify run returned basic oEmbed metadata. Full video-page extraction worked locally but encountered a source access block in the cloud. Do not depend on detailed metrics until your own run returns metadata_source: video_page.

Tested input

{
"videoUrls": [
"https://www.youtube.com/watch?v=K5KVEU3aaeQ"
]
}

Run the Actor, open Dataset → Overview, then export JSON, CSV or Excel. The example above returned one record in a September 10, 2026 Apify run. Source availability can change.

Real output

Selected fields from that run:

{
"video_id": "K5KVEU3aaeQ",
"title": "Python Full Course for Beginners",
"channel": "Programming with Mosh",
"duration_seconds": null,
"view_count": null,
"like_count": null,
"comment_count": null,
"upload_date": null,
"metadata_source": "oembed"
}

Input controls

Supply videoUrls as one value or a list of up to 100 public video URLs or eleven-character video IDs. Standard watch, short-link, Shorts, embed and live-video URLs are accepted. Duplicate video IDs run once. Channel and playlist URLs are rejected. Set requireFullMetadata: true to reject oEmbed fallback when video-page extraction fails.

Scope and field availability

metadata_source: video_page identifies video-page extraction, but individual fields can still be unavailable. metadata_source: oembed contains basic title, author/channel URL and thumbnail data; description, duration, engagement and dates remain null. Both are billable video results when fallback is allowed. Strict mode rejects oEmbed, but it does not guarantee that every field exists in the video-page response.

Costs, limits and failures

On the Free plan, each exported video record costs $0.0015. The start event costs $0.00005 per allocated GB, with a minimum of one event. At 512 MB, the 1-record example costs $0.00155 in Actor events before discounts. Prices remain unchanged in this update.

Set a maximum charge in the run options. Delivery stops when the result budget is reached. Duplicate input URLs or IDs are collapsed before retrieval; rerunning the same input later is a new billable observation. Limits are upper bounds, not guaranteed row counts.

The Output tab links to SUMMARY. Source errors fail the run while retaining any valid rows already exported; successful earlier rows retain their result charges. Inspect the summary, dataset and run log before retrying. An unavailable source is not evidence that a channel, playlist or video was deleted. A legitimate empty collection or a filter excluding every video can still return zero rows successfully.

Export an existing run with Python

Install apify-client, set APIFY_TOKEN and APIFY_DATASET_ID, and export the completed dataset without starting another run:

import json
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
rows = list(client.dataset(os.environ["APIFY_DATASET_ID"]).iterate_items())
with open("youtube-video-metadata-scraper.json", "w", encoding="utf-8") as output:
json.dump(rows, output, ensure_ascii=False, indent=2)

Save a Task for each recurring input and schedule it through Apify. API and automation workflows can reuse the same input. Compare video IDs between runs when building a monitoring database.

Questions before running

Does it return transcripts or download media? No. It returns metadata only.

Why are metrics null? The source may omit them, or the Actor may have used oEmbed. Inspect metadata_source and availability.

Can I require full details? requireFullMetadata disables oEmbed fallback. It does not invent fields YouTube withholds.