Google Finans gibi bir API aracılığıyla para birimi döviz kurlarını nasıl alabilirim? [kapalı]


137

Şimdi Google Finans API'sını buldum ve araştırmaya başladım, ancak portföyler, işlemler, pozisyonlar ve hakkında hiçbir şey bilmediğim diğer şeyler hakkında çok fazla bilgi buldum.

Yanlış belgelere mi bakıyorum? GF'den döviz kurları feed'i almak için ne yapmam gerekir? Bu mümkün mü?

DÜZENLE

İşleri biraz daha netleştirmek için. Teknik konularla ilgilenmiyorum ve herhangi bir kod istemiyorum.


Yahoo! kullanan bir php sınıfı için stackoverflow.com/a/21627583/592868 adresine bakın. Finans
Felix Geenen

3
@George Stocker Bu soru aslında bir süre önce AFAIK'tan emekli olan aptal Google API'sı hakkında çok spesifikti. Her nasılsa insanlar bu API'ye alternatifler eklemeye başladılar ve bu, döviz değişim API'ları hakkında bir tür dizine dönüştü. Açıkçası topluluk tonlarca oy ve favorilere sahip olduğu için faydalı buluyor ...
Bogdan

@Bogdan Ne yapmamı istersiniz?
George Stocker

4
@GeorgeStocker SO kurallarına aykırı olduğunu düşünüyorsanız onu silebilirsiniz, ancak silmeyin; İnsanlar bu tür şeyler için iyi bir referans buluyor gibi görünüyor. Benim 2c.
Bogdan

@GeorgeStocker Para birimi javascript api için Google'ın 1 numaralı ve inanılmaz derecede yararlı. Bu öğe, birçok geliştiriciye yardımcı olduğu için güncel kalmayı hak ediyor, bu da stackoverflow'un oluşturulmasının ana sebebidir. Kural mektubunda haklı olsanız da, bu konuyu kapatmak ruhaniyet içinde değildir, çünkü spam veya düşünülmüş cevaplar bulunmaz. Tekrar açmanızı rica ediyorum.
Jan Derk

Yanıtlar:


821

Tüm cevaplarınız için teşekkürler.

Ücretsiz döviz kuru

  • Fiyatlar her 30 dakikada bir güncellenir
  • Artık ücretsiz sunucu için API anahtarı gerekiyor.

Örnek bir dönüşüm URL'si: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Burada gelecek nesiller için diğer olası cevaplarla birlikte:

  1. Yahoo finans API'sı Üretimi durduruldu 2017-11-06 ###

2017-11-06 tarihinden itibaren mesajla durduruldu

Bu hizmetin Yahoo Hizmet Şartları'na aykırı olarak kullanıldığını fark ettik. Bu nedenle, hizmet durduruluyor. Gelecekteki tüm piyasalar ve hisse senedi veri araştırmaları için lütfen Finance.yahoo.com adresine bakın.

Talep: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Bu CSV, [Curry] [1] adlı bir jQuery eklentisi tarafından kullanılıyordu. Curry (2017-08-29) beri istikrar sorunları nedeniyle fixer.io kullanmaya başladı. Bir CSV'den daha fazlasına ihtiyacınız varsa yararlı olabilir.

  1. ( Keyo sayesinde ) Yahoo Query Language , XML veya JSON'da aynı anda çok sayıda para birimini almanızı sağlar. Veriler ikincisine göre güncellenir (oysa Avrupa Merkez Bankası günlük verileri içerir) ve hafta sonu durur. Herhangi bir kayıt gerektirmez.

[http://query.yahooapis.com/v1/public/yql?q=select * yahoo.finance.xchange adresinden ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDCZK") , "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 = mağaza: //datatables.org/alltableswithkeys] [1]

İşte YQL sorgu oluşturucu, bir sorguyu test edip url'yi kopyalayabilirsiniz: (ARTIK ARTIK YOK)

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

yql konsolu artık mevcut değil

  1. Açık Kaynak Döviz Kurları API'sı

Kişisel kullanım için ücretsiz (ayda 1000 sonuç)
Ücretsiz hesapta "temel" ("USD" den ) değiştirilmesine izin verilmiyor
Kayıt gerekiyor.
İstek: http://openexchangerates.org/latest.json
Yanıt:

   <!-- 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. para birimi katmanı API'sı

250 aylık isabet için Ücretsiz Plan
"Kaynak" değiştirilmeli ("USD" den) Ücretsiz hesapta izin verilmiyor
Kayıt gerekiyor.
Belgeler: currencylayer.com/documentation

JSON Yanıtı:

   <!-- 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. Fixer.io API (Avrupa Merkez Bankası verileri)

1.000 aylık isabet için Ücretsiz Plan
"Kaynak" değiştirilmeli ("USD" den) Ücretsiz hesapta izin verilmiyor Kayıt gerekiyor.

Bu API uç noktası kullanımdan kaldırıldı ve 1 Haziran 2018'de çalışmaz. Daha fazla bilgi için lütfen şu adresi ziyaret edin: https://github.com/fixerAPI/fixer#readme)


Web sitesi: http://fixer.io/
Örnek istek: [http://api.fixer.io/latest?base=USD yetersiz[7]
Her gün yalnızca bir değer toplar
  1. Avrupa Merkez Bankası Yemi

Dokümanlar: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
İstek: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

XML Yanıtı :

   <!-- 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 ### Web sitesine göre:

    Döviz kurları API, Avrupa Merkez Bankası tarafından yayınlanan güncel ve tarihi döviz kurları için ücretsiz bir hizmettir
    Bu hizmet fixer.io ile uyumludur ve kullanımı gerçekten kolaydır: API anahtarı gerekmez. Örneğin (bu CURL kullanır, ancak favori istek aracınızı kullanabilirsiniz):

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
  2. ### CurrencyApi.net ### 1250 aylık isabet için Ücretsiz Plan
    Temel para birimi ücretsiz hesap için USD olarak ayarlanmıştır
    Kayıt gerekiyor.
    Belgeler: currencyapi.net/documentation

    JSON Yanıtı:

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

Web sitesi: https://labstack.com/currency
Belgeler: https://labstack.com/docs/api/currency/convert
Fiyatlandırma: https://labstack.com/pricing
Talep: https://currency.labstack.com / api / v1 / convert / 1 / USD / INR
Yanıt:

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

[1]: http://query.yahooapis.com/v1/public/yql?q=select * yahoo.finance.xchange adresinden ("USDEUR", "USDJPY", "USDBGN", "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 = mağaza: //datatables.org/alltableswithkeys


6
İşte Yahoo finans API'sinin daha yararlı bir açıklaması olan bir bağlantı .
Miranda

4
Açık Döviz Kurları proje verilerinin GitHub'dan (şu anda orada HİÇBİR veri mevcut değil) uzaklaştırıldığını ve şimdi openexchangerates.org üzerinden sunulduğunu lütfen unutmayın - teşekkürler!
William Joss Crowcroft

17
rate-exchange.appspot artık çalışmıyor ..
letitbefornow


5
GÜNCELLEME: Şimdi Yahoo bu mesajı ile It 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.
api'yi

66

Avrupa Merkez Bankası (ECB) da bildiğim en güvenilir serbest beslemeye sahip. Yaklaşık 28 para birimi içerir ve en az günlük olarak güncellenir.

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

Daha fazla biçim ve araç için ECB referans sayfasına bakın: http://www.ecb.int/stats/exchange/eurofxref/html/index.tr.html


3
çok kötü fixer.io hiçbir garanti ile geliyor. Üretim için değil.
Ben Sinclair

2
Ne yazık ki, hafta sonları güncellenmiyor.
Denis

Birçok forex piyasası Cuma günleri 16: 00'dan Pazar günleri 17: 00'a kadar kapalıdır. Gerçekten daha doğru hafta sonu fiyatlarına ihtiyacınız varsa, evet, farklı bir akışı kontrol ederdim.
Ryan

1
@Ryan Peki neden tüm para birimlerini göstermiyor?
Sunil Targe

4
Fixer.io hizmeti ne yazık ki kullanımdan kaldırıldı. Bulunan alternatif uyumlu yedek Döviz kurları API vardır exchangeratesapi.io
madisvain

53

Merhaba @Keyo, bir URL olarak okumaya çalışan java kodumda sağladığım YQL örneğini denediğimde bir IO İstisnası alıyorum (Sunucu URL için 400 yanıt kodu döndürdü: query.yahooapis.com/v1/public/ yql? q = yahoo.finance.xchange'ten * seçin * ("USDEUR") ve env = store: //datatables.org/alltableswithkeys) adresindeki çift, bu URL'yi yalnızca tarayıcıya geçmiş olursam çalışır
Malik Firose

'public static void main (Dize [] args) {Dize currencyPair = "USDEUR"; Dize adresi = " sorgu.yahooapis.com/v1/public/yql?q=select * yahoo.finance.xchange adresinden (\" "+ currencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; try {// Dize yanıtı = URLReader.read (adres); // System.out.println (yanıt); URL url = yeni URL (adres); BufferedReader in = yeni BufferedReader (yeni InputStreamReader (url.openStream ())); } catch (Exception e) {// TODO Otomatik oluşturulan catch bloğu e.printStackTrace (); }} '
Malik Firose

Merhaba @Keyo, YQL belirli bir zaman dilimi için yüksek / düşük oranı elde etmenin bir yolu var mı?
Ocak'ta entpnomad

3
Ne yazık ki Yahoo dün hizmetlerini uyarı vermeden sonlandırdı ve binlerce işletmeyi tehlikeye attı.
FlorianB

Bu API kalıcı olarak devre dışı bırakılmış gibi görünüyor.
aktiviteyi azaltma

47

Bir para birimini diğerine dönüştürmek için ücretsiz ve basit bir API'ya ihtiyacınız varsa free.currencyconverterapi.com'u deneyin .

Feragatname, web sitesinin yazarıyım ve bunu diğer web sitelerimden biri için kullanıyorum.

Hizmet ticari uygulamalar için bile ücretsizdir ancak garanti vermez. Performans nedeniyle, değerler yalnızca her saat güncellenir.

Örnek bir dönüşüm URL'si: http://free.currencyconverterapi.com/api/v6/convert?q=EUR_PHP&compact=ultra&apiKey=sample-api-key , json biçimli bir değer döndürür, ör. {"EUR_PHP": 60.849184}


1
Teşekkürler. Dönüşüm oranlarının kaynağı nedir? Bu bize hizmetinizin güvenilirliğini ölçme imkanı verir.
s3m3n

1
Kasım 2017'de çalışıyor. Sağladığınız için teşekkürler. Ancak, siteler buna bağlı olduğundan lütfen sağlamaya devam edin. Sadece ölen Yahoo Finance kullanıyordu.
Tuntable

1
Güçlü. Teşekkür yazarı
james Oduro

1
Yakında premium'a geçeceğim.
james Oduro

1
Artık ücretsiz değil. Ücretsiz sadece test / demo kullanımı içindir. Daha fazlasını talep ederseniz 400 değerini döndürür ve size hata verir: "Sistem bu isteği ücretsiz hizmetin kötüye kullanılması olarak algıladı. Daha fazla talebe ihtiyacınız varsa, lütfen ücretli hizmeti kullanmayı düşünün. Lütfen currencyconverterapi.com/pricing adresini kontrol edin. daha fazla bilgi. Teşekkür ederim. " ip ve api anahtarınızı engelleyin.
Mart'ta Swifty

25

Bu içeriği http://www.scriptarticle.com/2012/05/03/get-live-currency-rates-and-currency-conversion-using-php-and-apis/ adresinden aldım.

<?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
İGoogle devre dışı bırakıldığında, bu en iyi seçenektir, önceki www.google.com/ig seçeneği artık çalışmaz.
raphie

1
www.google.com/finance artık çalışmıyor. Eylül 2017 itibarıyla finans URL'si, finans.google.com olarak değiştirildi. : D bryanveloso.com/2017/09/14/…
jehzlau

2
Finance.google.com'a taşınan Google beni harekete geçirdi ve bir kıvrılma isteği kırdı. Bu curl'in yönlendirmeleri izlemesini istemek için: curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true);
jaybong

1
Yeni denedim google.com/finance/converter?a=1&from=INR&to=USD çalışmadı, iletişim kutusunu açar.
17:33

4
www.google.com/finance/converter ve finans.google.com/finance/converter artık mevcut değildir.
Christian

16

İşte PHP örneği ile bazı değişim API'leri.

[ Açık Döviz Kurları API'sı ]

Ayda 1000 istek ücretsizdir. Uygulama Kimliğini kaydettirmeli ve almalısınız. Ücretsiz hesap için temel para birimi USD. Desteklenen para birimlerini ve belgeleri kontrol edin .

// 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 Japon Yeni

[ Para Birimi Katmanı API'sı ]

Ayda 1000 istek ücretsizdir. Kayıt ve erişim anahtarını kapmak gerekir. Özel temel para edilir değil serbest hesapta destekledi. Dokümanları kontrol edin .

$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 Japon Yeni


14
Çok kolay kota vurur ... önerilmez.
Ayush Goyal

7
@AyushGoyal Her dönüşüm için API'yı vuruyorsanız, yine de yanlış yapıyorsunuz demektir. API'yi her saat sorgulamak ve güncel döviz kurlarını bir veritabanı tablosunda saklamak için bir cronjob oluşturun ve döviz hesaplamaları yapmanız gerektiğinde verileri istediğiniz sıklıkta tablodan alın. Aylık sınıra asla bu şekilde ulaşmazsınız.
tpartee

1

Coğrafi eklentiyi deneyebilirsiniz

IP tarafından yapılan coğrafi konumun yanında (ancak IP sağlayıcı IP'dir, bu yüzden çok doğru değildir), para birimlerini de döndürür ve bir para birimi dönüştürücüye sahiptir: örneklere bakın.

111 para birimi güncellendi.


0

Bu sorun için yakut tabanlı bir çözüm arıyorsanız, Google Hesap Makinesi yöntemini aşağıdakine benzer bir çözüm kullanmanızı öneririz: 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 1 Kasım 2013'te kullanımdan kaldırıldı. Bu API artık çalışmıyor.
yeniden düzenlendi


0

İşte GBP ve USD arasında döviz kuru alan basit bir PHP Script

<?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/>'; 
?>

Google döviz kurları doğru değildir Google'ın kendisi ==> Google, hesap makinesi tarafından kullanılan döviz kurlarının doğruluğunu garanti edemez. Döviz kurlarındaki değişikliklerden etkilenebilecek herhangi bir işlem yapmadan önce cari oranları onaylamanız gerekir. Citibank NA tarafından sağlanan döviz kurları lisans altında görüntülenir. Fiyatlar yalnızca bilgi amaçlıdır ve önceden bildirilmeksizin değiştirilebilir. Gerçek işlemlerin ücretleri değişebilir ve Citibank, görüntülenen herhangi bir oranda herhangi bir işleme girmeyi teklif etmemektedir.


3
iGoogle 1 Kasım 2013'te kullanımdan kaldırıldı. Bu API artık çalışmıyor.
yeniden düzenlendi

-1

Para birimi dönüştürme hakkında bazı ipuçları arayan tüm yeni başlayanlar için bu bağlantıya bir göz atın. Datavoila

C # benim kendi proje ile ilgili med çok yardımcı oldu. Site kaybolursa, aşağıdaki kodu ekleyeceğim. Aşağıdaki adımları kendi projenize eklemeniz yeterlidir. Biçimlendirme için üzgünüm.

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);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.