Coder Social home page Coder Social logo

deividfortuna / fipe Goto Github PK

View Code? Open in Web Editor NEW
311.0 17.0 46.0 650 KB

Tabela Fipe API :car::moneybag: http://deividfortuna.github.io/fipe/v2

Home Page: https://fipe.online

License: MIT License

PHP 100.00%
fipe rest-api http tabela-fipe consulta api fipe-api

fipe's Introduction

FipeLib

Biblioteca em PHP para consultar a tabela Fipe 💰 API de Consulta Tabela FIPE fornece preços médios de veículos no mercado nacional através de um serviço RESTful HTTP Json. Atualizada mensalmente com dados extraidos da tabela FIPE

Important

Após quase 10 anos de manutenção, atualizações e fornecimento totalmente gratuito e ilimitado, tive que tomar a decisão de colocar um limite de uso na API. A partir de agora, a API será limitada a 500 requisições gratuitas e não autenticadas por dia (24h). Se você criar um token de acesso aqui, poderá fazer até 1000 requisições por dia (24h).

Caso você precise de requisições ilimitadas e acesso a 1 ano de histórico de preços, considere contratar um plano de suporte através do site fipe.online.

API Status

Uptime Robot status Uptime Robot status

API utilizada

A documentação da API utilizada pela biblioteca para obter os dados da Fipe está disponível neste link e também pode ser encontrada no branch gh-pages deste repositório.

Classes e métodos

A biblioteca possui 3 classes para consultar a tabela Fipe, uma para cada tipo de veículo, são elas:

  • FipeCaminhoes consulta a tabela de caminhões
  • FipeCarros consulta a tabela de carros
  • FipeMotos consulta a tabela de motos

Cada classe possui os seguintes métodos:

  • getMarcas() retorna um array com os códigos e nomes das marcas do tipo de veículo escolhido
  • getModelos($codMarca) retorna um array com o códigos e nomes dos modelos da marca informada
  • getAnos($codMarca, $codModelo) retorna um array com os códigos e nomes dos anos de um modelo de veículo
  • getVeiculo($codMarca, $codModelo, $codAno) retorna um array com os dados da tabela Fipe do veículo especificado

Exemplos de uso

Veja um exemplo de como consultar as marcas de carros:

<?php
use DeividFortuna\Fipe\FipeCarros;

$marcas = FipeCarros::getMarcas();

var_dump($marcas);

Utilizando o token de acesso para aumentar o limite de requisições:

<?php
use DeividFortuna\Fipe\FipeCarros;

$token = 'SEU_TOKEN';
IFipe::setCurlOptions([
    CURLOPT_HTTPHEADER => ["X-Subscription-Token:$token"]
]);

$marcas = FipeCarros::getMarcas();

var_dump($marcas);

O código acima irá retornar um array:

[
  [
    "nome": "Acura",
    "codigo": 1
  ], [
    "nome": "Agrale",
    "codigo": 2
  ],
  // etc...
]

Um exemplo funcional pode ser encontrado na pasta exemplo deste projeto.

Licença

Copyright (c) 2016 Deivid Fortuna

fipe's People

Contributors

alisonmonteiro avatar amandiobm avatar deividfortuna avatar itsjw avatar toreti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fipe's Issues

API principal open source?

Oi Deivid,

A API que essa biblioteca usa foi construída por você também, certo? Ela é um crawler que consulta o site da FIPE? Como pra aplicação que estou desenvolvendo preciso assumir o gerenciamento do hosting da API, estou interessado na API pura. Inclusive a aplicação é em node.js, posso desenvolver uma lib que consulta a API em node.js e compartilhá-la.

Pensei em te perguntar se não passou pela sua cabeça tornar o projeto inteiro open source, não só a biblioteca. Eu mesmo contribuiria pra ele se fosse o caso, pode ter certeza. 😄

Escolher mês/tabela de referência

Olá @deividfortuna como vai?

Gostaria de saber se tem como habilitar para passarmos o código do mês de referencia como parâmetro na busca de valor? Na API ele utiliza a última tabela de referência (por exemplo 251), mas eu gostaria de passar como parâmetro esse codigo, pode ser opcional, assim não quebra a API pra quem já usa. Se puder me dar uma ajuda, é um pouco urgente. Valeu, abraço e obrigado pelo ótimo trabalho que fez com a API.

Trazer os modelos, baseado num ano escolhido

Boa tarde,
Existe a possibilidade de incrementar a seguinte melhoria:

Selecionar a Marca, em seguida selecionar um ano específico com seu combustível (Ex: 2015 Gasolina) e com isso retornar os modelos daquela marca, que estejam dentro do ano e combustível escolhido.

Isso facilita na procura de um modelo, por exemplo VW Gol, que a lista é grande, assim como outros modelos também.

Listagem de modelos e anos

Em algumas situações na listagem dos modelos ou anos o primeiro registro a ser retornado é 32000
no propio exemplo da documentação 32000 e o primeiro ano a ser retornado.
Exemplo:

https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/59/modelos/5940/anos
Array [6] 0: Object nome: "32000 Diesel" codigo: "32000-3" 1: Object nome: "2016 Diesel" codigo: "2016-3" 2: Object nome: "2015 Diesel" codigo: "2015-3" 3: Object nome: "2014 Diesel" codigo: "2014-3" 4: Object nome: "2013 Diesel" codigo: "2013-3" 5: Object nome: "2012 Diesel" codigo: "2012-3"

Objeto 0 nome e 32000 por qual motivo este e o primeiro ano?

Retorno inválido da API

Boa noite,

Ao chamar uma url pela primeira vez, um dump de string acompanha a resposta e causa erros durante a conversão do retorno. Pra ficar mais claro segue dados do meu log:

[2017-02-06 18:41:35] local.INFO: URL
[2017-02-06 18:41:35] local.INFO: https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/23/modelos/4676/anos/2011-1
[2017-02-06 18:41:36] local.INFO:
CURL Result
[2017-02-06 18:41:36] local.INFO: HTTP/1.1 200 OK
Date: Mon, 06 Feb 2017 20:41:36 GMT
Server: Apache/2.2.15 (Red Hat)
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS
Access-Control-Allow-Headers: X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version
Content-Length: 327
Content-Type: application/json
Vary: Accept-Encoding

{"Valor":"R$ 45.878,00","Marca":"GM - Chevrolet","Modelo":"S10 P-Up Executive 2.4 MPFI F.Power CD","AnoModelo":2011,"Combustivel":"Gasolina","CodigoFipe":"004350-8  ","MesReferencia":"fevereiro de 2017","TipoVeiculo":1,"SiglaCombustivel":"G"}string(71) "http://www.fipe.org.br/IndicesConsulta-ConsultarValorComTodosParametros"

A parte bugada da resposta é essa:
string(71) "http://www.fipe.org.br/IndicesConsulta-ConsultarValorComTodosParametros" (bem no final do retorno JSON)

A partir da segunda chamada ao mesmo endpoint tudo funciona normalmente.
Você poderia checar (e remover) esse dump do retorno?

Obrigado pela excelente solução!

Valores de referência

Olá Deivid, parabéns pela Api, muito legal. Eu consultei ela aqui e funcionou certinho, porém os valores de referência da Fipe que vieram nos resultados foram os de maio/2017. Como que é feita essa atualização na API para já vir os valores de junho/2017.

Abraços

Consultar valores antigos

Gostaria de poder buscar o preço da tabela em outros meses/anos também, para saber o valor de depreciação do modelo. Teria como adicionar esta função?

Problema com SSL

Dependendo do servidor onde estiver rodando, precisa desabilitar a checagem do sertificado SSL com a opção CURLOPT_SSL_VERIFYPEER => 0 do curl.
É bom tambem checar o codigo de erro, mudei a função request para:

private static function request($uri){

    try {
        $ch = curl_init($uri);
        $options = array(
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => 1,
            CURLOPT_TIMEOUT => 5,
            CURLOPT_CONNECTTIMEOUT => 5,
            CURLOPT_SSL_VERIFYPEER => 0,
        );
        curl_setopt_array($ch, $options);
        $html = curl_exec($ch);
        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        return ($httpcode>=200 && $httpcode<300) ? json_decode($html) : false;

    } catch(\Exception $e) {
        return false;
    }
}

Requisições

Ola, gostaria de saber quantas requisições consigo fazer por dia.

Api fora do ar?

A Api é excelente,
mas aparentemente está fora do ar, nem acessando pelo navegador está funcionando, diz que as paginas não existem, mudou algo. Olhei na documentação da Api, porém não vi nada de diferente.

Api fora do ar?

Bom dia.
A API está fora do ar?
Estou recebendo erro 404 ao tentar fazer uma consulta.

Error 404 na Consulta

Estou tentando acessar a API e está retornando este erro. Para alguns modelo funciona normal.

image

Att.

Fazer download do banco de dados para uso sem internet

Tem como eu fazer o download do banco de dados para eu não ter que ficar fazendo requisições no seu servidor e também poder usar esses dados sem internet? Dessa forma eu faria apenas 1 download mensalmente para atualizar os valores.

[Feature] - Ability to change cURL options

Issue: Operation timed out after 5000 milliseconds with 0 out of 0 bytes received

Description: I'm having issues with a timeout when fetching the vehicle Operation timed out after 5000 milliseconds with 0 out of 0 bytes received. Looking through the code the timeout value is hardcoded on the cURL options. In my case, I can wait more the 5 seconds.

Suggestion: Add a method to override the default configuration.

Consulta com filtros por marca e modelo.

Boa Tarde Amigo.

Desde já gostaria de parabenizá-lo pela iniciativa, e gostaria de sugerir que colocasse em algum desses serviços um filtro por marca e outro por modelo.

Desde já agradeço.

Alexandre Ramos - Abraços

API fora do ar.

Boa tarde Deivid.

Vi que a API saiu do ar. Caso não tenha a intenção de voltar com ela, teria como disponibilizar ela para download para instalarmos em nosso servidor afim de continuar usando ela?

Obrigado.

Consulta de modelos por ano

Gostaria de saber se é possível ter o mesmo comportamento que a FIPE tem no site, onde é possível escolher uma marca e filtrar os carros pelo ano, antes de selecionar um modelo.

Eu reparei que existe o retorno dos modelos também retorna os anos. Dá para aproveitar essa informação?

Quando atualiza os valores?

Boa tarde, gostaria de saber quando é feita a atualização dos valores na api, se é no dia primeiro mesmo ou outro dia, e o horário que já pode estar atualizado.

Api fora do ar

Deivid, esta biblioteca é excelente... Porém está me dando retorno vazio
Ocorreu algo? Segue o print do erro

image

obs.: chamei o método Getmarcas

Tratamento de solicitações inválidas na API

É necessário padronizar na API o retorno de solicitações inválidas, para que na programação possam ser realizadas verificações.

Atualmente na consulta de modelos uma solicitação inválida retorna um objeto com atributos vazios:
https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/1000/modelos

E na consulta de anos e veículos é retornado um erro 404:
https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/1000/modelos/1000/anos
https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/1000/modelos/1000/anos/1000

Erro js e php

Olá,
1 coisas estão acontecendo e gostaria de sua ajuda. A primeira é que quando eu tento fazer uma busca via jquery/ajax, o campo ano não exibe nenhum resultado, já os campos marca e modelo funcionam perfeitamente. Segue o código:

`var _urlacessoAPIFipe = 'https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas';

// Resultados.
$.getJSON(_urlacessoAPIFipe, function(data){
  for (var i=0; i < data.length; i++){
    $("#avaliar-marcas").append('<option value="' + data[i].codigo + '">' + data[i].nome + '</option>');
  }
  console.log("Quantidade de registros localizados: " + data.length);
});

//Selecione uma Marca
$("#avaliar-marcas").change(function(){
	var marca = $("#avaliar-marcas").val();
	$("#avaliar-modelos").html('');
	$.getJSON('https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/' + marca + '/modelos', function(data){
	  for (var i=0; i < data.modelos.length; i++){
	    $("#avaliar-modelos").append('<option value="' + data.modelos[i].codigo + '">' + data.modelos[i].nome + '</option>');
	  }
	  console.log("Quantidade de registros localizados: " + data.modelos.length);
	});
});

//Selecione um ano
$("#avaliar-modelos").change(function(){
	var marca = $("#avaliar-marcas").val();
	var ano = $("#avaliar-modelos").val();
	$("#avaliar-ano").html('');
	$.getJSON('https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/' + marca + '/modelos/' + ano + '/anos', function(data){
	  for (var i=0; i < data.ano.length; i++){
	    $("#avaliar-modelos").append('<option value="' + data.ano[i].codigo + '">' + data.ano[i].nome + '</option>');
	  }
	  console.log("Quantidade de registros localizados: " + data.ano.length);
	});
});	`

A segunda. Estou utilizando o wordpress e quando eu importo o projeto pra dentro do meu servidor, aparece o seguinte erro
Warning: curl_setopt_array(): CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set in ...../fipe/IFipe.php on line 30.

Sua API é muito bacana, e parabéns pelo trabalho

Erro na lista de Anos

Primeiro item da lista inválido.
Ex:
{nome: "32000 Gasolina", codigo: "32000-1"}

Não consigo mais converter os valores dos carros em número

Até agora há pouco (31/07/19 - 11h56) eu conseguia pegar o valor do carro que vinha como string e transformar em número pra poder manipular, mas do nada parou de funcionar! Não importa se eu use number, parseInt ou parseFloat, só recebo NaN como resultado. Ele só mostra o valor corretamente como string.

API FIPE não atualiza

Olá Deivid, a API não está atualizando para Novembro, e meu sistema está usando esta API como base. Teria como verificar para mim? Para atualizar sempre no dia 1? Valeu!

Retorno de valor inválido na consulta de ano

Para alguns item o valor de retorno da ano é mais ou menos assim 32000 Gasolina, quando deveria ser algo do tipo: 2017 Gasolina.

Sei que não é problema da API que é excelente, mas gostaria de saber se vc sabe o que significa esse retorno.

Parabéns pelo excelente trabalho. 😄

Trazer Imagem

Como futura melhoria seria bom, trazer a imagem do veiculo.

Access Denied

Estou recebendo essa mensagem "Access Denied" ao fazer uma requisição.
O que faço?

Como faço para conseguir um Token??

A API está retornando o seguinte erro:

{
message: "Quantidade inválida de requisições. Usuários sem token podem fazer apenas 500 requisições por dia"
}

Como faço para conseguir um token?

Erro ao consultar modelos ou datas

Deivid, Boa Tarde.

Por gentileza, se puder me auxiliar com o seguinte problema:

Meu site está fazendo a requisição do json a partir de um comando ajax, onde é executado um arquivo php para a chamada da api.
Quando consulto todas as marcas ou anos, a chamada em json traz os registros para o objeto data. Porém quando vou pesquisar modelos ou preços, esse objeto não é alimentado. Não é gerado erro em log nem nada, e no momento da pesquisa de modelos por exemplo, a url é construida corretamente (exemplo: https://fipe-parallelum.rhcloud.com/api/v1/carros/marcas/59/modelos - setei essa url na mao inclusive na chamada da api). Você tem alguma ideia do que poderia ser, se é algum bloqueio, alguma configuração em meu proprio site?

Obs: Aparentemente, quando consulto os modelos, os anos estão aparecendo juntamente, não sei se isso está influenciando.

Muito Obrigado.

Requisição cors-origin bloqueada

Olá amigos,

Não tenho certeza, mas acredito que sou eu que esteja errando algo ao tentar buscar os dados de MODELOS na api de vocês.

Tento fazer uma requisição Ajax simples

$.getJSON("https://fipe.parallelum.com.br/api/v1/carros/marcas/"+marca+"/modelos", function(data) {
console.log( data );
})

e apresenta o seguinte erro :

Requisição cross-origin bloqueada: A política de mesma origem (Same Origin Policy) impede a leitura do recurso remoto em https://fipe.parallelum.com.br/api/v1/carros/marcas/4/modelos. (Motivo: a pré-conexão CORS falhou).

será que eu estou fazendo a requisição da maneira errada ou algo na API ?

Obrigado!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.