Executando verificação de segurança...
3
dedx
7 min de leitura ·

Guia Completo da API FIPE: Como Consultar Preços de Veículos no Brasil

A tabela FIPE (Fundação Instituto de Pesquisas Econômicas) é uma referência essencial no mercado automotivo brasileiro, utilizada para definir os preços médios de veículos no país. Neste artigo, vamos explorar como utilizar a API FIPE para acessar esses dados de forma programática, permitindo que você integre essas informações em seus projetos e aplicações.

O que é a Tabela FIPE e API?

A Tabela FIPE é uma referência de preços de veículos elaborada pela Fundação Instituto de Pesquisas Econômicas, que serve como base para negociações de compra e venda, avaliações para seguros, financiamentos e para fins tributários no Brasil.

A API FIPE é uma interface que permite acessar esses dados de forma programática, oferecendo:

  • Consulta aos preços médios de mercado para carros, motos e caminhões
  • Dados atualizados mensalmente
  • Informações organizadas por marca, modelo e ano
  • Histórico de preços para análise de valorização/desvalorização

O melhor de tudo: a API está disponível gratuitamente desde 2015!

Benefícios de utilizar a API FIPE

Existem várias vantagens em utilizar a API FIPE em vez de acessar diretamente o site da FIPE:

  1. Integração direta: Incorpore dados da tabela FIPE em seus sistemas
  2. Automatização: Atualize preços e informações automaticamente
  3. Eficiência: A API utiliza um banco de dados próprio, evitando sobrecarregar o serviço da FIPE
  4. Confiabilidade: Acesso contínuo sem bloqueios por múltiplos acessos
  5. Dados estruturados: Respostas em formato JSON facilmente manipuláveis

Estrutura da API FIPE

A API FIPE organiza os dados hierarquicamente:

  1. Referências (meses disponíveis)
  2. Tipos de veículos (carros, motos, caminhões)
  3. Marcas (fabricantes)
  4. Modelos (veículos específicos)
  5. Anos (versões de cada modelo)
  6. Preços (valor médio de mercado)

Além disso, é possível consultar diretamente pelo código FIPE de um veículo.

Como começar a utilizar a API FIPE

Requisitos

A API FIPE é gratuita e não requer autenticação para uso básico. No entanto, para uso mais intensivo, existe a possibilidade de obter um token de assinatura (disponível em https://fipe.online).

URL Base

A URL base para todas as requisições é:

https://fipe.parallelum.com.br/api/v2

Endpoints Principais

  • /references: Lista de meses de referência disponíveis
  • /{vehicleType}/brands: Lista de marcas (onde vehicleType pode ser cars, motorcycles ou trucks)
  • /{vehicleType}/brands/{brandId}/models: Lista de modelos de uma marca específica
  • /{vehicleType}/brands/{brandId}/models/{modelId}/years: Anos disponíveis para um modelo
  • /{vehicleType}/brands/{brandId}/models/{modelId}/years/{yearId}: Preço e detalhes de um veículo específico

Formato de Resposta

Todas as respostas são retornadas em formato JSON.

Exemplos práticos em JavaScript

Vamos ver como implementar as principais funcionalidades da API FIPE utilizando JavaScript.

1. Consultando referências (meses disponíveis)

async function obterReferencias() {  
  try {  
    const response = await fetch('https://fipe.parallelum.com.br/api/v2/references');  
    const data = await response.json();  
    return data;  
  } catch (error) {  
    console.error('Erro ao obter referências:', error);  
  }  
}

// Exemplo de uso  
obterReferencias().then(referencias => {  
  console.log('Mês de referência atual:', referencias[0].month);  
  console.log('Código da referência:', referencias[0].code);  
});

2. Consultando marcas de veículos

async function obterMarcas(tipoVeiculo, referencia = '') {  
  try {  
    let url = `https://fipe.parallelum.com.br/api/v2/${tipoVeiculo}/brands`;  
    if (referencia) {  
      url += `?reference=${referencia}`;  
    }  
    const response = await fetch(url);  
    const data = await response.json();  
    return data;  
  } catch (error) {  
    console.error('Erro ao obter marcas:', error);  
  }  
}

// Exemplo de uso  
obterMarcas('cars').then(marcas => {  
  console.log(`Encontradas ${marcas.length} marcas de carros`);  
  // Exibir as 5 primeiras marcas  
  marcas.slice(0, 5).forEach(marca => {  
    console.log(`${marca.code}: ${marca.name}`);  
  });  
});

3. Consultando modelos de uma marca

async function obterModelos(tipoVeiculo, marcaId, referencia = '') {  
  try {  
    let url = `https://fipe.parallelum.com.br/api/v2/${tipoVeiculo}/brands/${marcaId}/models`;  
    if (referencia) {  
      url += `?reference=${referencia}`;  
    }  
    const response = await fetch(url);  
    const data = await response.json();  
    return data;  
  } catch (error) {  
    console.error('Erro ao obter modelos:', error);  
  }  
}

// Exemplo de uso (consultando modelos da VW - código 59)  
obterModelos('cars', 59).then(modelos => {  
  console.log(`Encontrados ${modelos.length} modelos da marca`);  
  modelos.slice(0, 5).forEach(modelo => {  
    console.log(`${modelo.code}: ${modelo.name}`);  
  });  
});

4. Consultando anos disponíveis para um modelo

async function obterAnos(tipoVeiculo, marcaId, modeloId, referencia = '') {  
  try {  
    let url = `https://fipe.parallelum.com.br/api/v2/${tipoVeiculo}/brands/${marcaId}/models/${modeloId}/years`;  
    if (referencia) {  
      url += `?reference=${referencia}`;  
    }  
    const response = await fetch(url);  
    const data = await response.json();  
    return data;  
  } catch (error) {  
    console.error('Erro ao obter anos:', error);  
  }  
}

// Exemplo de uso (consultando anos do Gol - código varia)  
obterAnos('cars', 59, 5523).then(anos => {  
  console.log(`Encontrados ${anos.length} anos para este modelo`);  
  anos.forEach(ano => {  
    console.log(`${ano.code}: ${ano.name}`);  
  });  
});

5. Consultando o preço de um veículo específico

async function obterPreco(tipoVeiculo, marcaId, modeloId, anoId, referencia = '') {  
  try {  
    let url = `https://fipe.parallelum.com.br/api/v2/${tipoVeiculo}/brands/${marcaId}/models/${modeloId}/years/${anoId}`;  
    if (referencia) {  
      url += `?reference=${referencia}`;  
    }  
    const response = await fetch(url);  
    const data = await response.json();  
    return data;  
  } catch (error) {  
    console.error('Erro ao obter preço:', error);  
  }  
}

// Exemplo de uso  
obterPreco('cars', 59, 5523, '2020-1').then(preco => {  
  console.log('Informações do veículo:');  
  console.log(`Marca: ${preco.brand}`);  
  console.log(`Modelo: ${preco.model}`);  
  console.log(`Ano: ${preco.modelYear}`);  
  console.log(`Combustível: ${preco.fuel}`);  
  console.log(`Preço: ${preco.price}`);  
  console.log(`Mês de referência: ${preco.referenceMonth}`);  
  console.log(`Código FIPE: ${preco.codeFipe}`);  
});

6. Buscando diretamente pelo código FIPE

async function buscarPorCodigoFipe(tipoVeiculo, codigoFipe, anoId, referencia = '') {  
  try {  
    let url = `https://fipe.parallelum.com.br/api/v2/${tipoVeiculo}/${codigoFipe}/years/${anoId}`;  
    if (referencia) {  
      url += `?reference=${referencia}`;  
    }  
    const response = await fetch(url);  
    const data = await response.json();  
    return data;  
  } catch (error) {  
    console.error('Erro ao buscar por código FIPE:', error);  
  }  
}

// Exemplo de uso (com um código FIPE fictício)  
buscarPorCodigoFipe('cars', '004278-1', '2020-1').then(info => {  
  console.log(`Veículo: ${info.brand} ${info.model} ${info.modelYear}`);  
  console.log(`Valor atual: ${info.price}`);  
});

Exemplo completo: Consultando preço de um veículo específico

Vamos criar um exemplo prático que encadeia várias chamadas à API FIPE para encontrar o preço de um veículo específico:

// Exemplo completo: consultar preço de um VW Gol 2020  
async function consultarPrecoVeiculo() {  
  try {  
    // 1. Obter a referência mais recente  
    const referencias = await obterReferencias();  
    const referenciaAtual = referencias[0].code;  
      
    // 2. Obter lista de marcas de carros  
    const marcas = await obterMarcas('cars', referenciaAtual);  
      
    // 3. Encontrar a marca VW  
    const marcaVW = marcas.find(marca => marca.name.includes('VW'));  
      
    if (!marcaVW) {  
      console.error('Marca VW não encontrada');  
      return;  
    }  
      
    // 4. Obter modelos da VW  
    const modelos = await obterModelos('cars', marcaVW.code, referenciaAtual);  
      
    // 5. Encontrar o modelo Gol  
    const modeloGol = modelos.find(modelo => modelo.name.includes('Gol'));  
      
    if (!modeloGol) {  
      console.error('Modelo Gol não encontrado');  
      return;  
    }  
      
    // 6. Obter anos disponíveis para o Gol  
    const anos = await obterAnos('cars', marcaVW.code, modeloGol.code, referenciaAtual);  
      
    // 7. Encontrar o ano 2020  
    const ano2020 = anos.find(ano => ano.name.includes('2020'));  
      
    if (!ano2020) {  
      console.error('Ano 2020 não encontrado');  
      return;  
    }  
      
    // 8. Obter preço do Gol 2020  
    const preco = await obterPreco('cars', marcaVW.code, modeloGol.code, ano2020.code, referenciaAtual);  
      
    console.log('Informações do veículo:');  
    console.log(`Marca: ${preco.brand}`);  
    console.log(`Modelo: ${preco.model}`);  
    console.log(`Ano: ${preco.modelYear}`);  
    console.log(`Combustível: ${preco.fuel}`);  
    console.log(`Preço: ${preco.price}`);  
    console.log(`Mês de referência: ${preco.referenceMonth}`);  
    console.log(`Código FIPE: ${preco.codeFipe}`);  
      
    return preco;  
  } catch (error) {  
    console.error('Erro durante a consulta:', error);  
  }  
}

// Chamar a função  
consultarPrecoVeiculo();

Utilizando Token de Assinatura (Opcional)

Para usuários que precisam de acesso mais intensivo à API, é possível utilizar um token de assinatura. Aqui está um exemplo de como estruturar as requisições com token:

// Configuração para uso com token de assinatura (opcional)  
const API_CONFIG = {  
  baseURL: 'https://fipe.parallelum.com.br/api/v2',  
  token: 'seu-token-aqui' // Token opcional para assinantes  
};

// Função utilitária para fazer requisições à API  
async function fipeRequest(endpoint, params = {}) {  
  const url = new URL(`${API_CONFIG.baseURL}${endpoint}`);  
    
  // Adicionar parâmetros de query, se houver  
  Object.keys(params).forEach(key => {  
    if (params[key]) {  
      url.searchParams.append(key, params[key]);  
    }  
  });  
    
  const headers = {};  
    
  // Adicionar token de assinatura, se disponível  
  if (API_CONFIG.token) {  
    headers['X-Subscription-Token'] = API_CONFIG.token;  
  }  
    
  try {  
    const response = await fetch(url, { headers });  
      
    if (!response.ok) {  
      throw new Error(`Erro na API: ${response.status} ${response.statusText}`);  
    }  
      
    return await response.json();  
  } catch (error) {  
    console.error(`Falha na requisição para ${endpoint}:`, error);  
    throw error;  
  }  
}  
// Exemplo de uso da função utilitária  
async function obterMarcasComToken(tipoVeiculo, referencia) {  
  return await fipeRequest(`/${tipoVeiculo}/brands`, { reference: referencia });  
}

Casos de uso práticos

1. Sistema de avaliação de veículos

Integre a API FIPE em sistemas de avaliação de veículos para compra/venda ou seguros, obtendo valores de referência atualizados automaticamente.

2. Comparativo de preços

Desenvolva uma ferramenta que compare preços de anúncios com os valores de referência da FIPE, identificando oportunidades de negócio.

3. Análise histórica de desvalorização

Utilize o histórico de preços para analisar a curva de desvalorização de diferentes modelos de veículos, auxiliando em decisões de compra ou venda.

4. Cálculo de financiamento

Incorpore os valores FIPE em calculadoras de financiamento para determinar percentuais de entrada e parcelas com base em valores reais de mercado.

Conclusão

A API FIPE oferece uma maneira simples e eficiente de acessar dados de preços de veículos no mercado brasileiro. Com os exemplos mostrados neste artigo, você já pode começar a integrar esses dados em seus projetos, seja para aplicações web, mobile ou sistemas internos.

Lembre-se de que, embora a API seja gratuita, é importante respeitar limites de uso para garantir que o serviço continue disponível para todos. Para projetos que demandam maior volume de consultas, considere a opção de assinatura.

E se você encontrar valor na API, que tal seguir a sugestão dos mantenedores e pagar uma cerveja para eles? 🍺

Links úteis

Carregando publicação patrocinada...