137 votes

Comment obtenir les taux de change des devises via une API telle que Google Finance ?

Maintenant, j'ai trouvé le Google Finance API J'ai commencé à y jeter un œil, mais j'ai trouvé beaucoup d'informations sur les portefeuilles, les transactions, les positions et d'autres choses auxquelles je ne connais rien.

Est-ce que je regarde les mauvais documents ? Que dois-je faire pour obtenir un flux de taux de change de GF ? Est-ce même possible ?

EDITAR

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

0 votes

Voir stackoverflow.com/a/21627583/592868 pour un cours de php en utilisant Yahoo ! Finance

3 votes

@George Stocker Cette question était à l'origine très spécifique à propos d'une API Google stupide 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 elle s'est transformée en une sorte d'index sur les API de change. Il est évident que la communauté le trouve utile puisqu'il a obtenu des tonnes de votes et de favoris...

0 votes

@Bogdan Que voulez-vous que je fasse ?

898voto

zeFree Points 1167

Merci pour toutes vos réponses.

Interface utilisateur gratuite pour le convertisseur de devises :

  • Taux mis à jour toutes les 30 minutes
  • La clé API est maintenant requise pour le serveur gratuit.

Un exemple d'URL de conversion est le suivant : 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 Abandonné 2017-11-06

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

Il a été porté à notre attention que ce service est utilisé en en violation des conditions d'utilisation de Yahoo. En tant que tel, le service est interrompu. Pour toutes les recherches futures sur les marchés et les données sur 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 . Curry a depuis (2017-08-29) changé pour utiliser fixer.io à la place en raison de problèmes de stabilité. Cela pourrait être utile si vous avez besoin de plus qu'un simple CSV.

  1. ( grâce à Keyo ) Langage de requête Yahoo 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 a des données vieilles d'un jour), et s'arrêtent le week-end. Il n'est pas nécessaire de s'inscrire.

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

Voici le Constructeur de requêtes YQL où vous pouvez tester une requête et copier l'URL : (N'EST PLUS DISPONIBLE)

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

yql console no longer available

  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.
Inscription obligatoire.
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 la couche de monnaie

Plan libre pour 250 visites mensuelles
Le changement de "source" (de "USD") n'est pas autorisé dans un compte gratuit.
Inscription obligatoire.
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 de CurrencyFreaks

Plan libre (1000 visites par mois)
La modification de 'Base' (de 'USD') n'est pas autorisée dans un compte gratuit.
Inscription obligatoire
Données mises à jour toutes les 60 secondes.
179 devises dans le monde entier, y compris des monnaies, des métaux et des crypto-monnaies.
Support (même sur le plan gratuit) Shell,Node.js, Java, Python, PHP, Ruby, JS, C#, C, Go, Swift.
Documentation : https://currencyfreaks.com/documentation.html

Point final :

$ curl 'https://api.currencyfreaks.com/latest?apikey=YOUR_APIKEY'

Réponse JSON :

{
    "date": "2020-10-08 12:29:00+00",
    "base": "USD",
    "rates": {
        "FJD": "2.139",
        "MXN": "21.36942",
        "STD": "21031.906016",
        "LVL": "0.656261",
        "SCR": "18.106031",
        "CDF": "1962.53482",
        "BBD": "2.0",
        "GTQ": "7.783265",
        "CLP": "793.0",
        "HNL": "24.625383",
        "UGX": "3704.50271",
        "ZAR": "16.577611",
        "TND": "2.762",
        "CUC": "1.000396",
        "BSD": "1.0",
        "SLL": "9809.999914",
        "SDG": 55.325,
        "IQD": "1194.293591",
          .
          .
          .
    [179 currencies]
    }
}
  1. Fixer.io API (données de la Banque centrale européenne)

Plan gratuit pour 1 000 visites mensuelles
La modification de la "source" (de "USD") n'est pas autorisée dans un compte gratuit. Inscription obligatoire.

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

Site Internet : http://fixer.io/
Exemple de demande : [http://api.fixer.io/latest?base=USD\]\[7]
Ne recueille qu'une seule valeur par jour

  1. Alimentation de la Banque centrale européenne

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. échangeurapi.io

Selon le site web :

L'API 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'est nécessaire - MISE À JOUR : une clé API est maintenant nécessaire, le niveau gratuit est de 250 demandes/mois.
Par exemple (ceci utilise CURL, mais vous pouvez utiliser votre outil de requête préféré) :

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD&apikey=YOUR_KEY
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
  1. CurrencyApi.net

Plan libre pour 1250 visites mensuelles
150 Monnaies cryptées et physiques - mises à jour en direct
La devise de base est fixée à USD sur le compte gratuit
Inscription obligatoire.
Documentation : currencyapi.net/documentation

Réponse JSON :

    {
      "valid": true,
      "updated": 1567957373,
      "base": "USD",
      "rates": {
              "AED": 3.673042,
              "AFN": 77.529504,
              "ALL": 109.410403,
              // 165 currencies + some cryptos
          }
      }
  1. Monnaie de LabStack

Site web : https://labstack.com/currency
Documentation : https://labstack.com/docs/api/currency/convert
La 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 * 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. currency-api

  • Réponse gratuite et ultra-rapide grâce au CDN
  • Aucune limite de taux
  • Plus de 150 devises, y compris les crypto-monnaies courantes
  • Mise à jour quotidienne

Documentation : Lien
Demande : https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/latest/currencies/eur/jpy.json
Demande (Fallback) : https://cdn.jsdelivr.net/gh/fawazahmed0/currency-api@1/latest/currencies/eur/jpy.min.json
Réponse :

{
    "date": "2021-10-03",
    "jpy": 128.798673
}

6 votes

Voici un lien avec une explication plus utile de l'API Yahoo finance.

4 votes

Veuillez noter que les données du projet Open Exchange Rates ont été déplacées de GitHub (AUCUNE donnée n'y est désormais disponible) et sont maintenant disponibles via openexchangerates.org - Merci !

2 votes

L'API de Yahoo finance est-elle gratuite pour une utilisation commerciale ? Je ne trouve aucune information qui le prouve.

80voto

Ryan Points 2182

La Banque centrale européenne (BCE) dispose également du flux gratuit le plus fiable que je connaisse. Il contient environ 28 monnaies et est mis à jour au moins quotidiennement.

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

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

4 votes

Dommage que Fixer.io ne soit pas garanti. Pas pour la production.

3 votes

Malheureusement, il ne se met pas à jour le week-end.

1 votes

De nombreux marchés de change sont fermés du vendredi à 16 heures EST au dimanche à 17 heures EST. Si vous avez vraiment besoin de taux plus précis le week-end, alors oui, je vérifierais un autre flux.

52voto

0 votes

Bonjour @Keyo, lorsque j'essaie l'exemple YQL que vous avez fourni dans mon code java qui tente de lire une URL, j'obtiens une exception IO (Server returned HTTP response code : 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 et colle cette URL dans le navigateur.

0 votes

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(address) ; // System.out. println(response) ; URL url = new URL(address) ; BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())) ; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace() ; } }'

0 votes

Bonjour @Keyo, existe-t-il un moyen d'obtenir le taux haut/bas pour une période spécifique dans YQL ?

26voto

Lokesh Points 449
<?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);

?>

6 votes

Avec iGoogle hors circuit, c'est la meilleure option, l'option précédente www.google.com/ig ne fonctionne plus.

0 votes

Mais si vous faites plus de 10 réponses il ne fonctionnera plus

0 votes

@badr : je viens de tester cela, en rafraîchissant la page un nombre incalculable de fois, et cela fonctionne toujours. Auparavant, j'utilisais les API de Yahoo, et c'était nul. Cela faisait s'arrêter le serveur (bloqué dans les requêtes sur cette API elle-même).

16voto

Madan Sapkota Points 3464

Voici quelques API d'échange avec un exemple en PHP.

[ API des taux de change ouverts ]

Fournit 1 000 demandes par mois gratuitement. Vous devez vous enregistrer et obtenir l'App ID. La devise de base est le USD pour le compte gratuit. Vérifiez le monnaies supportées y documentation .

// 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 monétaire ]

Fournit 1 000 demandes par mois gratuitement. Vous devez vous inscrire et obtenir la clé d'accès. La monnaie de base personnalisée est no supporté dans le compte gratuit. Vérifiez le 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

15 votes

Atteint son quota très facilement non recommandé.

7 votes

@AyushGoyal Si vous interrogez l'API pour chaque conversion, vous vous y prenez mal de toute façon. Configurez un cronjob pour interroger l'API toutes les heures et stockez les taux de change actuels dans une table de base de données. Lorsque vous devez effectuer des calculs de change, extrayez les données de la table aussi souvent que vous le souhaitez. Vous n'atteindrez jamais la limite mensuelle de cette manière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X