Bem-vindo à Fipe Online API! Crie uma conta para obter um token de acesso ilimitado à API.
Documentação
Guia de Início Rápido
Neste guia você fará suas primeiras consultas à API FIPE em JavaScript usando a biblioteca fipe-promise: navegar pela hierarquia de marcas, modelos e anos e, ao final, obter o preço de um veículo.
Pré-requisitos
Conhecimento básico de JavaScript.
Um ambiente que execute JavaScript moderno (navegador ou Node.js 18+).
Como funciona a consulta
A API organiza os dados em uma hierarquia de quatro níveis:
Marca → Modelo → Ano → Preço
A biblioteca expõe um método para cada nível — fetchBrands, fetchModels, fetchYears e fetchDetail — que você encadeia até chegar ao preço. Se já tiver o código FIPE, pode pular as etapas iniciais e consultar o preço diretamente com fetchDetailByFipeCode.
Instalação e configuração
A fipe-promise é um cliente para a API FIPE que cuida das requisições HTTP, do envio do token e do tratamento de erros, devolvendo promessas com os dados já em JSON.
Code
npm i fipe-promise
Importe a biblioteca e, opcionalmente, defina seu token. Todos os métodos aceitam um último argumento options com os campos token e reference.
Code
import * as fipe from 'fipe-promise';// Opcional: aumenta o limite diário de requisiçõesconst options = { token: 'seu_token_aqui' };
As consultas funcionam sem autenticação, com limite de 500 requisições por dia. Para elevar o limite, cadastre um token de acesso gratuito e passe-o em options.token.
Exemplos práticos
Consulta passo a passo: Volkswagen Gol
Este exemplo percorre toda a hierarquia, da marca ao preço, imprimindo o resultado da etapa final.
Quando você já tem o código FIPE, consulte o preço sem percorrer marcas e modelos. Se o ano não for informado, o código usa o ano mais recente disponível.
Code
import * as fipe from 'fipe-promise';async function buscarPorCodigoFipe(codigoFipe, ano = null) { if (!ano) { const anos = await fipe.fetchYearsByFipeCode(fipe.vehicleType.CARS, codigoFipe); ano = anos[0].code; } const veiculo = await fipe.fetchDetailByFipeCode(fipe.vehicleType.CARS, codigoFipe, ano); console.log(`Código FIPE: ${veiculo.codeFipe}`); console.log(`Modelo: ${veiculo.model}`); console.log(`Preço: ${veiculo.price}`); return veiculo;}// Honda Civic 2020buscarPorCodigoFipe('004278-1', '2020-1');
Função genérica para qualquer veículo
Esta função recebe o tipo de veículo (fipe.vehicleType.CARS, MOTORCYCLES ou TRUCKS), o nome da marca e do modelo e, opcionalmente, o ano. Ela serve de base para os demais casos de uso.
Code
import * as fipe from 'fipe-promise';async function buscarVeiculo(tipo, marcaNome, modeloNome, anoEscolhido = null) { const marcas = await fipe.fetchBrands(tipo); const marca = marcas.find(m => m.name.toLowerCase().includes(marcaNome.toLowerCase()) ); if (!marca) { throw new Error(`Marca "${marcaNome}" não encontrada`); } const modelos = await fipe.fetchModels(tipo, marca.code); const modelo = modelos.find(m => m.name.toLowerCase().includes(modeloNome.toLowerCase()) ); if (!modelo) { throw new Error(`Modelo "${modeloNome}" não encontrado`); } const anos = await fipe.fetchYears(tipo, marca.code, modelo.code); let anoSelecionado = anos[0]; if (anoEscolhido) { anoSelecionado = anos.find(a => a.name.includes(anoEscolhido)); } return fipe.fetchDetail(tipo, marca.code, modelo.code, anoSelecionado.code);}buscarVeiculo(fipe.vehicleType.CARS, 'Toyota', 'Corolla', '2023') .then(veiculo => console.log('Toyota Corolla:', veiculo));buscarVeiculo(fipe.vehicleType.MOTORCYCLES, 'Honda', 'CB', '2022') .then(moto => console.log('Honda CB:', moto));
Comparação de preços
Reutilizando buscarVeiculo, este exemplo consulta vários veículos e ordena o resultado do mais barato ao mais caro.
Use um token. Passe-o em options (fipe.fetchBrands(fipe.vehicleType.CARS, { token })) para elevar o limite de 500 para 1.000 requisições por dia.
Faça cache das listas estáveis. Marcas e modelos mudam pouco; armazená-los localmente evita requisições repetidas.
Paralelize consultas independentes com Promise.all() em vez de aguardar uma a uma.
Trate os erros por requisição. A biblioteca rejeita a promessa em caso de falha; envolva chamadas individuais em try/catch para que um erro isolado não interrompa todo o fluxo.
Solução de problemas
Erro 429 – Limite de requisições
Você atingiu o limite diário. O contador é reiniciado a cada 24 horas. Para uso sem esse limite, consulte os planos Premium, que oferecem requisições ilimitadas.
Erro 404 – Recurso não encontrado
O recurso solicitado não existe. As causas mais comuns são:
Código FIPE inválido — confira se o código está correto.
Combinação inexistente — a combinação marca/modelo/ano não consta na base FIPE.
Identificadores incorretos — revise os códigos de marca, modelo e ano.
Para validar cada nível antes de consultar o preço:
Code
import * as fipe from 'fipe-promise';async function recursoExiste(tipo, codigoMarca, codigoModelo, codigoAno) { const marcas = await fipe.fetchBrands(tipo); if (!marcas.some(m => m.code === codigoMarca)) { return false; } const modelos = await fipe.fetchModels(tipo, codigoMarca); if (!modelos.some(m => m.code === codigoModelo)) { return false; } const anos = await fipe.fetchYears(tipo, codigoMarca, codigoModelo); return anos.some(a => a.code === codigoAno);}
Modelo não encontrado
Os nomes na base FIPE nem sempre coincidem exatamente com o termo buscado. Tente a correspondência exata e recorra à parcial quando ela falhar: