Capacite seus aplicativos de IA com dados limpos de qualquer site. Apresentando recursos avançados de raspagem, rastreamento e extração de dados.
Este repositório está em desenvolvimento e ainda estamos integrando módulos personalizados ao repositório mono. Ainda não está totalmente pronto para implantação auto-hospedada, mas você pode executá-lo localmente.
Firecrawl é um serviço de API que pega um URL, rastreia-o e o converte em descontos limpos ou dados estruturados. Rastreamos todas as subpáginas acessíveis e fornecemos dados limpos para cada uma. Não é necessário mapa do site. Confira nossa documentação.
PST. ei, você, junte-se aos nossos observadores de estrelas :)
Fornecemos uma API fácil de usar com nossa versão hospedada. Você pode encontrar o playground e a documentação aqui. Você também pode hospedar o back-end, se desejar.
Confira os seguintes recursos para começar:
API : Documentação
SDKs : Python, Node, Go, Rust
Frameworks LLM : Langchain (python), Langchain (js), Llama Index, Crew.ai, Composio, PraisonAI, Superinterface, Vectorize
Estruturas de baixo código : Dify, Langflow, Flowise AI, Cargo, Pipedream
Outros : Zapier, Pabbly Connect
Quer um SDK ou integração? Deixe-nos saber abrindo um problema.
Para executar localmente, consulte o guia aqui.
Para usar a API, você precisa se inscrever no Firecrawl e obter uma chave de API.
Scrape : raspa um URL e obtém seu conteúdo em formato pronto para LLM (markdown, dados estruturados via LLM Extract, captura de tela, html)
Rastreamento : coleta todos os URLs de uma página da web e retorna conteúdo em formato pronto para LLM
Mapa : insira um site e obtenha todos os URLs do site - extremamente rápido
Formatos prontos para LLM : markdown, dados estruturados, captura de tela, HTML, links, metadados
O difícil : proxies, mecanismos anti-bot, conteúdo dinâmico (renderizado em js), análise de saída, orquestração
Personalização : excluir tags, rastrear paredes de autenticação com cabeçalhos personalizados, profundidade máxima de rastreamento, etc.
Análise de mídia : pdfs, docx, imagens.
Confiabilidade em primeiro lugar : projetado para obter os dados que você precisa - não importa o quão difícil seja.
Ações : clicar, rolar, inserir, esperar e muito mais antes de extrair dados
Lote (novo) : colete milhares de URLs ao mesmo tempo com um novo endpoint assíncrono
Você pode encontrar todos os recursos do Firecrawl e como usá-los em nossa documentação
Usado para rastrear um URL e todas as subpáginas acessíveis. Isso envia um trabalho de rastreamento e retorna um ID de trabalho para verificar o status do rastreamento.
curl -X POST https://api.firecrawl.dev/v1/crawl -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador fc-YOUR_API_KEY' -d '{ "url": "https://docs.firecrawl.dev", "limite": 100, "scrapeOptions": { "formatos": ["markdown", "html"] } }'
Retorna um ID de trabalho de rastreamento e o URL para verificar o status do rastreamento.
{ "sucesso": verdadeiro, "id": "123-456-789", "url": "https://api.firecrawl.dev/v1/crawl/123-456-789"}
Usado para verificar o status de um trabalho de rastreamento e obter seu resultado.
curl -X GET https://api.firecrawl.dev/v1/crawl/123-456-789 -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY'
{ "status": "concluído", "total": 36, "créditosUsados": 36, "expiresAt": "2024-00-00T00:00:00.000Z", "dados": [ { "markdown": "[Página inicial do Firecrawl Docs![logotipo light](https://mintlify.s3-us-west-1.amazonaws.com/firecrawl/logo/light.svg)!...", " html": ".. .", "metadata": {"title": "Construa um 'Bate-papo com site' usando Groq Llama 3 | Firecrawl","idioma": "en","sourceURL": "https://docs.firecrawl.dev /learn/rag-llama3","description": "Aprenda como usar Firecrawl, Groq Llama 3 e Langchain para construir um bot 'Bate-papo com seu site'.","ogLocaleAlternate": [],"statusCode": 200 } } ] }
Usado para extrair um URL e obter seu conteúdo nos formatos especificados.
curl -X POST https://api.firecrawl.dev/v1/scrape -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "url": "https://docs.firecrawl.dev", "formatos": ["markdown", "html"] }'
Resposta:
{ "success": true, "data": {"markdown": "A semana de lançamento I chegou! [Veja nosso lançamento do dia 2](https://www.firecrawl.dev/blog/launch-week-i-day -2-doubled-rate-limits)[? Ganhe 2 meses grátis...","html": "Mapa (Alfa)
Usado para mapear uma URL e obter URLs do site. Isso retorna a maioria dos links presentes no site.
curl -X POST https://api.firecrawl.dev/v1/map -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "url": "https://firecrawl.dev" }'Resposta:
{ "status": "sucesso", "links": ["https://firecrawl.dev","https://www.firecrawl.dev/pricing","https://www.firecrawl.dev/blog ","https://www.firecrawl.dev/playground","https://www.firecrawl.dev/smart-crawl", ] }Mapa com pesquisa
Mapa com parâmetro
search
permite pesquisar URLs específicos dentro de um site.curl -X POST https://api.firecrawl.dev/v1/map -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "url": "https://firecrawl.dev", "search": "docs" }'A resposta será uma lista ordenada do mais relevante para o menos relevante.
{ "status": "sucesso", "links": ["https://docs.firecrawl.dev","https://docs.firecrawl.dev/sdks/python","https://docs.firecrawl .dev/learn/rag-llama3", ] }Extração LLM (Beta)
Usado para extrair dados estruturados de páginas copiadas.
curl -X POST https://api.firecrawl.dev/v1/scrape -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "url": "https://www.mendable.ai/", "formatos": ["extrair"], "extrair": { "esquema": { "tipo": "objeto", " propriedades": { "company_mission": { "type": "string" }, "supports_sso": { "type": "boolean" }, "is_open_source": { "type": "boolean" }, "is_in_yc": { "type": "boolean" } }, "required": [ "company_mission", "supports_sso", "is_open_source", "is_in_yc" ] } } }'{ "success": true, "data": {"content": "Raw Content","metadata": { "title": "Mendable", "description": "Mendable permite que você crie facilmente aplicativos de bate-papo de IA. Ingerir , personalize e implante com uma linha de código em qualquer lugar que desejar Trazido a você pelo SideGuide", "robots": "follow, index", "ogTitle": "Mendable", "ogDescription": "Mendable permite que você construa facilmente. Aplicativos de bate-papo de IA. Ingira, personalize e implante com uma linha de código em qualquer lugar que você desejar. Trazido a você pelo SideGuide", "ogUrl": "https://mendable.ai/", "ogImage": "https://. mendable.ai/mendable_new_og1.png", "ogLocaleAlternate": [], "ogSiteName": "Mendable", "sourceURL": "https://mendable.ai/"},"llm_extraction": { "company_mission": " Treine uma IA segura em seus recursos técnicos que responda às perguntas de clientes e funcionários para que sua equipe não precise fazer isso", "supports_sso": true, "is_open_source": false, "is_in_yc": true} } }Extraindo sem esquema (Novo)
Agora você pode extrair sem um esquema apenas passando um
prompt
ao endpoint. O filme escolhe a estrutura dos dados.curl -X POST https://api.firecrawl.dev/v1/scrape -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "url": "https://docs.firecrawl.dev/", "formats": ["extract"], "extract": { "prompt": "Extraia a missão da empresa da página." } }'Interagindo com a página com ações (somente nuvem)
Firecrawl permite que você execute várias ações em uma página da web antes de copiar seu conteúdo. Isto é particularmente útil para interagir com conteúdo dinâmico, navegar pelas páginas ou acessar conteúdo que requer interação do usuário.
Aqui está um exemplo de como usar ações para navegar até google.com, pesquisar Firecrawl, clicar no primeiro resultado e fazer uma captura de tela.
curl -X POST https://api.firecrawl.dev/v1/scrape -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "url": "google.com", "formatos": ["markdown"], "ações": [ {"tipo": "espera", "milissegundos": 2000}, {"tipo": "click", "selector": "textarea[title="Search"]"}, {"type": "wait", "milliseconds": 2000}, {"type": "write", "text": " firecrawl"}, {"type": "wait", "milliseconds": 2000}, {"type": "press", "key": "ENTER"}, {"type": "wait", "milliseconds" : 3000}, {"type": "click", "selector": "h3"}, {"type": "wait", "milliseconds": 3000}, {"type": "screenshot"} ] }'Extração em lote de vários URLs (novo)
Agora você pode extrair em lote vários URLs ao mesmo tempo. É muito semelhante ao funcionamento do endpoint /crawl. Ele envia um trabalho de extração em lote e retorna um ID de trabalho para verificar o status da extração em lote.
curl -X POST https://api.firecrawl.dev/v1/batch/scrape -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "urls": ["https://docs.firecrawl.dev", "https://docs.firecrawl.dev/sdks/overview"], "formatos": ["markdown", "html" ] }'Pesquisa (v0) (beta)
Usado para pesquisar na web, obter os resultados mais relevantes, raspar cada página e retornar o markdown.
curl -X POST https://api.firecrawl.dev/v0/search -H 'Tipo de conteúdo: aplicativo/json' -H 'Autorização: Portador YOUR_API_KEY' -d '{ "query": "firecrawl", "pageOptions": { "fetchPageContent": true // false para uma API serp rápida } }'{ "sucesso": verdadeiro, "dados": [ { "url": "https://mendable.ai", "markdown": "# Markdown Content", "provider": "web-scraper", "metadata": {"title": "Mendable | AI para CX e Vendas","description": "AI para CX e Vendas","idioma": null,"sourceURL": "https://www.mendable.ai/" } } ] }Usando Python SDK
Instalando Python SDK
pip instalar firecrawl-pyRastrear um site
from firecrawl.firecrawl import FirecrawlAppapp = FirecrawlApp(api_key="fc-YOUR_API_KEY")# Raspe um site:scrape_status = app.scrape_url( 'https://firecrawl.dev', params={'formatos': ['markdown', 'html']} )print(scrape_status)# Rastrear um site:crawl_status = app.crawl_url( 'https://firecrawl.dev', params={'limite': 100, 'scrapeOptions': {'formatos': ['markdown', 'html']} }, poll_interval=30)print(crawl_status)Extraindo dados estruturados de uma URL
Com a extração LLM, você pode extrair facilmente dados estruturados de qualquer URL. Apoiamos esquemas pydantic para tornar isso mais fácil para você também. Aqui está como você pode usá-lo:
from firecrawl.firecrawl import FirecrawlAppapp = FirecrawlApp(api_key="fc-YOUR_API_KEY")class ArticleSchema(BaseModel):title: strpoints: intby: strcommentsURL: strclass TopArticlesSchema(BaseModel):top: List[ArticleSchema] = Field(..., max_items=5, description="5 principais histórias")data = app.scrape_url('https://news.ycombinator.com', {'formats': ['extract'],'extract': {'schema': TopArticlesSchema.model_json_schema() } })imprimir(dados["extrair"])Usando o Node SDK
Instalação
Para instalar o Firecrawl Node SDK, você pode usar npm:
npm instalar @mendable/firecrawl-jsUso
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 classeFirecrawlApp
.import FirecrawlApp, { CrawlParams, CrawlStatusResponse } from '@mendable/firecrawl-js';const app = new FirecrawlApp({apiKey: "fc-YOUR_API_KEY"});// Raspe um siteconst scrapeResponse = await app.scrapeUrl('https: //firecrawl.dev', { formatos: ['markdown', 'html'],});if (scrapeResponse) { console.log(scrapeResponse)}// Rastrear um siteconst crawlResponse = await app.crawlUrl('https://firecrawl.dev', { limite: 100, scrapeOptions: {formatos: ['markdown', 'html'], }} satisfaz CrawlParams, true, 30) satisfaz CrawlStatusResponse;if (crawlResponse) { console.log(crawlResponse)}Extraindo dados estruturados de uma URL
Com a extração LLM, você pode extrair facilmente dados estruturados de qualquer URL. Apoiamos o esquema zod para tornar isso mais fácil para você também. Aqui está como você pode usá-lo:
importar FirecrawlApp de "@mendable/firecrawl-js";importar { z } de "zod";const app = new FirecrawlApp({ apiKey: "fc-YOUR_API_KEY"});// Define o esquema para extrair o conteúdo no esquema const = z.object({ topo: z.array( z.object({título: z.string(),pontos: z.number(),by: z.string(),commentsURL: z.string(), })).length(5 ).describe("5 principais histórias sobre notícias de hackers"),});const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", { extractorOptions: { extracçãoSchema: esquema },});console.log(scrapeResult.data["llm_extraction"]);Oferta de código aberto versus nuvem
Firecrawl é um código aberto disponível sob a licença AGPL-3.0.
Para oferecer o melhor produto possível, oferecemos uma versão hospedada do Firecrawl juntamente com nossa oferta de código aberto. A solução em nuvem nos permite inovar continuamente e manter um serviço sustentável e de alta qualidade para todos os usuários.
Firecrawl Cloud está disponível em firecrawl.dev e oferece uma variedade de recursos que não estão disponíveis na versão de código aberto:
Contribuindo
Adoramos contribuições! Leia nosso guia de contribuição antes de enviar uma solicitação pull. Se você quiser se auto-hospedar, consulte o guia de auto-hospedagem.
É responsabilidade exclusiva dos usuários finais respeitar as políticas dos sites ao fazer scraping, pesquisar e rastrear com o Firecrawl. Os usuários são aconselhados a aderir às políticas de privacidade e aos termos de uso aplicáveis dos sites antes de iniciar qualquer atividade de scraping. Por padrão, o Firecrawl respeita as diretivas especificadas nos arquivos robots.txt dos sites durante o rastreamento. Ao utilizar o Firecrawl, você concorda expressamente em cumprir estas condições.
Colaboradores
Isenção de responsabilidade de licença
Este projeto é licenciado principalmente sob a Licença Pública Geral GNU Affero v3.0 (AGPL-3.0), conforme especificado no arquivo LICENSE no diretório raiz deste repositório. No entanto, certos componentes deste projeto estão licenciados sob a Licença MIT. Consulte os arquivos LICENSE nesses diretórios específicos para obter detalhes.
Observe:
A licença AGPL-3.0 aplica-se a todas as partes do projeto, salvo especificação em contrário.
Os SDKs e alguns componentes de UI são licenciados sob a licença MIT. Consulte os arquivos LICENSE nesses diretórios específicos para obter detalhes.
Ao usar ou contribuir para este projeto, certifique-se de cumprir os termos de licença apropriados para o componente específico com o qual está trabalhando.
Para mais detalhes sobre o licenciamento de componentes específicos, consulte os arquivos LICENSE nos respectivos diretórios ou entre em contato com os mantenedores do projeto.
↑ Voltar ao início ↑