- 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 objeto emformats com o esquema 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 esquema).prompt: prompt opcional para orientar a extração (também usado para extração sem esquema).checkPromptInjection: booleano opcional (o padrão éfalse). Quando ativado, o Firecrawl verifica o conteúdo da página extraída em busca de tentativas de injeção de prompt antes de executar a extração. Consulte Detecção de injeção de prompt.
jsonOptions na v2. O esquema deve ser incluído diretamente dentro do objeto de formato no array formats.
Detecção de injeção de prompt
Páginas web podem conter texto oculto criado para sequestrar extrações baseadas em LLM — por exemplo, instruções que dizem ao modelo para ignorar seu esquema e retornar dados controlados por um invasor. Se você extrair dados de URLs não confiáveis ou enviadas por usuários, poderá ativar uma proteção opcional que verifica o conteúdo extraído antes de executar a extração:- Uma chamada dedicada ao classificador inspeciona o conteúdo da página extraída (ela é executada em paralelo com a extração, portanto, ativá-la não torna scrapings sem problemas mais lentos).
- Se uma tentativa de injeção de prompt for detectada, a solicitação falhará com um HTTP
403e o código de erroSCRAPE_PROMPT_INJECTION_DETECTED— nenhum resultado da extração será retornado. - A verificação é cobrada como +4 créditos além do custo padrão do formato JSON quando é executada. Se o scraping falhar após a execução da verificação (inclusive quando uma injeção é detectada e a solicitação é 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.
jsonOptions.checkPromptInjection. Ela também é exposta em todos os SDKs oficiais (por exemplo, checkPromptInjection no SDK JS, check_prompt_injection no formato JSON v2 do SDK Python’s).
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.

