ScavioScavio
ProduitTarifsDocumentation
ConnexionCommencer
  1. Accueil
  2. Tutoriels
  3. Comment extraire les commentaires YouTube en JSON structuré via l'API Scavio Search
Tutoriel

Comment extraire les commentaires YouTube en JSON structuré via l'API Scavio Search

Extrayez les commentaires de vidéos YouTube en JSON structuré à l'aide de l'API Scavio Search. Analysez les fils de commentaires, le sentiment et les données d'engagement pour les pipelines d'analyse.

Obtenez une clé API gratuiteDocumentation API

Les commentaires YouTube contiennent des retours sur les produits, le sentiment du public et des idées de contenu que la plupart des outils ignorent. Ce tutoriel utilise l'API Scavio Search pour trouver des pages de vidéos YouTube, extraire les données des commentaires et renvoyer un JSON structuré et propre prêt pour les pipelines d'analyse, le scoring de sentiment ou la consommation par des agents.

Prérequis

  • Python 3.11+ ou Node.js 20+
  • Une clé API Scavio depuis https://scavio.dev
  • Connaissance de base de l'analyse JSON
  • Optionnel : pandas pour l'analyse de données

Parcours

Étape 1: Rechercher des pages de vidéos YouTube

Utilisez l'API Scavio Search avec une requête limitée au site pour trouver des URL de vidéos YouTube correspondant à votre sujet. L'API renvoie les métadonnées de la page et des extraits de contenu.

Python
import httpx

SCAVIO_API_KEY = "your-api-key"

async def search_youtube_videos(topic: str, max_results: int = 5) -> list[dict]:
    async with httpx.AsyncClient(timeout=15) as client:
        resp = await client.post(
            "https://api.scavio.dev/api/v1/search",
            headers={"x-api-key": SCAVIO_API_KEY},
            json={
                "query": f"site:youtube.com {topic}",
                "num_results": max_results
            }
        )
        resp.raise_for_status()
        results = resp.json().get("results", [])
        videos = []
        for r in results:
            url = r.get("url", "")
            if "youtube.com/watch" in url or "youtu.be/" in url:
                videos.append({
                    "url": url,
                    "title": r.get("title", ""),
                    "snippet": r.get("description", ""),
                    "video_id": extract_video_id(url)
                })
        return videos

def extract_video_id(url: str) -> str:
    if "v=" in url:
        return url.split("v=")[1].split("&")[0]
    if "youtu.be/" in url:
        return url.split("youtu.be/")[1].split("?")[0]
    return ""

Étape 2: Récupérer et analyser les données des commentaires à partir des pages de vidéos

Recherchez les discussions et les fils de commentaires liés à chaque vidéo. L'API Scavio capture le contenu de la page qui inclut le texte des commentaires visibles à partir des pages indexées.

Python
async def fetch_video_comments(
    client: httpx.AsyncClient,
    video_id: str,
    video_title: str
) -> list[dict]:
    resp = await client.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": SCAVIO_API_KEY},
        json={
            "query": f"youtube comments "{video_title}"",
            "num_results": 10
        }
    )
    resp.raise_for_status()
    results = resp.json().get("results", [])
    comments = []
    for r in results:
        content = r.get("description", "")
        if len(content) > 20:
            comments.append({
                "video_id": video_id,
                "source_url": r.get("url", ""),
                "text": content,
                "source_title": r.get("title", "")
            })
    return comments

Étape 3: Structurer la sortie en JSON propre

Combinez les métadonnées vidéo et les données de commentaires en une seule sortie JSON structurée. Ajoutez des horodatages et une déduplication pour garder les données propres.

Python
from datetime import datetime

async def extract_youtube_comments(topic: str) -> dict:
    videos = await search_youtube_videos(topic)
    all_data = []
    seen_texts = set()

    async with httpx.AsyncClient(timeout=15) as client:
        for video in videos:
            comments = await fetch_video_comments(
                client, video["video_id"], video["title"]
            )
            unique_comments = []
            for c in comments:
                text_key = c["text"][:100].lower()
                if text_key not in seen_texts:
                    seen_texts.add(text_key)
                    unique_comments.append(c)
            all_data.append({
                "video": video,
                "comments": unique_comments,
                "comment_count": len(unique_comments)
            })

    return {
        "topic": topic,
        "extracted_at": datetime.now().isoformat(),
        "total_videos": len(videos),
        "total_comments": sum(v["comment_count"] for v in all_data),
        "videos": all_data
    }

Exemple Python

Python
import asyncio
import json
import httpx
from datetime import datetime

SCAVIO_API_KEY = "your-api-key"

def extract_video_id(url: str) -> str:
    if "v=" in url:
        return url.split("v=")[1].split("&")[0]
    if "youtu.be/" in url:
        return url.split("youtu.be/")[1].split("?")[0]
    return ""

async def main():
    topic = "AI agent frameworks 2026"
    async with httpx.AsyncClient(timeout=15) as client:
        # Find videos
        resp = await client.post(
            "https://api.scavio.dev/api/v1/search",
            headers={"x-api-key": SCAVIO_API_KEY},
            json={"query": f"site:youtube.com {topic}", "num_results": 5}
        )
        videos = [
            {"url": r["url"], "title": r.get("title", ""), "video_id": extract_video_id(r["url"])}
            for r in resp.json().get("results", [])
            if "youtube.com/watch" in r.get("url", "")
        ]

        # Fetch comment discussions
        all_comments = []
        for v in videos:
            resp = await client.post(
                "https://api.scavio.dev/api/v1/search",
                headers={"x-api-key": SCAVIO_API_KEY},
                json={"query": f"youtube comments \"{v['title']}\"", "num_results": 5}
            )
            for r in resp.json().get("results", []):
                if len(r.get("description", "")) > 20:
                    all_comments.append({"video": v["title"], "text": r["description"][:200]})

    output = {
        "topic": topic,
        "extracted_at": datetime.now().isoformat(),
        "videos_found": len(videos),
        "comments_extracted": len(all_comments),
        "data": all_comments
    }
    print(json.dumps(output, indent=2))

asyncio.run(main())

Exemple JavaScript

JavaScript
const SCAVIO_API_KEY = "your-api-key";

function extractVideoId(url) {
  if (url.includes("v=")) return url.split("v=")[1].split("&")[0];
  if (url.includes("youtu.be/")) return url.split("youtu.be/")[1].split("?")[0];
  return "";
}

async function searchScavio(query, numResults = 5) {
  const resp = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST",
    headers: { "x-api-key": SCAVIO_API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ query, num_results: numResults })
  });
  return resp.json();
}

async function main() {
  const topic = "AI agent frameworks 2026";
  const videoData = await searchScavio("site:youtube.com " + topic);
  const videos = (videoData.results || [])
    .filter(r => (r.url || "").includes("youtube.com/watch"))
    .map(r => ({ url: r.url, title: r.title, videoId: extractVideoId(r.url) }));

  const allComments = [];
  for (const v of videos) {
    const commData = await searchScavio('youtube comments "' + v.title + '"', 5);
    for (const r of (commData.results || [])) {
      if ((r.description || "").length > 20) {
        allComments.push({ video: v.title, text: r.description.slice(0, 200) });
      }
    }
  }

  console.log(JSON.stringify({
    topic,
    extractedAt: new Date().toISOString(),
    videosFound: videos.length,
    commentsExtracted: allComments.length,
    data: allComments
  }, null, 2));
}

main();

Sortie attendue

JSON
{
  "topic": "AI agent frameworks 2026",
  "extracted_at": "2026-05-17T10:30:00",
  "videos_found": 4,
  "comments_extracted": 12,
  "data": [...]
}

Tutoriels associés

  • Comment trouver des produits gagnants sur TikTok avec l'API TikTok de Scavio
  • Comment construire un agent de recherche marketing avec l'API Scavio Search
  • Comment construire un tracker de classement économique avec l’API Scavio Search

Questions fréquentes

La plupart des développeurs terminent ce tutoriel en 15 à 30 minutes. Vous aurez besoin d'une clé API Scavio (l'offre gratuite suffit) et d'un environnement Python ou JavaScript fonctionnel.

Python 3.11+ ou Node.js 20+. Une clé API Scavio depuis https://scavio.dev. Connaissance de base de l'analyse JSON. Optionnel : pandas pour l'analyse de données. Une clé API Scavio vous donne 50 crédits gratuits à l'inscription.

Oui. L'offre gratuite comprend 50 crédits à l'inscription, ce qui est largement suffisant pour terminer ce tutoriel et prototyper une solution fonctionnelle.

Scavio dispose d'un package natif LangChain (langchain-scavio), d'un serveur MCP et d'une API REST simple qui fonctionne avec tout client HTTP. Ce tutoriel utilise the raw REST API, mais vous pouvez l'adapter à votre framework de prédilection.

Ressources connexes

Best Of

Meilleurs outils d'extraction de commentaires YouTube en 2026

Read more
Glossary

Extraction de commentaires YouTube

Read more
Best Of

Meilleure API YouTube Data en 2026

Read more
Use Case

Pipeline de métadonnées YouTube

Read more
Use Case

Données YouTube Influencer via API au lieu de Scraping

Read more
Solution

Trouvez des influenceurs YouTube via API plutôt que par scraping

Read more

Commencer

Extrayez les commentaires de vidéos YouTube en JSON structuré à l'aide de l'API Scavio Search. Analysez les fils de commentaires, le sentiment et les données d'engagement pour les pipelines d'analyse.

Obtenez une clé API gratuiteLire la documentation
ScavioScavio

API de recherche en temps réel pour agents IA. Recherchez sur toutes les plateformes, pas seulement Google.

Produit

  • Fonctionnalités
  • Tarifs
  • Tableau de bord
  • Affiliés

Développeurs

  • Documentation
  • Référence API
  • Démarrage rapide
  • Intégration MCP
  • SDK Python

Alternatives

  • Alternative à Tavily
  • Alternative à SerpAPI
  • Alternative à Firecrawl
  • Alternative à Exa

Outils

  • Formateur JSON
  • cURL vers code
  • Compteur de jetons
  • Tous les outils

© 2026 Scavio. Tous droits réservés.

Featured on TAAFT
Conditions d'utilisationPolitique de confidentialité