> ## Documentation Index
> Fetch the complete documentation index at: https://firecrawl-claude-eager-dijkstra-u6tgua.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Scraper GitHub

> Découvrez comment scraper et effectuer des recherches sur GitHub à l'aide des fonctionnalités principales de Firecrawl et du Research Index

Découvrez comment utiliser les fonctionnalités principales de Firecrawl pour scraper des dépôts, des tickets et de la documentation sur GitHub.

<Info>
  Il existe deux façons d'obtenir des données GitHub avec Firecrawl. Vous pouvez **scraper, cartographier ou crawler** une URL `github.com` spécifique (ce que couvre le reste de cette page), ou utiliser la recherche GitHub du [Research Index](/fr/features/research) pour découvrir de manière sémantique des tickets, des pull requests, des discussions et des README pertinents sur l'ensemble de GitHub, sans connaître l'URL exacte.
</Info>

<div id="setup">
  ## Configuration
</div>

```bash theme={null}
npm install firecrawl zod
```

<div id="scrape-with-json-mode">
  ## Scrape en mode JSON
</div>

Extraire des données structurées à partir de dépôts en utilisant des schémas Zod.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';
import { z } from 'zod';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', {
    formats: [{
        type: 'json',
        schema: z.object({
            name: z.string(),
            description: z.string(),
            stars: z.number(),
            forks: z.number(),
            language: z.string(),
            topics: z.array(z.string())
        })
    }]
});

console.log(result.json);
```

<div id="search">
  ## Search
</div>

Rechercher des dépôts, des tickets ou de la documentation sur GitHub.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const searchResult = await firecrawl.search('machine learning site:github.com', {
    limit: 10,
    sources: [{ type: 'web' }], // { type: 'news' }, { type: 'images' }
    scrapeOptions: {
        formats: ['markdown']
    }
});

console.log(searchResult);
```

<div id="search-github-with-the-research-index">
  ## Recherche sur GitHub avec le Research Index
</div>

Le [Research Index](/fr/features/research) de Firecrawl comprend un index GitHub qui recherche sémantiquement parmi les tickets, pull requests, discussions et README de dépôts GitHub publics indexés. Il permet de trouver des détails d’implémentation et des solutions d’ingénierie existantes lorsque vous ne connaissez pas le dépôt ou l’URL exacts.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const results = await firecrawl.research.searchGithub(
    'how to handle rate limit retries with exponential backoff',
    { k: 10 }
);

console.log(results);
```

Vous pouvez également accéder au même index GitHub via le point de terminaison général [`/search`](/fr/features/search), avec la catégorie `github`.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const searchResult = await firecrawl.search('exponential backoff retry', {
    categories: ['github'],
    limit: 10
});

console.log(searchResult);
```

Consultez le [guide du Research Index](/fr/features/research) pour savoir comment l’utiliser avec Python, cURL, la CLI et MCP.

<div id="scrape">
  ## Scrape
</div>

Extraire une seule page GitHub – dépôt, ticket ou fichier.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', {
    formats: ['markdown'] // par ex. html, links, etc.
});

console.log(result);
```

<div id="map">
  ## Map
</div>

Découvrez toutes les URL disponibles dans un dépôt ou un site de documentation. Remarque : Map ne renvoie que les URL, sans contenu.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const mapResult = await firecrawl.map('https://github.com/vercel/next.js/tree/canary/docs');

console.log(mapResult.links);
// Retourne un tableau d'URL sans contenu
```

<div id="crawl">
  ## Crawl
</div>

Parcourir plusieurs pages d’un dépôt ou d’une documentation.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wiki', {
    limit: 10,
    scrapeOptions: {
        formats: ['markdown']
    }
});

console.log(crawlResult.data);
```

<div id="batch-scrape">
  ## Extraction par lot
</div>

Extraire plusieurs URL GitHub simultanément.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

// Attendre la fin
const job = await firecrawl.batchScrape([
    'https://github.com/vercel/next.js',
    'https://github.com/facebook/react',
    'https://github.com/microsoft/typescript'],
    {
        options: {
            formats: ['markdown']
        },
        pollInterval: 2,
        timeout: 120
    }
);


console.log(job.status, job.completed, job.total);

console.log(job);
```

<div id="batch-scrape-with-json-mode">
  ## Extraction par lot avec le mode JSON
</div>

Extrayez des données structurées à partir de plusieurs dépôts en une seule opération.

```typescript theme={null}
import { Firecrawl } from 'firecrawl';
import { z } from 'zod';

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

// Attendre la fin
const job = await firecrawl.batchScrape([
    'https://github.com/vercel/next.js',
    'https://github.com/facebook/react'],
    {
        options: {
            formats: [{
                type: 'json',
                schema: z.object({
                    name: z.string(),
                    description: z.string(),
                    stars: z.number(),
                    language: z.string()
                })
            }]
        },
        pollInterval: 2,
        timeout: 120
    }
);


console.log(job.status, job.completed, job.total);

console.log(job);
```
