Documentation Index
Fetch the complete documentation index at: https://firecrawl-mog-search-exclude-include-domains.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Faça scraping de páginas individuais, rastreie sites inteiros e mapeie URLs no seu aplicativo Node.js. O SDK gerencia a paginação, as novas tentativas e a consulta assíncrona de jobs para que você possa se concentrar nos dados retornados.
Instale o SDK com o npm:
// npm install @mendable/firecrawl-js
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
- Obtenha uma chave de API em firecrawl.dev
- Defina a chave de API como uma variável de ambiente chamada
FIRECRAWL_API_KEY ou passe-a como parâmetro para a classe FirecrawlApp.
Veja um exemplo de como usar o SDK com tratamento de erros:
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({apiKey: "fc-YOUR_API_KEY"});
// Fazer scraping de um site
const scrapeResponse = await firecrawl.scrape('https://firecrawl.dev', {
formats: ['markdown', 'html'],
});
console.log(scrapeResponse)
// Fazer crawling de um site
const crawlResponse = await firecrawl.crawl('https://firecrawl.dev', {
limit: 100,
scrapeOptions: {
formats: ['markdown', 'html'],
}
});
console.log(crawlResponse)
Use o método scrape para extrair os dados de uma única URL e receber os dados estruturados da página.
// Fazer scraping de um site:
const scrapeResult = await firecrawl.scrape('firecrawl.dev', { formats: ['markdown', 'html'] });
console.log(scrapeResult)
Análise de arquivos enviados
Use parse quando quiser enviar um arquivo local (html, pdf, docx, xlsx, etc.) em vez de fazer scraping a partir de uma URL.
parse não oferece suporte a changeTracking nem a opções exclusivas do navegador, como screenshot, branding, actions, waitFor, location e mobile.
const parsed = await firecrawl.parse(
{
data: "<html><body><h1>Node Parse</h1></body></html>",
filename: "upload.html",
contentType: "text/html",
},
{
formats: ["markdown"],
},
);
console.log(parsed.markdown);
Rastreie um site inteiro a partir de uma única URL com o método crawl. Você pode definir um limite de páginas, restringir o rastreamento a domínios específicos e escolher formatos de resultado. Consulte Paginação para paginação automática e manual.
const job = await firecrawl.crawl('https://docs.firecrawl.dev', { limit: 5, pollInterval: 1, timeout: 120 });
console.log(job.status);
Rastreamento Somente do Sitemap
Use sitemap: "only" para rastrear apenas URLs do sitemap (a URL inicial sempre é incluída e a descoberta de links em HTML é ignorada).
const job = await firecrawl.crawl('https://docs.firecrawl.dev', {
sitemap: 'only',
limit: 25,
});
console.log(job.status, job.data.length);
Inicie um rastreamento sem aguardar a conclusão usando startCrawl. O método retorna um ID do job que você pode consultar depois. Use crawl em vez disso quando quiser bloquear até a conclusão. Veja Paginação para comportamento e limites de paginação.
const { id } = await firecrawl.startCrawl('https://docs.firecrawl.dev', { limit: 10 });
console.log(id);
Verificando o status do rastreamento
Verifique se um rastreamento ainda está em execução, foi concluído ou falhou usando o método checkCrawlStatus. Passe o ID do job retornado por startCrawl.
const status = await firecrawl.getCrawlStatus("<id-da-varredura>");
console.log(status);
Cancelando um rastreamento
Cancele um rastreamento em andamento usando o método cancelCrawl. Informe o ID do job retornado por startCrawl.
const ok = await firecrawl.cancelCrawl("<crawl-id>");
console.log("Cancelado:", ok);
Descubra todas as URLs de um site com o método map. Informe uma URL inicial e receba uma lista das páginas encontradas.
const res = await firecrawl.map('https://firecrawl.dev', { limit: 10 });
console.log(res.links);
Receba os resultados do rastreamento em tempo real com o método crawlUrlAndWatch. Você recebe cada página conforme ela é rastreada, em vez de aguardar a conclusão de todo o job.
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: 'fc-YOUR-API-KEY' });
// Inicie um crawl e depois acompanhe
const { id } = await firecrawl.startCrawl('https://mendable.ai', {
excludePaths: ['blog/*'],
limit: 5,
});
const watcher = firecrawl.watcher(id, { kind: 'crawl', pollInterval: 2, timeout: 120 });
watcher.on('document', (doc) => {
console.log('DOC', doc);
});
watcher.on('error', (err) => {
console.error('ERR', err?.error || err);
});
watcher.on('done', (state) => {
console.log('DONE', state.status);
});
// Comece a acompanhar (WS com fallback em HTTP)
await watcher.start();
Os endpoints do Firecrawl para crawl e batch retornam uma URL next quando há mais dados disponíveis. O SDK de Node faz paginação automática por padrão e agrega todos os documentos; nesse caso, next será null. Você pode desativar a paginação automática ou definir limites.
Use o método waiter crawl para a experiência mais simples, ou inicie um job e faça a paginação manualmente.
- Inicie um job e, em seguida, recupere uma página por vez com
autoPaginate: false.
const crawlStart = await firecrawl.startCrawl('https://docs.firecrawl.dev', { limit: 5 });
const crawlJobId = crawlStart.id;
const crawlSingle = await firecrawl.getCrawlStatus(crawlJobId, { autoPaginate: false });
console.log('rastreamento de página única:', crawlSingle.status, 'docs:', crawlSingle.data.length, 'próximo:', crawlSingle.next);
- Mantenha a paginação automática ativada, mas interrompa antecipadamente com
maxPages, maxResults ou maxWaitTime.
const crawlLimited = await firecrawl.getCrawlStatus(crawlJobId, {
autoPaginate: true,
maxPages: 2,
maxResults: 50,
maxWaitTime: 15,
});
console.log('crawl limitado:', crawlLimited.status, 'docs:', crawlLimited.data.length, 'próximo:', crawlLimited.next);
Use o método waiter batchScrape ou inicie uma tarefa e pagine manualmente.
- Inicie um job e, em seguida, recupere uma página por vez com
autoPaginate: false.
const batchStart = await firecrawl.startBatchScrape([
'https://docs.firecrawl.dev',
'https://firecrawl.dev',
], { options: { formats: ['markdown'] } });
const batchJobId = batchStart.id;
const batchSingle = await firecrawl.getBatchScrapeStatus(batchJobId, { autoPaginate: false });
console.log('página única do lote:', batchSingle.status, 'docs:', batchSingle.data.length, 'próximo:', batchSingle.next);
- Mantenha a paginação automática ligada, mas interrompa antes com
maxPages, maxResults ou maxWaitTime.
const batchLimited = await firecrawl.getBatchScrapeStatus(batchJobId, {
autoPaginate: true,
maxPages: 2,
maxResults: 100,
maxWaitTime: 20,
});
console.log('lote limitado:', batchLimited.status, 'docs:', batchLimited.data.length, 'próximo:', batchLimited.next);
Inicie sessões de navegador na nuvem e execute código remotamente.
import Firecrawl from '@mendable/firecrawl-js';
const firecrawl = new Firecrawl({ apiKey: "fc-YOUR-API-KEY" });
const session = await firecrawl.browser({ ttl: 600 });
console.log(session.id); // ID da sessão
console.log(session.cdpUrl); // wss://cdp-proxy.firecrawl.dev/cdp/...
console.log(session.liveViewUrl); // https://liveview.firecrawl.dev/...
const result = await firecrawl.browserExecute(session.id, {
code: 'await page.goto("https://news.ycombinator.com")\ntitle = await page.title()\nprint(title)',
});
console.log(result.result); // "Hacker News"
Execute JavaScript em vez de Python:
const result = await firecrawl.browserExecute(session.id, {
code: 'await page.goto("https://example.com"); const t = await page.title(); console.log(t);',
language: "node",
});
Execute bash com o agent-browser:
const result = await firecrawl.browserExecute(session.id, {
code: "agent-browser open https://example.com && agent-browser snapshot",
language: "bash",
});
Salve e reutilize o estado do navegador (cookies, localStorage, etc.) entre sessões:
const session = await firecrawl.browser({
ttl: 600,
profile: {
name: "my-profile",
saveChanges: true,
},
});
Para controle completo do Playwright, conecte-se diretamente usando a URL do CDP:
import { chromium } from "playwright";
const browser = await chromium.connectOverCDP(session.cdpUrl);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
await page.goto("https://example.com");
console.log(await page.title());
await browser.close();
Listar e Encerrar Sessões
// Listar sessões ativas
const { sessions } = await firecrawl.listBrowsers({ status: "active" });
for (const s of sessions) {
console.log(s.id, s.status, s.createdAt);
}
// Fechar uma sessão
await firecrawl.deleteBrowser(session.id);
Sessão interativa vinculada ao scraping
Use o ID do job de scraping para continuar interagindo com o contexto da página reproduzida a partir desse scraping:
interact(jobId, {...}) executa código na sessão do navegador vinculada ao scraping.
- A primeira chamada de
interact inicializa automaticamente a sessão com base no contexto do scraping.
- Chamadas adicionais de
interact no mesmo ID do job reutilizam esse estado ativo do navegador.
stopInteraction(jobId) encerra a sessão interativa quando você terminar.
const doc = await firecrawl.scrape("https://example.com", {
actions: [{ type: "click", selector: "a[href='/pricing']" }],
});
const scrapeJobId = doc.metadata?.scrapeId;
if (!scrapeJobId) throw new Error("Missing scrape job id");
const run = await firecrawl.interact(scrapeJobId, {
code: "console.log(await page.url())",
language: "node",
timeout: 60,
});
console.log(run.stdout);
await firecrawl.stopInteraction(scrapeJobId);
O SDK lança exceções descritivas para quaisquer erros retornados pela API do Firecrawl. Envolva as chamadas em blocos try/catch, como mostrado nos exemplos acima.
Você é um agente de IA que precisa de uma chave de API do Firecrawl? Veja firecrawl.dev/agent-onboarding/SKILL.md para instruções automatizadas de onboarding.