- Para qualquer caso além de uma única URL — várias URLs, padrões de URL ou descoberta orientada por agentes — consulte Agent.
- Comparação completa: Como escolher o Extrator de Dados.
Mudança na API v2: A extração de schema JSON é totalmente suportada na v2, mas o formato da API mudou. Na v2, o esquema é incorporado diretamente no objeto de formatos como
formats: [{type: "json", schema: {...}}]. O parâmetro jsonOptions da v1 não existe mais na v2.Para falhas na validação de esquema e outros erros de extração, consulte Erros — problemas específicos de extração normalmente aparecem como respostas
400 ou 422.Raspe e extraia dados estruturados com o Firecrawl
-
Defina o esquema (opcional):
Defina um esquema JSON (no formato da OpenAI) para especificar os dados desejados, ou forneça apenas um
promptse não precisar de um esquema rígido, junto com a URL da página. - Faça a requisição: Envie sua URL e o esquema para nosso endpoint /scrape usando o modo JSON. Veja como aqui: Scrape Endpoint Documentation
- Obtenha seus dados: Receba dados limpos e estruturados que correspondem ao seu esquema, prontos para uso imediato.
Extraia dados estruturados
Modo JSON via /scrape
JSON
Dados estruturados sem esquema
prompt para o endpoint. O LLM escolhe a estrutura dos dados.
JSON
Exemplo real: extraindo informações de empresas
Output
Opções do formato JSON
Ao usar o modo JSON na v2, inclua um object emformats com o schema incorporado diretamente:
formats: [{ type: 'json', schema: { ... }, prompt: '...' }]
Parâmetros:
schema: schema JSON que descreve a saída estruturada desejada (obrigatório para extração baseada em schema).prompt: prompt opcional para orientar a extração (também usado para extração sem schema).checkPromptInjection: descontinuado. Use a opção de scrapingcheckPromptInjectionno nível superior (consulte Detecção de injeção de prompt). Um valor definido aqui continua sendo respeitado.
jsonOptions na v2. O schema deve ser incluído diretamente dentro do object de formato no array formats.
Detecção de injeção de prompt
Páginas web podem conter texto oculto criado para sequestrar um LLM — por exemplo, instruções que dizem ao modelo para ignorar seu schema e retornar dados controlados por um invasor. Se você fizer scraping de URLs não confiáveis ou enviadas por usuários, defina a opção de scraping de nível superiorcheckPromptInjection para verificar o conteúdo da página antes que qualquer formato baseado em LLM (como json, summary ou question) seja executado. Ela funciona com qualquer formato, exceto rawBase64, inclusive em um scraping simples em markdown:
- Uma chamada dedicada ao classificador inspeciona o conteúdo da página uma vez por scraping, antes da execução de qualquer formato baseado em LLM, o que acrescenta a latência do classificador à request.
- Se uma tentativa de injeção de prompt for detectada, a request falhará com um HTTP
403e o código de erroSCRAPE_PROMPT_INJECTION_DETECTED. Nenhum resultado será retornado. - Se a verificação não conseguir analisar todo o conteúdo (por exemplo, porque a chamada ao classificador falhou ou o conteúdo da página tem mais de 2.000.000 caracteres), o scraping continua, a resposta inclui um
warninge a verificação não é cobrada. - A verificação é cobrada como +4 créditos quando é executada. Se o scraping falhar após a execução da verificação (inclusive quando uma injeção é detectada e a request é bloqueada), serão cobrados 5 créditos em vez dos 0 habituais para um scraping com falha, pois a chamada ao classificador ainda foi executada.
scrapeOptions para rastreamento, busca e monitores. Definir checkPromptInjection no object de formato json ainda funciona, mas está descontinuado. Na v1, a opção é jsonOptions.checkPromptInjection. Os SDKs a expõem como checkPromptInjection (JS) e check_prompt_injection (Python).
Atributos HTML não estão disponíveis na extração JSON. A extração JSON funciona a partir da conversão da página para markdown, que preserva apenas o conteúdo de texto visível. Atributos HTML (por exemplo,
data-id, atributos personalizados em elementos) são removidos durante a conversão e o LLM não consegue vê-los. Se você precisar extrair valores de atributos HTML, use o formato rawHtml e faça o parsing dos atributos no lado do cliente, ou use uma ação executeJavascript para injetar os valores dos atributos em texto visível antes da extração.Dicas para extração consistente
Se você estiver obtendo resultados inconsistentes ou incompletos na extração JSON, estas práticas podem ajudar:- Mantenha os prompts curtos e focados. Prompts longos com muitas regras aumentam a variabilidade. Em vez disso, mova restrições específicas (como valores permitidos) para o esquema.
- Use nomes de propriedades concisos. Evite incluir instruções ou listas de enum nos nomes das propriedades. Use uma chave curta como
"installation_type"e coloque os valores permitidos em um arrayenum. - Adicione arrays
enumpara campos com valores restritos. Quando um campo tiver um conjunto fixo de valores, liste-os emenume garanta que correspondam exatamente ao texto exibido na página. - Inclua tratamento de
nullnas descrições dos campos. Adicione"Return null if not found on the page."àdescriptionde cada campo para que o modelo não tente deduzir valores ausentes. - Adicione dicas de localização. Diga ao modelo onde encontrar os dados na página, por exemplo:
"Flow rate in GPM from the Specifications table.". - Divida esquemas grandes em solicitações menores. Esquemas com muitos campos (por exemplo, 30+) produzem resultados menos consistentes. Divida-os em 2–3 solicitações de 10–15 campos cada.
- Evite
minItems/maxItemsem arrays. Palavras-chave de validação do esquema JSON comominItemsemaxItemsnão controlam a quantidade de conteúdo que o scraper coleta. DefinirminItems: 20não fará o LLM retornar mais itens — em vez disso, ele pode alucinar entradas para satisfazer a restrição. Remova essas palavras-chave e use umpromptno lugar (por exemplo,"Extract ALL reviews from the page. Do not skip any.") para orientar a completude. - Use
"type": "array"para extrair listas de itens. Se você precisar extrair vários itens (por exemplo, uma lista de pessoas, produtos ou avaliações), agrupe-os em uma propriedade do tipo array com um blocoitems. Usar"type": "object"para uma lista retornará apenas um único item. Veja o exemplo de esquema de array abaixo.
"type": "array" com "items" para obter a lista completa:
Você é um agente de IA que precisa de uma chave de API do Firecrawl? Veja firecrawl.dev/agent-onboarding/SKILL.md para ver instruções de onboarding automatizado.

