Comment obtenir les taux de change via une API telle que Google Finance? [fermé]

137

Maintenant, j'ai trouvé l' API Google Finance et j'ai commencé à la parcourir, mais j'ai trouvé beaucoup d'informations sur les portefeuilles, les transactions, les positions et d'autres choses dont je ne sais rien.

Est-ce que je regarde les mauvais documents? Que dois-je faire pour obtenir une alimentation des taux de change de GF? Est-ce seulement possible?

ÉDITER

Pour rendre les choses un peu plus claires. Je ne suis pas intéressé par les choses techniques et je ne veux pas de code.

Bogdan
la source
voir stackoverflow.com/a/21627583/592868 pour une classe php utilisant Yahoo! Finance
Felix Geenen
3
@George Stocker Cette question était à l'origine très spécifique à propos d'une API Google idiote qui a été retirée il y a un certain temps AFAIK. D'une manière ou d'une autre, les gens ont commencé à ajouter des alternatives à cette API et cela s'est transformé en une sorte d'index sur les API de change de devises. Évidemment, la communauté le trouve utile car il a obtenu des tonnes de votes et de favoris ...
Bogdan
@Bogdan Que voudriez-vous que je fasse?
George Stocker
4
@GeorgeStocker Eh bien, vous pouvez le laisser fermé si vous pensez qu'il est contraire aux règles SO, mais ne le supprimez pas; Les gens semblent trouver que c'est une bonne référence pour ce genre de choses. Mon 2c.
Bogdan
@GeorgeStocker Il est n ° 1 dans Google pour les API de javascript de devises et incroyablement utile. Cet élément mérite d'être mis à jour car il aide de nombreux développeurs, ce qui est la principale raison pour laquelle stackoverflow a été créé. Bien que vous ayez raison dans la lettre de la règle, il n'est pas dans l'esprit de fermer ce sujet, car il n'y a pas de spam ou de réponses opiniâtres à trouver. Je vous demande de bien vouloir l'ouvrir à nouveau.
Jan Derk

Réponses:

821

Merci pour toutes vos réponses.

Currencyconverterapi gratuit:

  • Tarifs mis à jour toutes les 30 min
  • La clé API est désormais requise pour le serveur gratuit.

Un exemple d'URL de conversion est: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Pour la postérité, les voici avec d'autres réponses possibles:

  1. API Yahoo Finance Fin de série 06/11/2017 ###

Discontinué à partir du 2017-11-06 avec message

Il a été porté à notre attention que ce service est utilisé en violation des conditions d'utilisation de Yahoo. En tant que tel, le service est interrompu. Pour toutes les recherches futures de données sur les marchés et les actions, veuillez vous référer à finance.yahoo.com.

Demande: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Ce CSV était utilisé par un plugin jQuery appelé [Curry] [1]. Curry a depuis (2017-08-29) déplacé pour utiliser fixer.io à la place en raison de problèmes de stabilité. Cela peut être utile si vous avez besoin de plus qu'un simple CSV.

  1. ( grâce à Keyo ) Yahoo Query Language vous permet d'obtenir tout un tas de devises à la fois en XML ou JSON. Les données sont mises à jour à la seconde (alors que la Banque centrale européenne dispose de données anciennes) et s'arrêtent le week-end. Ne nécessite aucun type d'inscription.

[http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair 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]

Voici la Générateur de requêtes YQL, où vous pouvez tester une requête et copier l'url: (PLUS DISPONIBLE)

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

la console yql n'est plus disponible

  1. API de taux de change Open Source

Gratuit pour un usage personnel (1000 visites par mois) Le
changement de «base» (de «USD») n'est pas autorisé dans le compte gratuit
Nécessite une inscription.
Demande: http://openexchangerates.org/latest.json
Réponse:

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

Plan gratuit pour 250 visites mensuelles Le
changement de «source» (de «USD») n'est pas autorisé dans le compte gratuit
Nécessite une inscription.
Documentation: currencylayer.com/documentation

Réponse 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 (données de la Banque centrale européenne)

Plan gratuit pour 1 000 visites mensuelles Le
changement de «source» (de «USD») n'est pas autorisé dans le compte gratuit Nécessite une inscription.

Ce point de terminaison d'API est obsolète et cessera de fonctionner le 1er juin 2018. Pour plus d'informations, veuillez visiter: https://github.com/fixerAPI/fixer#readme)


Site Web: http://fixer.io/
Exemple de demande: [http://api.fixer.io/latest?base=USD[7] Collecte
seulement une valeur par jour
  1. Banque centrale européenne Feed

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

Réponse 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. ### exchangeratesapi.io ### Selon le site Web:

    L'API des taux de change est un service gratuit pour les taux de change actuels et historiques publiés par la Banque centrale européenne
    Ce service est compatible avec fixer.io et est vraiment facile à utiliser: aucune clé API nécessaire. Par exemple (cela utilise CURL, mais vous pouvez utiliser votre outil de demande préféré):

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
  2. ### CurrencyApi.net ### Plan gratuit pour 1250 appels mensuels La
    devise de base est définie comme USD sur le compte gratuit
    Nécessite une inscription.
    Documentation: currencyapi.net/documentation

    Réponse JSON:

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

Site Web: https://labstack.com/currency
Documentation: https://labstack.com/docs/api/currency/convert
Tarification: https://labstack.com/pricing
Demande: https://currency.labstack.com / api / v1 / convert / 1 / USD / INR
Réponse:

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

[1]: http://query.yahooapis.com/v1/public/yql?q=select * de yahoo.finance.xchange où paire dans ("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
la source
6
Voici un lien avec une explication plus utile de l'API Yahoo Finance.
Miranda
4
Veuillez noter que les données du projet Open Exchange Rates ont été déplacées de GitHub (AUCUNE donnée disponible là-bas pour le moment) et sont maintenant servies via openexchangerates.org - merci!
William Joss Crowcroft
17
rate-exchange.appspot ne fonctionne plus ..
letitbefornow
5
MISE À JOUR: Yahoo a maintenant désactivé l'API avec ce messageIt 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 Banque centrale européenne (BCE) a également le flux gratuit le plus fiable que je connaisse. Il contient environ 28 devises et est mis à jour au moins quotidiennement.

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

Pour plus de formats et d'outils, consultez la page de référence de la BCE: http://www.ecb.int/stats/exchange/eurofxref/html/index.fr.html

Ryan
la source
3
dommage fixer.io est livré sans garantie. Pas pour la production.
Ben Sinclair
2
Malheureusement, il n'est pas mis à jour le week-end.
Denis
De nombreux marchés de trading forex sont fermés de 16 h HNE le vendredi à 17 h HNE le dimanche. Si vous avez vraiment besoin de tarifs de week-end plus précis, alors oui, je vérifierais un flux différent.
Ryan
1
@Ryan Mais pourquoi ne montre-t-il pas toutes les devises?
Sunil Targe
4
Le service Fixer.io est malheureusement obsolète. Il existe une alternative compatible API de taux de change de remplacement située sur exchangeratesapi.io
madisvain
53

Yahoo a une fonctionnalité YQL pour obtenir tout un tas de devises à la fois en XML ou JSON. J'ai remarqué que les données sont à jour à la minute où la BCE dispose de données anciennes et s'arrête le week-end.

http://query.yahooapis.com/v1/public/yql?q=select * de yahoo.finance.xchange où paire dans ("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

Voici leur générateur de requêtes, où vous pouvez tester une requête et copier l'url:

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

Keyo
la source
Salut @Keyo, lorsque j'essaye l'exemple YQL que vous avez fourni dans mon code java qui tente de lire comme une URL, j'obtiens une exception IO (le serveur a renvoyé le code de réponse HTTP: 400 pour l'URL: query.yahooapis.com/v1/public/ yql? q = select * from yahoo.finance.xchange where pair in ("USDEUR") & env = store: //datatables.org/alltableswithkeys) qui fonctionne si je copie juste après cette URL dans le navigateur
Malik Firose
'public static void main (String [] args) {String currencyPair = "USDEUR"; String address = " query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange where pair in (\" "+ currencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; try {// String response = URLReader.read (adresse); // System.out.println (réponse); URL url = nouvelle URL (adresse); BufferedReader in = new BufferedReader (nouveau InputStreamReader (url.openStream ())); } catch (Exception e) {// TODO Bloc catch généré automatiquement e.printStackTrace (); }} '
Malik Firose
Salut @Keyo, existe-t-il un moyen d'obtenir le taux haut / bas pour une période de temps spécifique dans YQL?
entpnomad
3
Malheureusement, Yahoo a mis fin à son service hier sans avertissement, mettant en danger des milliers d'entreprises.
FlorianB
Cette API semble être définitivement désactivée.
réduction de l'activité
47

Si vous avez besoin d'une API gratuite et simple pour convertir une devise en une autre, essayez free.currencyconverterapi.com .

Avertissement, je suis l'auteur du site Web et je l'utilise pour l'un de mes autres sites Web.

Le service est gratuit, même pour des applications commerciales, mais n'offre aucune garantie. Pour des raisons de performances, les valeurs ne sont mises à jour que toutes les heures.

Un exemple d'URL de conversion est: http://free.currencyconverterapi.com/api/v6/convert?q=EUR_PHP&compact=ultra&apiKey=sample-api-key qui renverra une valeur au format json, par exemple {"EUR_PHP": 60.849184}

Manny
la source
1
Merci. Quelle est la source des taux de conversion? Cela nous donne la possibilité de mesurer la fiabilité de votre service.
s3m3n
1
Fonctionne en novembre 2017. Merci de l'avoir fourni. Mais continuez à le fournir car les sites en dépendent. Utilisait Yahoo Finance qui vient de mourir.
Tuntable
1
Puissant. Merci auteur
james Oduro
1
Je passerai bientôt à la version premium.
james Oduro
1
Ce n'est plus gratuit. Gratuit est uniquement destiné aux tests / démos. Si vous en demandez plus, il vous en renverra 400 et vous indiquera l'erreur: "Le système a détecté cette demande comme un abus du service gratuit. Si vous avez besoin de plus de demandes, veuillez envisager d'utiliser le service payant. Veuillez consulter currencyconverterapi.com/pricing pour plus d'informations. Merci. " et bloquez votre adresse IP et votre clé API.
Swifty
25

J'ai obtenu ce contenu de 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
la source
5
Avec iGoogle hors de la boucle, c'est la meilleure option, la précédente option www.google.com/ig ne fonctionne plus.
raphie
1
www.google.com/finance ne fonctionne plus. En septembre 2017, l'URL de la finance a été remplacée par finance.google.com. : D bryanveloso.com/2017/09/14/…
jehzlau
2
Le passage de Google à finance.google.com m'a fait trébucher et a interrompu une demande de curl. Pour corriger cela, demandez à curl de suivre les redirections: curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true);
jaybong
1
Je viens d'essayer google.com/finance/converter?a=1&from=INR&to=USD n'a pas fonctionné, ouvre la boîte de dialogue.
Tuntable
4
www.google.com/finance/converter et finance.google.com/finance/converter ne sont plus disponibles.
Christian
16

Voici quelques API d'échange avec exemple PHP.

[ Ouvrir l'API des taux de change ]

Fournit 1 000 demandes par mois gratuitement. Vous devez vous inscrire et saisir l'identifiant de l'application. La devise de base USD pour un compte gratuit. Vérifiez les devises et la documentation prises en charge .

// 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 de la couche de devises ]

Fournit 1 000 demandes par mois gratuitement. Vous devez vous inscrire et saisir la clé d'accès. La devise de base personnalisée n'est pas prise en charge dans le compte gratuit. Consultez la documentation .

$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
la source
14
Atteint le quota très facilement ... non recommandé.
Ayush Goyal
7
@AyushGoyal Si vous utilisez l'API pour chaque conversion, vous le faites mal de toute façon. Configurez un cronjob pour interroger l'API toutes les heures et stocker les taux de change actuels dans une table de base de données et lorsque vous devez effectuer des calculs d'échange, extrayez les données de la table aussi souvent que vous le souhaitez. Vous n'atteindrez jamais la limite mensuelle de cette façon.
tpartee
1

Vous pouvez essayer la géoplugine

Outre la géolocalisation effectuée par IP (mais l'IP est l'IP du fournisseur, donc pas si précise), ils renvoient aussi des devises et disposent d'un convertisseur de devises: voir exemples.

Ils ont 111 devises mises à jour.

user3227746
la source
0

Si vous recherchez une solution à base de rubis pour ce problème, je vous recommande d'utiliser la méthode Google Calculator une solution similaire à la suivante: 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})"
éclairer
la source
2
iGoogle a été retiré le 1er novembre 2013. Cette API ne fonctionne plus.
réformé le
0

Voici un simple script PHP qui obtient le taux de change entre GBP et 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/>'; 
?>

Les taux de change de Google ne sont pas exacts Google lui-même dit ==> Google ne peut pas garantir l'exactitude des taux de change utilisés par la calculatrice. Vous devez confirmer les taux actuels avant d'effectuer des transactions qui pourraient être affectées par des changements dans les taux de change. Les taux de change fournis par Citibank NA sont affichés sous licence. Les tarifs sont à titre indicatif seulement et sont sujets à changement sans préavis. Les tarifs des transactions réelles peuvent varier et Citibank ne propose de conclure aucune transaction, quel que soit le taux affiché.

mohamed nur
la source
3
iGoogle a été retiré le 1er novembre 2013. Cette API ne fonctionne plus.
réformé le
-1

Pour tous les débutants à la recherche d'un indice sur la conversion de devises, consultez ce lien. Datavoila

Cela m'a beaucoup aidé dans mon propre projet en C #. Juste au cas où le site disparaîtrait, j'ajouterai le code ci-dessous. Ajoutez simplement les étapes ci-dessous à votre propre projet. Désolé pour le formatage.

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);
Empereur 2052
la source