Як отримати обмінний курс через такий API, як Google Finance? [зачинено]


137

Тепер я знайшов API фінансів Google і почав переглядати це, але знайшов багато інформації про портфелі, транзакції, позиції та інші речі, про які я нічого не знаю.

Чи дивлюся я на неправильні документи? Що мені потрібно зробити, щоб отримати обмінний курс з GF? Це навіть можливо?

EDIT

Щоб зробити речі яснішими. Мене не цікавлять технічні речі, і я не хочу будь-якого коду.


див. stackoverflow.com/a/21627583/592868 для php-класу за допомогою Yahoo! Фінанси
Фелікс Генен

3
@George Stocker Це питання спочатку було дуже специфічним щодо дурного API Google, який був відкликаний деякий час тому AFAIK. Чомусь люди почали додавати альтернативи цьому API, і це перетворилося на якийсь індекс про API обміну валют. Очевидно, громада вважає її корисною, оскільки набрала тонни голосів та фаворитів ...
Богдан

@Bogdan Що б ти хотів зробити?
Джордж Стокер

4
@GeorgeStocker Ну, ви можете залишити його закритим, якщо відчуваєте, що це проти правил ТАК, але не видаляйте його; Люди, здається, вважають це гарним посиланням на подібні речі. Мій 2с.
Богдан

@GeorgeStocker Це номер 1 в Google для api-файлів javascript для валюти і надзвичайно корисний. Цей елемент заслуговує на постійне оновлення, оскільки він допомагає багатьом розробникам, що є основною причиною створення stackoverflow. Незважаючи на те, що ви маєте рацію в листі цього правила, не в дусі закривати цю тему, оскільки не можна знайти спаму чи впевнених відповідей. Я прошу вас знову відкрити.
Ян Дерк

Відповіді:


821

Дякую за всі ваші відповіді.

Безкоштовні валютніконвертери:

  • Ціни оновлюються кожні 30 хв
  • Тепер ключ вільного API необхідний для безкоштовного сервера.

Приклад URL-адреси конверсії: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Що стосується нащадків, вони є поряд з іншими можливими відповідями:

  1. API фінансів Yahoo Скасовано 2017-11-06 ###

Припинено з 2017-11-06 повідомленням

Ми дізналися, що ця послуга використовується з порушенням Загальних положень та умов Yahoo. Таким чином, послуга припиняється. Про всі майбутні дослідження даних про ринки та акції див. На сайті finance.yahoo.com.

Запит: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Цей CSV використовувався плагіном jQuery під назвою [Curry] [1]. З тих пір, коли Curry (2017-08-29) перейшов на використання fixer.io замість проблем із стабільністю. Може бути корисним, якщо вам потрібно більше, ніж просто CSV.

  1. ( завдяки Keyo ) Yahoo Query Language дозволяє отримати цілу купу валют одразу в XML або JSON. Дані оновлюються другим (тоді як Європейський центральний банк має давні дані) і припиняються у вихідні. Не потребує жодної реєстрації.

[http://query.yahooapis.com/v1/public/yql?q=select * з yahoo.finance.xchange, де пара в ("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]

Ось Конструктор запитів YQL, де ви можете перевірити запит і скопіювати 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

Консоль yql більше не доступна

  1. API обмінних курсів з відкритим кодом

Безкоштовно для особистого користування (1000 звернень на місяць)
Зміна "бази" (з "USD") заборонено в Безкоштовний рахунок
Потрібна реєстрація.
Запит: http://openexchangerates.org/latest.json
Відповідь:

   <!-- 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 валютного рівня

Безкоштовний план на 250 щомісячних звернень
Зміна "джерела" (з "USD") заборонено в Безкоштовний рахунок
Потрібна реєстрація.
Документація: currencylayer.com/documentation

Відповідь 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. Fixer.io API (дані Європейського центрального банку)

Безкоштовний план для 1000 щомісячних звернень
Зміна "джерела" (з "USD") заборонено в Безкоштовний рахунок Потрібна реєстрація.

Ця кінцева точка API застаріла і припинить роботу 1 червня 2018 року. Для отримання додаткової інформації відвідайте: https://github.com/fixerAPI/fixer#readme)


Веб-сайт: http://fixer.io/
Приклад запиту: [http://api.fixer.io/latest?base=USD обвинений7]
Збирає лише одне значення щодня
  1. Корм Європейського центрального банку

Документи: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html#dev
Запит: http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml

Відповідь 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 ### За даними веб-сайту:

    API обмінних курсів - це безкоштовна послуга поточних та історичних валютних курсів, опублікована Європейським центральним банком
    Ця послуга сумісна з fixer.io і дуже проста у використанні: ключ API не потрібен. Наприклад (для цього використовується CURL, але ви можете використовувати улюблений інструмент запиту):

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
  2. ### CurrencyApi.net ### Безкоштовний план на 1250 звернень щомісяця
    Базова валюта встановлена ​​як USD на безкоштовній рахунку
    Потрібна реєстрація.
    Документація: currencyapi.net/documentation

    Відповідь JSON:

    {
      "valid": true,
      "timestamp": 1567957373,
      "base": "USD",
      "rates": {
              "AED": 3.673042,
              "AFN": 77.529504,
              "ALL": 109.410403,
              // 165 currencies + some cryptos
          }
      }
  3. ### Валюта від LabStack ###

Веб-сайт: https://labstack.com/currency
Документація: https://labstack.com/docs/api/currency/convert
Ціноутворення: https://labstack.com/pricing
Запит: https://currency.labstack.com / api / v1 / конвертувати / 1 / USD / INR
відповідь:

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

[1]: http://query.yahooapis.com/v1/public/yql?q=select * з yahoo.finance.xchange, де пара в ("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
Ось посилання з більш корисним поясненням API фінансів Yahoo.
Міранда

4
Зверніть увагу, що дані проекту щодо курсу відкритих курсів валют були віддалені від GitHub (зараз немає даних) і тепер подаються через openexchangerates.org - дякую!
Вільям Джосс Кроукрофт

17
rate-exchange.appspot більше не працює ..
letitbefornow

18
rate-exchange.appspot.com/currency?from=USD&to=EUR більше не доступний, замість цього скористайтеся rate-exchange-1.appspot.com/currency?from=USD&to=EUR .
Гіппас

5
ОНОВЛЕННЯ: Зараз Yahoo відключив api цим повідомленням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.
ZenithS

66

Європейський центральний банк (ЄЦБ) також має найнадійніший безкоштовний корм, про який я знаю. Він містить приблизно 28 валют і оновлюється щонайменше щодня.

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

Більше форматів та інструментів див. На довідковій сторінці ЄЦБ: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html


3
занадто поганий fixer.io поставляється без гарантії. Не для виробництва.
Бен Сінклер

2
На жаль, він не оновлюється у вихідні дні.
Денис

Багато ринків форекс-торгівлі закрито з 16:00 за п’ятницею EST у п’ятницю до 17 вечора у неділю. Якщо вам справді потрібні більш точні тарифи на вихідні, то так, я б перевірив інший потік.
Райан

1
@Ryan Але чому він показує не всі валюти?
Sunil Targe

4
Послуга Fixer.io на жаль застаріла. Існує альтернативна сумісна API заміщення обмінних курсів, розміщена на сайті exchangeratesapi.io
madisvain

53

Привіт @Keyo, коли я намагаюсь зразок YQL, який я вказав у своєму коді Java, який намагається прочитати як URL-адресу, я отримую виняток IO (Сервер повернув код відповіді HTTP: 400 за URL: query.yahooapis.com/v1/public/ yql? q = виберіть * з yahoo.finance.xchange, де пара в ("USDEUR") & env = store: //datatables.org/alltableswithkeys), яка працює, якщо я просто копіюю цю URL-адресу в браузер
Malik Firose

'public static void main (String [] args) {String currencyPair = "USDEUR"; String address = " query.yahooapis.com/v1/public/yql?q=select * з yahoo.finance.xchange, де пара в (\" "+ CurrencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; спробуйте {// String response = URLReader.read (адреса); // System.out.println (відповідь); URL-адреса URL = нова URL-адреса (адреса); BufferedReader в = новий BufferedReader (новий InputStreamReader (url.openStream ())); } лов (виняток е) {// TODO Автоматично створений блок лову e.printStackTrace (); }} '
Малік Фіроза

Привіт @Keyo, чи є спосіб отримати високу / низьку ставку для конкретного часового періоду в YQL?
entpnomad

3
На жаль Yahoo припинив їх службу вчора без попередження, поставивши під загрозу тисячі підприємств.
FlorianB

Здається, цей API назавжди вимкнено.
зменшення активності

47

Якщо вам потрібен безкоштовний та простий API для конвертації однієї валюти в іншу, спробуйте free.currencyconverterapi.com .

Відмова, я автор веб-сайту, і я використовую його для одного з моїх інших веб-сайтів.

Послуга безкоштовно використовувати навіть для комерційних програм, але не надає гарантій. З міркувань продуктивності значення оновлюються лише щогодини.

Приклад URL-адреси конверсії: http://free.currencyconverterapi.com/api/v6/convert?q=EUR_PHP&compact=ultra&apiKey=sample-api-key, який поверне значення у форматі json, наприклад {"EUR_PHP": 60.849184}


1
Дякую. Яке джерело коефіцієнтів конверсії? Це дає нам можливість вимірювати надійність вашої послуги.
s3m3n

1
Працює листопад 2017. Дякуємо за надання. Але будь ласка, продовжуйте надавати його, оскільки сайти залежать від нього. Використовував Yahoo Finance, який щойно помер.
Tuntable

1
Потужний. Автор подяки
Джеймс

1
Я скоро перейду до преміум-класу.
Джеймс

1
Це вже НЕ безкоштовно. Безкоштовно лише для тестування / демонстраційного використання. Якщо ви запитаєте більше, він поверне 400 і видасть вам помилку: "Система виявила цей запит як зловживання безкоштовним сервісом. Якщо вам потрібно більше запитів, будь ласка, подумайте про використання платної послуги. Будь ласка, перевірте Currencyconverterapi.com/pricing на більше інформації. Дякую. " і заблокуйте ваш ip та api-ключ.
Швидкий

25

Я отримав цей вміст від 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
Якщо iGoogle виходить із циклу, це найкращий варіант, колишній варіант www.google.com/ig більше не працює.
raphie

1
www.google.com/finance більше не працює. Станом на вересень 2017 року URL-адресу фінансів було змінено на finance.google.com. : D bryanveloso.com/2017/09/14/…
jehzlau

2
Google, який перейшов на finance.google.com, відмовив мене і порушив запит на завивку. Щоб виправити цей запит curl, слідкуйте за переспрямуванням: curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true);
jaybong

1
Щойно спробував google.com/finance/converter?a=1&from=INR&to=USD не вийшло, відкриється діалогове вікно.
Tuntable

4
www.google.com/finance/converter та finance.google.com/finance/converter більше не доступні.
Крістіан

16

Ось декілька API обміну з прикладом PHP.

[ API відкритих обмінних курсів ]

Забезпечує 1000 запитів на місяць безкоштовно. Ви повинні зареєструватися та захопити ідентифікатор додатка. Базова валюта USD для безкоштовного рахунку. Перевірте підтримувані валюти та документацію .

// 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 валютного шару ]

Забезпечує 1000 запитів на місяць безкоштовно. Ви повинні зареєструватися та захопити Access KEY. Користувальна базова валюта не підтримується у вільному обліковому записі. Перевірте документацію .

$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
Квоти звернення дуже легко ... не рекомендується.
Айуш Гоял

7
@AyushGoyal Якщо ви стикаєтесь з API для кожної конверсії, ви все одно зробите це неправильно. Налаштуйте cronjob для запитів API щогодини та зберігайте поточні курси обміну в таблиці бази даних, і коли вам потрібно робити обмінні розрахунки, витягуйте дані з таблиці так часто, як вам подобається. Ви ніколи не досягнете місячного ліміту таким чином.
tpartee

1

Ви можете спробувати геоплагін

Крім геолокації, здійсненої IP (але ІР є IP-провайдером, тож не таким точним), вони також повертають валюти і мають конвертор валют: див. Приклади.

У них оновлено 111 валют.


0

Якщо ви шукаєте рішення цієї проблеми на основі рубіну, рекомендую використовувати метод Google Calculator для рішення, подібного до наступного: 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 листопада 2013 року. Цей API більше не працює.
реформовано


0

Ось один простий скрипт PHP, який отримує курс між GBP і 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/>'; 
?>

Курси валют Google не точні. Сам google говорить ==> Google не може гарантувати точність обмінних курсів, які використовує калькулятор. Ви повинні підтвердити поточні курси, перш ніж робити будь-які операції, на які можуть вплинути зміни валютних курсів. Курси іноземної валюти, які надає Citibank NA, відображаються відповідно до ліцензії. Ціни призначені лише для інформаційних цілей і можуть змінюватися без попереднього повідомлення. Ціни на фактичні транзакції можуть бути різними, і Citibank не пропонує укладати жодних операцій за будь-якою ставкою.


3
iGoogle був відкликаний 1 листопада 2013 року. Цей API більше не працює.
реформовано

-1

Для всіх хлопців-початківців, які шукають підказку щодо конвертації валюти, перегляньте це посилання. Datavoila

Це дуже допомогло мені щодо мого власного проекту в C #. На випадок, якщо сайт зникне, я додаю код нижче. Просто додайте наведені нижче кроки до власного проекту. Вибачте за форматування.

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);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.