~/utility/rag-web-crawler

RAG Web Crawler — Páginas web em Markdown e trechos de texto

Rastreie páginas web públicas e obtenha Markdown limpo, texto puro e trechos sobrepostos com URL de origem e posições de caracteres, prontos para RAG.

dados para RAG TypeScriptMozilla ReadabilityjsdomTurndown Global
proooxy/rag-web-crawler — especificações
categoriautility / dados para RAG
linguagemTypeScript
stackTypeScript, Mozilla Readability, jsdom, Turndown
mercadosGlobal
saídaJSON limpo e pronto para RAG

principais recursos

Markdown limpo e texto puro de cada página, com títulos, listas, links, blocos de código e tabelas simples

Trechos prontos para embeddings que se sobrepõem e terminam em quebras de parágrafo ou de frase, cada um com um id estável, a URL e o título de origem e posições exatas de caracteres para citação

Conteúdo principal primeiro: menus, cabeçalhos, rodapés e barras laterais ficam de fora, e seletores CSS removem o que mais você indicar

Segue links dentro de cada site, até cinco níveis, buscando cada página uma única vez

Pesquisa no lugar de URLs: cada página de resultado de uma consulta é rastreada como uma URL inicial (requer um plano pago da Apify)

Respeita o robots.txt por padrão, com intervalos educados entre as requisições ao mesmo site

As páginas mantêm o próprio idioma — inglês, chinês e outros — sem tradução

Um status e um código de erro para cada página, e um resumo de cada execução com contagens e o motivo da parada

casos de uso

  • Montar a base de conhecimento de um chatbot de RAG a partir de documentação e páginas de ajuda
  • Fundamentar agentes de IA em páginas web atuais que eles possam citar
  • Transformar uma lista de artigos em embeddings para busca semântica
  • Reunir as páginas que uma pesquisa encontra sobre um tema, no idioma original
  • Atualizar um banco vetorial de forma agendada, com ids de trecho que não mudam enquanto a página não muda
  • Entregar páginas web em Markdown a agentes de IA pelo servidor MCP da Apify

parâmetros de entrada

ParâmetroTipoObrigatórioDescrição
startUrlsarrayopcionalURLs de páginas públicas para rastrear, até 1.000
querystringopcionalConsulta de pesquisa cujas páginas de resultado são rastreadas (requer um plano pago da Apify)
queriesarrayopcionalMais consultas de pesquisa, combinadas com query
maxResultsPerQuerynumberopcionalResultados de pesquisa rastreados por consulta (padrão 5, no máximo 50)
maxPagesnumberopcionalMáximo de páginas distintas que uma execução agenda (padrão 20, no máximo 1.000)
maxDepthnumberopcionalQuantos níveis de links seguir dentro de cada site (padrão 0 = só as URLs iniciais, no máximo 5)
maxConcurrencynumberopcionalPáginas processadas ao mesmo tempo (padrão 3)
maxSearchRequestsnumberopcionalRequisições de pesquisa por execução, novas tentativas incluídas (padrão 10, 0 = sem pesquisa)
maxFetchRequestsnumberopcionalTodas as tentativas de rede por execução, robots.txt e novas tentativas incluídos (padrão 100)
requestTimeoutSecsnumberopcionalTempo limite de cada requisição, em segundos (padrão 30)
maxResponseBytesnumberopcionalMaior resposta de página aceita (padrão 2 MiB)
maxContentCharsnumberopcionalTexto mais longo mantido por página, em caracteres (padrão 50.000)
maxOutputBytesnumberopcionalSaída total por execução (padrão 20 MiB)
respectRobotsTxtbooleanopcionalVerificar antes o robots.txt de cada site (ativado por padrão)
onlyMainContentbooleanopcionalManter só o conteúdo principal da página (ativado por padrão)
removeSelectorsarrayopcionalSeletores CSS dos elementos removidos antes da extração
chunkSizenumberopcionalTamanho do trecho em caracteres, não em tokens (padrão 1.000)
chunkOverlapnumberopcionalCaracteres compartilhados por trechos consecutivos (padrão 150)

Exemplo de saída

Uma página salva em uma execução real, com o texto encurtado e um de seus cinco trechos:

 1{
 2  "schemaVersion": "1.0",
 3  "url": "https://www.w3.org/WAI/tutorials/tables/one-header/",
 4  "title": "Tables with One Header",
 5  "description": "Accessibility resources free online from the international standards organization: W3C Web Accessibility Initiative (WAI).",
 6  "languageCode": "en",
 7  "canonicalUrl": "https://www.w3.org/WAI/tutorials/tables/one-header/",
 8  "markdown": "# Tables with One Header\n\nin [Tables Tutorial](https://www.w3.org/WAI/tutorials/tables/)\n\n## Overview\n\n…",
 9  "text": "Tables with One Header\n\nin Tables Tutorial\n\nOverview\n\nThis page covers tables that have one simple header for rows or one simple header for columns. …",
10  "chunks": [
11    {
12      "id": "495cb4e58e13bbf9b5cdbe922f7ea652973ca4dfda61b952aaa021db045a450c",
13      "index": 0,
14      "text": "Tables with One Header\n\nin Tables Tutorial\n\nOverview\n\nThis page covers tables that have one simple header for rows or one simple header for columns. …",
15      "startChar": 0,
16      "endChar": 988,
17      "sourceUrl": "https://www.w3.org/WAI/tutorials/tables/one-header/",
18      "title": "Tables with One Header"
19    }
20  ],
21  "contentTruncated": false,
22  "sources": [],
23  "crawl": {
24    "depth": 0,
25    "httpStatusCode": 200,
26    "loadedAt": "2026-10-19T07:03:53.643Z",
27    "contentType": "text/html",
28    "renderingMode": "http",
29    "extractionMethod": "main"
30  }
31}

As posições dos trechos contam pontos de código Unicode em text. Cada execução também grava REQUESTS, um resultado por página com status e código de erro, e OUTPUT, o resumo da execução com contagens, o motivo da parada e os eventos cobrados.

Dicas

  • Use id como ID do registro no seu banco vetorial. Ele não muda entre execuções enquanto a página e suas configurações de trechos não mudam; ao gravar os trechos por id numa execução agendada, eles são substituídos em vez de duplicados.
  • Comece com poucas páginas. Confira o Markdown das suas páginas antes de aumentar maxPages ou maxDepth, e tire sobras como caixas de links relacionados com removeSelectors.
  • Leia REQUESTS junto com o Dataset. Uma execução pode dar certo mesmo com páginas ignoradas ou com falha, e cada uma diz o motivo.

faq

Qual a diferença para um scraper web genérico?
Você informa URLs ou uma consulta de pesquisa, não seletores. Ele guarda o conteúdo principal de cada página como Markdown e texto puro e corta o texto em trechos prontos para embeddings, cada um com a URL, o título e as posições exatas de caracteres da página, para que uma resposta possa citar de onde veio.
Preciso de uma chave de API?
Nenhuma chave de API externa, nem para rastrear nem para pesquisar. Você precisa de uma conta na Apify; chamar o Actor pela API da Apify usa o seu token da Apify.
Ele renderiza JavaScript?
Não. Ele lê as páginas por HTTP, então uma página que precisa de JavaScript para mostrar o texto pode falhar com NO_CONTENT ou chegar incompleta. Teste antes algumas das suas páginas.
Quais páginas ele consegue ler?
Páginas públicas em HTML, Markdown e texto puro. Logins, cookies, paywalls, CAPTCHAs, proxies, PDFs e imagens ficam de fora, e endereços de redes privadas e URLs com credenciais são recusados.
Rastrear sites é permitido?
Rastrear dados públicos e não pessoais costuma ser legal, mas o conteúdo das páginas muitas vezes tem direitos autorais e alguns sites restringem o rastreamento nos termos de uso. O crawler respeita o robots.txt por padrão; você é responsável pelo uso do que coletar.

relacionados em ~/utility

Execute RAG Web Crawler — Páginas web em Markdown e trechos de texto ou solicite um projeto personalizado

Comece a extrair dados no Apify em minutos, ou me contrate para desenvolver um scraper sob medida e um pipeline de RAG para sua fonte e esquema exatos.

executar no Apify obter dados personalizados