Como obtenho taxas de câmbio por meio de uma API como o Google Finance? [fechadas]

137

Agora, encontrei a API do Google Finance e comecei a analisar isso, mas encontrei muitas informações sobre portfólios, transações, posições e outras coisas sobre as quais não sei nada.

Estou olhando os documentos errados? O que preciso fazer para obter um feed das taxas de câmbio do GF? Isso é possível?

EDITAR

Para tornar as coisas um pouco mais claras. Não estou interessado em assuntos técnicos nem quero nenhum código.

Bogdan
fonte
consulte stackoverflow.com/a/21627583/592868 para obter uma classe php usando o Yahoo! Finanças
Felix Geenen
3
@ George Stocker Esta pergunta foi originalmente muito específica sobre alguma API boba do Google, que foi aposentada há um tempo atrás pela AFAIK. De alguma forma, as pessoas começaram a adicionar alternativas a essa API e ela se transformou em algum tipo de índice sobre APIs de câmbio. Obviamente, a comunidade considera útil uma vez que tem toneladas de votos e favoritos ...
Bogdan
@ Bogdan O que você gostaria que eu fizesse?
George Stocker
4
@GeorgeStocker Bem, você pode deixá-lo fechado se achar que é contra as regras do SO, mas não o exclua; As pessoas parecem achar isso uma boa referência para esse tipo de coisa. Meu 2c.
Bogdan
@GeorgeStocker É o número 1 no Google para APIs javascript de moeda e incrivelmente útil. Este item merece ser atualizado, pois ajuda muitos desenvolvedores, o principal motivo pelo qual o stackoverflow foi criado. Embora você esteja certo na letra da regra, não é recomendável fechar esse tópico, pois não há spam ou respostas opinativas a serem encontradas. Peço que você abra novamente.
Jan Derk

Respostas:

821

Obrigado por todas as suas respostas.

Currencyconverterapi grátis:

  • Taxas atualizadas a cada 30 min
  • Agora, a chave da API é necessária para o servidor gratuito.

Um exemplo de URL de conversão é: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Para a posteridade, aqui estão elas, juntamente com outras respostas possíveis:

  1. API de finanças do Yahoo Descontinuado 06-11-2017 ###

Descontinuado em 06/11/2017 com mensagem

Fomos informados de que este serviço está sendo usado em violação aos Termos de Serviço do Yahoo. Como tal, o serviço está sendo descontinuado. Para todas as pesquisas futuras sobre dados de ações e mercados, consulte finance.yahoo.com.

Pedido: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Este CSV estava sendo usado por um plugin jQuery chamado [Curry] [1]. Desde então, o Curry (29/08/2017) mudou para usar o fixer.io devido a problemas de estabilidade. Pode ser útil se você precisar de mais do que apenas um CSV.

  1. ( graças a Keyo ) O Yahoo Query Language permite que você obtenha várias moedas de uma só vez em XML ou JSON. Os dados são atualizados a cada segundo (enquanto o Banco Central Europeu possui dados antigos) e para no final de semana. Não requer nenhum tipo de inscrição.

[http://query.yahooapis.com/v1/public/yql?q=select * de yahoo.finance.xchange em que pareie ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK" , "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", " USDAUD "," USDBRL "," USDCAD "," USDCNY "," USDHKD "," USDIDR "," USDILS "," USDINR "," USDKRW "," USDMXN "," USDMYR "," USDNZD "," USDPHP " , "USDSGD", "USDTHB", "USDZAR", "USDISK") & env = store: //datatables.org/alltableswithkeys] [1]

Aqui está o Construtor de Consultas YQL, onde você pode testar uma consulta e copiar o URL: (NÃO DISPONÍVEL)

http://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select%20*%20from%20yahoo.finance.xchange%20where%20pair% 20in% 20% 28% 22USDMXN% 22% 2C% 20% 22USDCHF% 22% 29

console yql não está mais disponível

  1. API de taxas de câmbio de código aberto

Gratuito para uso pessoal (1000 acessos por mês)
Não é permitido alterar a "base" (de "USD") na conta gratuita
Requer registro.
Pedido: http://openexchangerates.org/latest.json
Resposta:

   <!-- language: lang-js -->

    {
      "disclaimer": "This data is collected from various providers ...",
      "license": "all code open-source under GPL v3 ...",
      "timestamp": 1323115901,
      "base": "USD",
      "rates": {
          "AED": 3.66999725,
          "ALL": 102.09382091,
          "ANG": 1.78992886,
          // 115 more currency rates here ...
      }
    }
  1. API currencylayer

Plano gratuito para 250 ocorrências mensais
Não é permitido alterar a "fonte" (de "USD") na conta gratuita
Requer registro.
Documentação: currencylayer.com/documentation

Resposta JSON:

   <!-- language: lang-js -->

    {
      [...]
      "timestamp": 1436284516,
      "source": "USD",
      "quotes": {
          "USDAUD": 1.345352401,
          "USDCAD": 1.27373397,
          "USDCHF": 0.947845302,
          "USDEUR": 0.91313905,
          "USDGBP": 0.647603397,
          // 168 world currencies
          }
      }
  1. API Fixer.io (dados do Banco Central Europeu)

Plano gratuito para 1.000 acessos mensais
Não é permitido alterar a "origem" (de "USD") na conta gratuita Requer registro.

Este terminal da API foi descontinuado e deixará de funcionar em 1º de junho de 2018. Para obter mais informações, visite: https://github.com/fixerAPI/fixer#readme


Site da Web: http://fixer.io/
Exemplo de solicitação: [http://api.fixer.io/latest?base=USD}[7]
Apenas coleta um valor por dia
  1. Feed do Banco Central Europeu

Documentos: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
Solicitação: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

Resposta XML :

   <!-- language: lang-xml -->

    <Cube>
      <Cube time="2015-07-07">
      <Cube currency="USD" rate="1.0931"/>
      <Cube currency="JPY" rate="133.88"/>
      <Cube currency="BGN" rate="1.9558"/>
      <Cube currency="CZK" rate="27.100"/>
    </Cube>
  1. ### exchangegeratesapi.io ### De acordo com o site:

    API de taxas de câmbio é um serviço gratuito para taxas de câmbio atuais e históricas publicadas pelo Banco Central Europeu
    Este serviço é compatível com fixer.io e é realmente fácil de usar: nenhuma chave de API é necessária. Por exemplo (isso usa CURL, mas você pode usar sua ferramenta de solicitação favorita):

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
  2. ### CurrencyApi.net ### Plano gratuito para 1250 hits mensais
    A moeda base é definida como USD na conta gratuita
    Requer registro.
    Documentação: currencyapi.net/documentation

    Resposta JSON:

    {
      "valid": true,
      "timestamp": 1567957373,
      "base": "USD",
      "rates": {
              "AED": 3.673042,
              "AFN": 77.529504,
              "ALL": 109.410403,
              // 165 currencies + some cryptos
          }
      }
  3. ### Moeda do LabStack ###

Site: https://labstack.com/currency
Documentação: https://labstack.com/docs/api/currency/convert
Preços: https://labstack.com/pricing
Solicitação: https://currency.labstack.com / api / v1 / convert / 1 / USD / INR
Resposta:

```js
 {
   "time": "2019-10-09T21:15:00Z",
   "amount": 71.1488
 }
 ```

[1]: http://query.yahooapis.com/v1/public/yql?q=select * de yahoo.finance.xchange em que pareie ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY "," USDAUD "," USDBRL "," USDCAD "," USDCNY "," USDHKD "," USDIDR "," USDILS "," USDINR "," USDKRW "," USDMXN "," USDMYR "," USDNZD ", "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK") & env = store: //datatables.org/alltableswithkeys

Frank
fonte
6
Aqui está um link com uma explicação mais útil da API de finanças do Yahoo.
24412 Miranda
4
Observe que os dados do projeto Open Exchange Rates foram removidos do GitHub (NÃO há dados disponíveis lá agora) e agora estão sendo veiculados via openexchangerates.org - obrigado!
William Joss Crowcroft
17
rate-exchange.appspot não funciona mais ..
letitbefornow
5
ATUALIZAÇÃO: Agora o Yahoo desativou a API com esta mensagemIt has come to our attention that this service is being used in violation of the Yahoo Terms of Service. As such, the service is being discontinued. For all future markets and equities data research, please refer to finance.yahoo.com.
ZenithS 6/17/17
66

O Banco Central Europeu (BCE) também possui o feed gratuito mais confiável que eu conheço. Ele contém aproximadamente 28 moedas e é atualizado pelo menos diariamente.

http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

Para mais formatos e ferramentas, consulte a página de referência do BCE: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html

Ryan
fonte
3
muito ruim fixer.io vem sem garantia. Não para produção.
Ben Sinclair
2
Infelizmente, ele não é atualizado nos finais de semana.
Denis
Muitos mercados de negociação forex estão fechados das 16:00 EST na sexta-feira às 17:00 EST domingo. Se você realmente precisa de taxas de fim de semana mais precisas, sim, eu verificaria um fluxo diferente.
Ryan
1
@ Ryan Mas por que não mostrar todas as moedas?
Sunil Targe
4
Infelizmente, o serviço Fixer.io está obsoleto. Há uma alternativa de substituição compatível Taxas de Câmbio API localizado na exchangeratesapi.io
madisvain
53

O Yahoo possui um recurso YQL para obter várias moedas de uma só vez em XML ou JSON. Percebi que os dados estão atualizados a cada minuto em que o BCE possui dados do dia anterior e para no fim de semana.

http://query.yahooapis.com/v1/public/yql?q=select * de yahoo.finance.xchange em que pareie ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", "USDAUD "," USDBRL "," USDCAD "," USDCNY "," USDHKD "," USDIDR "," USDILS "," USDINR "," USDKRW "," USDMXN "," USDMYR "," USDNZD "," USDPHP ", "USDSGD", "USDTHB", "USDZAR", "USDISK") & env = store: //datatables.org/alltableswithkeys

Aqui está o construtor de consultas, onde você pode testar uma consulta e copiar o URL:

http://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=select%20*%20from%20yahoo.finance.xchange%20where%20pair% 20in% 20% 28% 22USDMXN% 22% 2C% 20% 22USDCHF% 22% 29

Keyo
fonte
Oi @Keyo, quando eu tento a amostra YQL que você forneceu dentro do meu código java que tenta ler como um URL, recebo uma exceção de IO (o servidor retornou o código de resposta HTTP: 400 para o URL: query.yahooapis.com/v1/public/ yql? q = select * from yahoo.finance.xchange where pair in ("USDEUR") & env = store: //datatables.org/alltableswithkeys) que funciona se eu apenas copiar esse URL para o navegador
Malik Firose,
'public static void main (String [] args) {String currencyPair = "USDEUR"; Endereço da string = " query.yahooapis.com/v1/public/yql?q=select * de yahoo.finance.xchange em que pareie (\" "+ currencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; try {// String response = URLReader.read (endereço); // System.out.println (resposta); URL URL = novo URL (endereço); BufferedReader in = novo BufferedReader (novo InputStreamReader (url.openStream ())); } catch (Exceção e) {// TODO Bloco de captura gerado automaticamente e.printStackTrace (); }} '
Malik Firose
Oi @Keyo, existe uma maneira de obter a taxa alta / baixa para um período específico no YQL?
entpnomad
3
Infelizmente, o Yahoo encerrou seu serviço ontem sem aviso prévio, colocando em risco milhares de empresas.
FlorianB 2/11
Esta API parece estar permanentemente desativada.
reduzindo a atividade
47

Se você precisar de uma API simples e gratuita para converter uma moeda em outra, tente free.currencyconverterapi.com .

Isenção de responsabilidade, sou o autor do site e o uso em outros sites.

O serviço é gratuito, mesmo para aplicativos comerciais, mas não oferece garantia. Por motivos de desempenho, os valores são atualizados apenas a cada hora.

Um exemplo de URL de conversão é: http://free.currencyconverterapi.com/api/v6/convert?q=EUR_PHP&compact=ultra&apiKey=sample-api-key que retornará um valor no formato json, por exemplo, {"EUR_PHP": 60.849184}

Manny
fonte
1
Obrigado. Qual é a fonte das taxas de conversão? Isso nos dá a possibilidade de medir a confiabilidade do seu serviço.
S3m3n 12/04/2015
1
Funciona em novembro de 2017. Obrigado por fornecê-lo. Mas continue fornecendo, pois os sites dependem disso. Estava usando o Yahoo Finance, que acabou de morrer.
Tuntable
1
Poderoso. Obrigado autor
james Oduro 15/07/19
1
Vou atualizar para premium em breve.
james Oduro
1
NÃO é mais gratuito. Grátis é apenas para teste / uso de demonstração. Se você solicitar mais, ele retornará 400 e fornecerá um erro: "O sistema detectou essa solicitação como um abuso do serviço gratuito. Se você precisar de mais solicitações, considere usar o serviço pago. Verifique currencyconverterapi.com/pricing para obter mais informações. Obrigado. " e bloqueie seu ip e api-key.
Swifty 17/03
25

Eu obtive este conteúdo em http://www.scriptarticle.com/2012/05/03/get-live-currency-rates-and-currency-conversion-using-php-and-apis/

<?php

function get_currency($from_Currency, $to_Currency, $amount) {
    $amount = urlencode($amount);
    $from_Currency = urlencode($from_Currency);
    $to_Currency = urlencode($to_Currency);

    $url = "http://www.google.com/finance/converter?a=$amount&from=$from_Currency&to=$to_Currency";

    $ch = curl_init();
    $timeout = 0;
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt ($ch, CURLOPT_USERAGENT,
                 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $rawdata = curl_exec($ch);
    curl_close($ch);
    $data = explode('bld>', $rawdata);
    $data = explode($to_Currency, $data[1]);

    return round($data[0], 2);
}

// Call the function to get the currency converted
echo get_currency('USD', 'INR', 1);

?>
Lokesh
fonte
5
Com o iGoogle fora do circuito, essa é a melhor opção, a opção anterior www.google.com/ig não funciona mais.
Raphie #
1
www.google.com/finance não funciona mais. Em setembro de 2017, o URL financeiro foi alterado para finance.google.com. : D bryanveloso.com/2017/09/14/…
jehzlau
2
O Google que mudou para finance.google.com me levou para um passeio e quebrou uma solicitação de curl. Para corrigir essa solicitação, o curl deve seguir os redirecionamentos: curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true);
precisa saber é o seguinte
1
Apenas tentei google.com/finance/converter?a=1&from=INR&to=USD não funcionou, abre a caixa de diálogo.
Tuntable
4
www.google.com/finance/converter e finance.google.com/finance/converter não estão mais disponíveis.
Christian
16

Aqui estão algumas APIs de troca com exemplo de PHP.

[ API de taxas de câmbio abertas ]

Fornece 1.000 solicitações por mês gratuitamente. Você deve se registrar e pegar o ID do aplicativo. A moeda base USD para conta gratuita. Verifique as moedas e a documentação suportadas .

// open exchange URL // valid app_id * REQUIRED *
$exchange_url = 'https://openexchangerates.org/api/latest.json';
$params = array(
    'app_id' => 'YOUR_APP_ID'
);

// make cURL request // parse JSON
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $exchange_url . '?' . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true
));
$response = json_decode(curl_exec($curl));
curl_close($curl);

if (!empty($response->rates)) {
    // convert 150 USD to JPY ( Japanese Yen )
    echo $response->rates->JPY * 150;
}

150 USD = 18039.09015 JPY

[ API da camada de moeda ]

Fornece 1.000 solicitações por mês gratuitamente. Você deve se registrar e pegar a tecla Access. A moeda base personalizada não é suportada em uma conta gratuita. Verifique a documentação .

$exchange_url = 'http://apilayer.net/api/live';
$params = array(
    'access_key' => 'YOUR_ACCESS_KEY',
    'source' => 'USD',
    'currencies' => 'JPY',
    'format' => 1 // 1 = JSON
);

// make cURL request // parse JSON
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $exchange_url . '?' . http_build_query($params),
    CURLOPT_RETURNTRANSFER => true
));
$response = json_decode(curl_exec($curl));
curl_close($curl);

if (!empty($response->quotes)) {
    // convert 150 USD to JPY ( Japanese Yen )
    echo '150 USD = ' . $response->quotes->USDJPY * 150 . ' JPY';
}

150 USD = 18036.75045 JPY

Madan Sapkota
fonte
14
Atinge a cota com muita facilidade .. não é recomendado.
Ayush Goyal
7
@AyushGoyal Se você está acessando a API para todas as conversões, está fazendo errado de qualquer maneira. Configure um cronjob para consultar a API a cada hora e armazene as taxas de câmbio atuais em uma tabela do banco de dados e, quando você precisar fazer cálculos de troca, extraia os dados da tabela quantas vezes quiser. Você nunca atingirá o limite mensal dessa maneira.
tpartee
1

Você pode tentar geoplugin

Além da geolocalização feita pelo IP (mas o IP é o IP do provedor, portanto não tão preciso), eles também retornam moedas e têm um conversor de moedas: veja exemplos.

Eles têm 111 moedas atualizadas.

user3227746
fonte
0

Se você estiver procurando uma solução baseada em ruby ​​para esse problema, recomendo usar o método da Calculadora do Google uma solução semelhante à seguinte: http://j.mp/QIC564

require 'faraday'
require 'faraday_middleware'
require 'json'

# Debug: 
# require "pry"


country_code_src = "USD"
country_code_dst = "INR"
connection = Faraday.get("http://www.google.com/ig/calculator?hl=en&q=1#{country_code_src}=?#{country_code_dst}")

currency_comparison_hash = eval connection.body #Google's output is not JSON, it's a hash

dst_currency_value, *dst_currency_text = *currency_comparison_hash[:rhs].split(' ')
dst_currency_value = dst_currency_value.to_f
dst_currency_text = dst_currency_text.join(' ')

puts "#{country_code_dst} -> #{dst_currency_value} (#{dst_currency_text} to 1 #{country_code_src})"
iluminar
fonte
2
O iGoogle foi aposentado em 1 de novembro de 2013. Esta API não funciona mais.
reformada
0

Aqui está um script PHP simples que obtém taxa de câmbio entre GBP e USD

<?php
$amount = urlencode("1");
$from_GBP0 = urlencode("GBP");
$to_usd= urlencode("USD");
$Dallor = "hl=en&q=$amount$from_GBP0%3D%3F$to_usd";
$US_Rate = file_get_contents("http://google.com/ig/calculator?".$Dallor);
$US_data = explode('"', $US_Rate);
$US_data = explode(' ', $US_data['3']);
$var_USD = $US_data['0'];
echo $to_usd;
echo $var_USD;
echo '<br/>'; 
?>

As taxas da moeda do Google não são precisas. O próprio Google diz ==> O Google não pode garantir a precisão das taxas de câmbio usadas pela calculadora. Você deve confirmar as taxas atuais antes de fazer qualquer transação que possa ser afetada por alterações nas taxas de câmbio. As taxas de moeda estrangeira fornecidas pelo Citibank NA são exibidas sob licença. As tarifas são apenas para fins informativos e estão sujeitas a alterações sem aviso prévio. As taxas para transações reais podem variar e o Citibank não está se oferecendo para realizar nenhuma transação, a qualquer taxa exibida.

mohamed nur
fonte
3
O iGoogle foi aposentado em 1 de novembro de 2013. Esta API não funciona mais.
reformada
-1

Para todos os novatos que procuram dicas sobre conversão de moeda, dê uma olhada neste link. Datavoila

Ajudou muito a med em relação ao meu próprio projeto em c #. Caso o site desapareça, adicionarei o código abaixo. Basta adicionar as etapas abaixo ao seu próprio projeto. Desculpe a formatação.

const string fromCurrency = "USD";
const string toCurrency = "EUR";
const double amount = 49.95;
// For other currency symbols see http://finance.yahoo.com/currency-converter/
// Clear the output editor //optional use, AFAIK
Output.Clear();

// Construct URL to query the Yahoo! Finance API
const string urlPattern = "http://finance.yahoo.com/d/quotes.csv?s={0}{1}=X&f=l1";
string url = String.Format(urlPattern, fromCurrency, toCurrency);

// Get response as string
string response = new WebClient().DownloadString(url);

// Convert string to number
double exchangeRate =
    double.Parse(response, System.Globalization.CultureInfo.InvariantCulture);

// Output the result
Output.Text = String.Format("{0} {1} = {2} {3}",
                            amount, fromCurrency,
                            amount * exchangeRate, toCurrency);
Imperador 2052
fonte