Come posso ottenere i tassi di cambio tramite un'API come Google Finance? [chiuso]


137

Ora, ho trovato l' API di Google Finance e ho iniziato a esaminarlo, ma ho trovato molte informazioni su portafogli, transazioni, posizioni e altre cose di cui non so nulla.

Sto guardando i documenti sbagliati? Cosa devo fare per ottenere un feed dei tassi di cambio da GF? È possibile?

MODIFICARE

Per rendere le cose un po 'più chiare. Non mi interessano le cose tecniche né voglio alcun codice.


vedi stackoverflow.com/a/21627583/592868 per una classe php usando Yahoo! Finanza
Felix Geenen,

3
@George Stocker Questa domanda era originariamente molto specifica su alcune sciocche API di Google che sono state ritirate da tempo AFAIK. In qualche modo le persone hanno iniziato ad aggiungere alternative a quell'API e questo si è trasformato in una sorta di indice sulle API di cambio valuta. Ovviamente la community lo trova utile poiché ha ottenuto tonnellate di voti e favoriti ...
Bogdan,

@Bogdan Cosa vorresti che facessi?
George Stocker,

4
@GeorgeStocker Bene, puoi lasciarlo chiuso se ritieni che sia contrario alle regole SO, ma non eliminarlo; Le persone sembrano trovare questo un buon riferimento per questo tipo di cose. Il mio 2c.
Bogdan,

@GeorgeStocker È il numero 1 su Google per le API javascript in valuta ed è incredibilmente utile. Questo articolo merita di essere aggiornato perché aiuta molti molti sviluppatori, motivo per cui stackoverflow è stato creato. Mentre hai ragione nella lettera della regola, non è nello spirito di chiudere questo argomento, poiché non è possibile trovare spam o risposte supposte. Vi chiedo gentilmente di riaprirlo.
Jan Derk,

Risposte:


821

Grazie per tutte le tue risposte

CurrencyConverterapi gratuito:

  • Tariffe aggiornate ogni 30 min
  • La chiave API è ora richiesta per il server gratuito.

Un URL di conversione di esempio è: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Per i posteri eccoli insieme ad altre possibili risposte:

  1. API finanza Yahoo Fuori produzione 2017-11-06 ###

Fuori produzione dal 06/11/2017 con il messaggio

Abbiamo riscontrato che questo servizio viene utilizzato in violazione dei Termini di servizio di Yahoo. Pertanto, il servizio è stato sospeso. Per tutte le ricerche sui dati relativi a mercati azionari e futuri, fare riferimento a finance.yahoo.com.

Richiesta: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Questo CSV veniva utilizzato da un plug-in jQuery chiamato [Curry] [1]. Da allora (Curry 2017-08) è passato a utilizzare fixer.io a causa di problemi di stabilità. Potrebbe essere utile se hai bisogno di più di un semplice CSV.

  1. ( grazie a Keyo ) Yahoo Query Language ti consente di ottenere un sacco di valute contemporaneamente in XML o JSON. I dati vengono aggiornati dal secondo (mentre la Banca centrale europea ha dati di un giorno) e si interrompe nel fine settimana. Non richiede alcun tipo di iscrizione.

[http://query.yahooapis.com/v1/public/yql?q=select * da yahoo.finance.xchange dove coppia in ("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]

Ecco il Generatore di query YQL, in cui è possibile testare una query e copiare l'URL: (NON PIÙ DISPONIBILE)

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 non più disponibile

  1. API dei tassi di cambio open source

Gratuito per uso personale (1000 visite al mese) La
modifica di "base" (da "USD") non è consentita nell'account gratuito
È richiesta la registrazione.
Richiesta: http://openexchangerates.org/latest.json
Risposta:

   <!-- 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 di currencylayer

Piano gratuito per 250 hit mensili La
modifica di "fonte" (da "USD") non è consentita nell'account gratuito
È richiesta la registrazione.
Documentazione: currencylayer.com/documentation

Risposta 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 (dati della Banca centrale europea)

Piano gratuito per 1.000 hit mensili La
modifica di "fonte" (da "USD") non è consentita nell'account gratuito È richiesta la registrazione.

Questo endpoint API è obsoleto e smetterà di funzionare il 1 ° giugno 2018. Per ulteriori informazioni, visitare: https://github.com/fixerAPI/fixer#readme)


Sito Web: http://fixer.io/
Richiesta di esempio: [http://api.fixer.io/latest?base=USD[[7]
Raccoglie solo un valore al giorno
  1. Feed della Banca centrale europea

Documenti: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
Richiesta: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

Risposta 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 ### Secondo il sito Web:

    Tassi di cambio L'API è un servizio gratuito per i tassi di cambio correnti e storici pubblicati dalla Banca centrale europea
    Questo servizio è compatibile con fixer.io ed è davvero facile da usare: nessuna chiave API necessaria. Ad esempio (utilizza CURL, ma puoi utilizzare il tuo strumento di richiesta preferito):

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
  2. ### CurrencyApi.net ### Piano gratuito per 1250 hit mensili
    La valuta di base è impostata come USD sul conto gratuito
    Richiede la registrazione.
    Documentazione: currencyapi.net/documentazione

    Risposta JSON:

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

Sito Web: https://labstack.com/currency
Documentazione: https://labstack.com/docs/api/currency/convert
Prezzi: https://labstack.com/pricing
Richiesta: https://currency.labstack.com / api / v1 / convert / 1 / USD / INR
Risposta:

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

[1]: http://query.yahooapis.com/v1/public/yql?q=select * da yahoo.finance.xchange dove coppia in ("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


6
Ecco un link con una spiegazione più utile dell'API di Yahoo Finance.
Miranda,

4
Si prega di notare che i dati del progetto Open Exchange Rates sono stati spostati da GitHub (NESSUN dato disponibile al momento) e ora vengono offerti tramite openexchangerates.org - grazie!
William Joss Crowcroft,

17
rate-exchange.appspot non funziona più ..
letitbefornow


5
AGGIORNAMENTO: Ora Yahoo ha disabilitato l'API con questo messaggioIt 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,

66

La Banca centrale europea (BCE) ha anche il feed gratuito più affidabile che io conosca. Contiene circa 28 valute e viene aggiornato almeno giornalmente.

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

Per ulteriori formati e strumenti, consultare la pagina di riferimento della BCE: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html


3
troppo male fixer.io viene fornito senza garanzia. Non per produzione.
Ben Sinclair,

2
Sfortunatamente, non si aggiorna nei fine settimana.
Denis,

Molti mercati di forex trading sono chiusi dalle 16:00 EST di venerdì alle 17:00 EST di domenica. Se hai davvero bisogno di tariffe weekend più precise, allora sì, controllerei un flusso diverso.
Ryan,

1
@Ryan Ma perché non mostra tutte le valute?
Sunil Targe,

4
Il servizio Fixer.io è tristemente deprecato. Esiste un'API sostitutiva compatibile per i tassi di cambio sostitutivi disponibile su exchangegeratesapi.io
madisvain,

53

Ciao @Keyo, quando provo l'esempio YQL che hai fornito nel mio codice java che tenta di leggere come URL ottengo un'eccezione IO (il server ha restituito il codice di risposta HTTP: 400 per l'URL: query.yahooapis.com/v1/public/ yql? q = select * da yahoo.finance.xchange dove coppia in ("USDEUR") & env = store: //datatables.org/alltableswithkeys) che funziona se copio semplicemente questo URL sul browser
Malik Firose

'public static void main (String [] args) {String currencyPair = "USDEUR"; String address = " query.yahooapis.com/v1/public/yql?q=select * da yahoo.finance.xchange dove coppia in (\" "+ currencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; try {// String response = URLReader.read (indirizzo); // System.out.println (risposta); URL URL = nuovo URL (indirizzo); BufferedReader in = new BufferedReader (new InputStreamReader (url.openStream ())); } catch (Exception e) {// TODO Blocco catch generato automaticamente e.printStackTrace (); }} "
Malik Firose,

Ciao @Keyo, c'è un modo per ottenere il tasso alto / basso per un periodo di tempo specifico in YQL?
entpnomad,

3
Purtroppo Yahoo ha terminato il servizio ieri senza preavviso, mettendo a rischio migliaia di aziende.
FlorianB,

Questa API sembra essere permanentemente disabilitata.
riduzione dell'attività

47

Se hai bisogno di un'API semplice e gratuita per convertire una valuta in un'altra, prova free.currencyconverterapi.com .

Disclaimer, sono l'autore del sito Web e lo uso per uno dei miei altri siti Web.

Il servizio è gratuito anche per applicazioni commerciali ma non offre alcuna garanzia. Per motivi di prestazioni, i valori vengono aggiornati solo ogni ora.

Un URL di conversione di esempio è: http://free.currencyconverterapi.com/api/v6/convert?q=EUR_PHP&compact=ultra&apiKey=sample-api-key che restituirà un valore in formato json, ad esempio {"EUR_PHP": 60.849184}


1
Grazie. Qual è la fonte dei tassi di conversione? Questo ci dà la possibilità di misurare l'affidabilità del tuo servizio.
s3m3n,

1
Funziona a novembre 2017. Grazie per averlo fornito. Ma continua a fornirlo poiché i siti dipendono da esso. Stavo usando Yahoo Finance che è appena morto.
Montabile il

1
Potente. Grazie autore
James Oduro,

1
Passerò presto al Premium.
James Oduro,

1
NON è più gratuito. Gratuito è solo per test / uso demo. Se ne richiedi di più, ne restituiranno 400 e ti daranno un errore: "Il sistema ha rilevato questa richiesta come un abuso del servizio gratuito. Se hai bisogno di più richieste, ti preghiamo di considerare l'utilizzo del servizio a pagamento. Controlla currencyconverterapi.com/pricing per ulteriori informazioni. Grazie. " e blocca il tuo ip e la chiave api.
Swifty

25

Ho ottenuto questo contenuto da 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);

?>

5
Con iGoogle fuori dal giro, questa è l'opzione migliore, la precedente opzione www.google.com/ig non funziona più.
raphie

1
www.google.com/finance non funziona più. A partire da settembre 2017, l'URL finanziario è stato modificato in finance.google.com. : D bryanveloso.com/2017/09/14/…
jehzlau,

2
Google si è trasferito su finance.google.com mi ha fatto scattare e ha interrotto una richiesta di arricciatura. Per risolvere il problema, chiedi a curl di seguire i reindirizzamenti: curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true);
Jaybong,

1
Ho appena provato google.com/finance/converter?a=1&from=INR&to=USD non ha funzionato, apre la finestra di dialogo.
Montabile il

4
www.google.com/finance/converter e finance.google.com/finance/converter non sono più disponibili.
Christian

16

Ecco alcune API di scambio con esempio PHP.

[ Apri l'API dei tassi di cambio ]

Fornisce 1.000 richieste al mese gratuitamente. Devi registrarti e prendere l'ID app. La valuta di base USD per un account gratuito. Controlla le valute e la documentazione supportate .

// 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 livello valuta ]

Fornisce 1.000 richieste al mese gratuitamente. È necessario registrarsi e afferrare il TASTO di accesso. La valuta di base personalizzata non è supportata nell'account gratuito. Controlla la documentazione .

$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


14
Colpisce la quota molto facilmente..non raccomandato.
Ayush Goyal,

7
@AyushGoyal Se stai colpendo l'API per ogni conversione, lo stai facendo comunque in modo sbagliato. Imposta un cronjob per interrogare l'API ogni ora e archiviare i tassi di cambio correnti in una tabella di database e quando è necessario eseguire calcoli di scambio estrarre i dati dalla tabella tutte le volte che vuoi. Non raggiungerai mai il limite mensile in questo modo.
gennaio

1

Puoi provare Geoplugin

Oltre alla geolocalizzazione effettuata dall'IP (ma l'IP è l'IP del provider, quindi non è così preciso), restituiscono anche le valute e hanno un convertitore di valuta: vedi esempi.

Hanno 111 valute aggiornate.


0

Se stai cercando una soluzione basata su ruby ​​per questo problema, ti consiglio di utilizzare il metodo Google Calculator una soluzione simile alla seguente: 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})"

2
iGoogle è stato ritirato il 1 ° novembre 2013. Questa API non funziona più.
riformato il


0

Ecco un semplice script PHP che ottiene un tasso di cambio tra 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/>'; 
?>

I tassi di cambio di Google non sono accurati Google stesso afferma ==> Google non può garantire l'accuratezza dei tassi di cambio utilizzati dal calcolatore. È necessario confermare i tassi correnti prima di effettuare qualsiasi transazione che potrebbe essere influenzata da variazioni dei tassi di cambio. I tassi di cambio forniti da Citibank NA sono indicati su licenza. Le tariffe sono solo a scopo informativo e sono soggette a modifiche senza preavviso. Le tariffe per le transazioni effettive possono variare e Citibank non si offre di effettuare alcuna transazione con le tariffe visualizzate.


3
iGoogle è stato ritirato il 1 ° novembre 2013. Questa API non funziona più.
riformato il

-1

Per tutti i principianti che cercano qualche suggerimento sulla conversione di valuta, dai un'occhiata a questo link. DataVoila

Mi ha aiutato molto nel mio progetto in C #. Nel caso in cui il sito scompaia, aggiungerò il codice qui sotto. Aggiungi i seguenti passaggi al tuo progetto. Mi dispiace per la formattazione.

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);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.