Les métadonnées des vidéos YouTube — titre, nombre de vues, nombre de likes, description, tags, nom de la chaîne et date de publication — sont précieuses pour l'analyse de contenu, la recherche d'influenceurs et le benchmarking concurrentiel. L'API YouTube Data v3 impose des quotas quotidiens stricts qui limitent les analyses à grande échelle. Le point de terminaison Scavio pour les métadonnées YouTube renvoie des métadonnées vidéo riches par ID de vidéo sans les contraintes de quota de l'API YouTube. Ce tutoriel montre comment récupérer les métadonnées pour des vidéos individuelles et effectuer plusieurs recherches par lot efficacement.
Prérequis
- Python 3.8 ou supérieur
- bibliothèque requests installée
- Une clé API Scavio
- Un ou plusieurs ID de vidéos YouTube à rechercher
Parcours
Étape 1: Récupérer les métadonnées d'une seule vidéo
Envoyer une requête POST au point de terminaison Scavio avec platform youtube, action metadata et le video_id.
def get_video_metadata(video_id: str) -> dict:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "youtube", "action": "metadata", "video_id": video_id}
)
response.raise_for_status()
return response.json()Étape 2: Extraire les champs clés
Analyser la réponse des métadonnées pour extraire le titre, le nombre de vues, le nombre de likes et les informations sur la chaîne.
meta = get_video_metadata("dQw4w9WgXcQ")
video = meta.get("video", {})
print("Title:", video.get("title"))
print("Views:", video.get("view_count"))
print("Likes:", video.get("like_count"))
print("Channel:", video.get("channel_name"))
print("Published:", video.get("published_at"))Étape 3: Récupérer plusieurs vidéos par lot
Parcourir une liste d'ID de vidéos et collecter les métadonnées pour chacune. Utiliser time.sleep pour respecter les limites de débit.
import time
def batch_metadata(video_ids: list[str]) -> list[dict]:
results = []
for vid_id in video_ids:
meta = get_video_metadata(vid_id)
results.append(meta.get("video", {}))
time.sleep(0.5) # polite rate limiting
return resultsÉtape 4: Trier les vidéos par nombre de vues
Classer les vidéos récupérées par nombre de vues pour identifier le contenu le plus populaire.
videos = batch_metadata(["dQw4w9WgXcQ", "9bZkp7q19f0", "kJQP7kiw5Fk"])
sorted_videos = sorted(videos, key=lambda v: int(v.get("view_count", 0) or 0), reverse=True)
for v in sorted_videos:
print(f"{v.get('title', 'N/A')[:50]}: {v.get('view_count')} views")Exemple Python
import os
import time
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def get_metadata(video_id: str) -> dict:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"platform": "youtube", "action": "metadata", "video_id": video_id})
r.raise_for_status()
return r.json().get("video", {})
def batch(ids: list[str]) -> list[dict]:
results = []
for vid in ids:
results.append(get_metadata(vid))
time.sleep(0.3)
return results
if __name__ == "__main__":
ids = ["dQw4w9WgXcQ", "9bZkp7q19f0"]
videos = batch(ids)
for v in sorted(videos, key=lambda x: int(x.get("view_count") or 0), reverse=True):
print(f"{v.get('title', 'N/A')[:60]}: {v.get('view_count')} views")Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getMetadata(videoId) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "youtube", action: "metadata", video_id: videoId })
});
const data = await res.json();
return data.video || {};
}
async function main() {
const ids = ["dQw4w9WgXcQ", "9bZkp7q19f0"];
const videos = await Promise.all(ids.map(getMetadata));
videos.sort((a, b) => (parseInt(b.view_count) || 0) - (parseInt(a.view_count) || 0));
videos.forEach(v => console.log(`${v.title?.slice(0, 60)}: ${v.view_count} views`));
}
main().catch(console.error);Sortie attendue
{
"video": {
"video_id": "dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up (Official Video)",
"channel_name": "Rick Astley",
"channel_id": "UCuAXFkgsw1L7xaCfnd5JJOw",
"view_count": "1547823901",
"like_count": "17200000",
"published_at": "2009-10-25",
"duration": "PT3M33S",
"description": "The official video for Rick Astley's Never Gonna Give You Up..."
}
}