Scraping no GitHub
Aprenda a fazer scraping e buscas no GitHub usando os principais recursos do Firecrawl e o Research Index
Aprenda a usar os principais recursos do Firecrawl para fazer scraping de repositórios, issues e documentação do GitHub.
Há duas maneiras de obter dados do GitHub com o Firecrawl. Você pode fazer scraping, mapear ou fazer rastreamento uma URL específica do github.com (abordado no restante desta página) ou usar a busca do GitHub no Research Index para descobrir semanticamente issues, pull requests, discussões e READMEs relevantes em todo o GitHub sem conhecer a URL exata.
npm install firecrawl zodExtraia dados estruturados de repositórios usando esquemas Zod.
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);Pesquise repositórios, issues ou documentação no GitHub.
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);O Research Index do Firecrawl inclui um índice do GitHub que realiza buscas semânticas em issues, pull requests, discussões e READMEs de repositórios públicos indexados. Ele é útil para encontrar detalhes de implementação e soluções de engenharia já existentes quando você não sabe qual é o repositório ou a URL exata.
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);Você também pode acessar o mesmo índice do GitHub usando o endpoint geral /search com a categoria github.
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);Consulte o guia do Research Index para ver exemplos de uso com Python, cURL, CLI e MCP.
Fazer scraping de uma única página do GitHub — repositório, issue ou arquivo.
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'] // ex.: html, links, etc.
});
console.log(result);Descubra todas as URLs disponíveis em um repositório ou site de documentação. Nota: Map retorna somente URLs, sem conteúdo.
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);
// Retorna array de URLs sem conteúdoFazer crawling de várias páginas de um repositório ou documentação.
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);Fazer scraping de várias URLs do GitHub simultaneamente.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
// Aguardar a conclusão
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);Extraia dados estruturados de vários repositórios de uma só vez.
import { Firecrawl } from 'firecrawl';
import { z } from 'zod';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
// Aguardar conclusão
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);