Как узнать курсы обмена через API, например Google Финансы? [закрыто]


137

Итак, я нашел API Google Finance и начал его просматривать, но нашел много информации о портфелях, транзакциях, позициях и других вещах, о которых я ничего не знаю.

Я смотрю не те документы? Что мне нужно сделать, чтобы получить поток обменных курсов от GF? Это вообще возможно?

РЕДАКТИРОВАТЬ

Чтобы было немного понятнее. Меня не интересуют технические детали, и мне не нужен код.


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

3
@George Stocker Этот вопрос изначально был очень конкретным о каком-то глупом API Google, который был удален некоторое время назад AFAIK. Каким-то образом люди начали добавлять альтернативы этому API, и он превратился в своего рода индекс API обмена валют. Очевидно, сообщество считает это полезным, поскольку оно набрало массу голосов и фаворитов ...
Богдан

@Bogdan Что вы хотите, чтобы я сделал?
Джордж Стокер

4
@GeorgeStocker Что ж, вы можете оставить его закрытым, если считаете, что это противоречит правилам SO, но не удаляйте его; Люди, кажется, находят это хорошим ориентиром для подобных вещей. Мой 2c.
Богдан

@GeorgeStocker Это номер 1 в Google по API JavaScript для валют и невероятно полезен. Этот элемент заслуживает постоянного обновления, поскольку он помогает многим разработчикам, что является основной причиной создания stackoverflow. Хотя вы правы в букве правила, закрывать эту тему не в духе, поскольку здесь нет спама или самоуверенных ответов. Убедительно прошу вас открыть его снова.
Ян Дерк

Ответы:


828

Спасибо за все ваши ответы.

Бесплатная конвертация валюты:

  • Тарифы обновляются каждые 30 мин.
  • Теперь для бесплатного сервера требуется ключ API.

Пример URL преобразования: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y.


Для потомков здесь они вместе с другими возможными ответами:

  1. Финансовый API Yahoo Снято с производства 06.11.2017 ###

Снято с производства 06.11.2017 с сообщением

Нам стало известно, что эта служба используется с нарушением Условий использования Yahoo. Таким образом, услуга прекращается. Для всех будущих исследований рынков и данных о ценных бумагах, пожалуйста, посетите financial.yahoo.com.

Запрос: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Этот CSV-файл использовался подключаемым модулем jQuery под названием 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

Здесь Конструктор запросов 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% 20 дюймов% 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. currencylayer API

Бесплатный план на 250 посещений в месяц.
Изменение «источника» (с «долларов») в бесплатной учетной записи не допускается.
Требуется регистрация.
Документация: 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. CurrencyFreaks API

Бесплатный план (1000 обращений в месяц).
Изменение «Базы» (с «USD») в бесплатной учетной записи запрещено.
Требуется
обновление регистрационных данных каждые 60 секунд.
179 валют по всему миру, включая валюты, металлы и криптовалюты.
Поддержка (даже в бесплатном плане) Shell, Node.js, Java, Python, PHP, Ruby, JS, C #, C, Go, Swift.
Документация: https://currencyfreaks.com/documentation.html

Конечная точка:

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

Ответ 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 (данные Европейского центрального банка)

Бесплатный план на 1000 обращений в месяц.
Изменение «источника» (с «USD») не допускается в бесплатной учетной записи. Требуется регистрация.

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


Веб-сайт: http://fixer.io/
Пример запроса: [http://api.fixer.io/latest?base=USD visible[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"}
  1. CurrencyApi.net

Бесплатный план на 1250 ежемесячных обращений к
150 криптовалютам и физическим валютам - обновления в реальном времени.
Базовая валюта для бесплатного аккаунта установлена ​​в долларах США.
Требуется регистрация.
Документация: currencyapi.net/documentation

Ответ JSON:

    {
      "valid": true,
      "updated": 1567957373,
      "base": "USD",
      "rates": {
              "AED": 3.673042,
              "AFN": 77.529504,
              "ALL": 109.410403,
              // 165 currencies + some cryptos
          }
      }
  1. Валюта от LabStack

Веб-сайт: https://labstack.com/currency
Документация: https://labstack.com/docs/api/currency/convert
Ценообразование: https://labstack.com/pricing
Request: https://currency.labstack.com / api / v1 / convert / 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
Обратите внимание: данные проекта Open Exchange Rates были перемещены из 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

69

Европейский центральный банк (ЕЦБ) также имеет самую надежную бесплатную рассылку, о которой я знаю. Он содержит около 28 валют и обновляется как минимум ежедневно.

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

Дополнительные форматы и инструменты см. На справочной странице ECB: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html


3
too bad fixer.io не имеет гарантии. Не для производства.
pronebird

2
К сожалению, по выходным не обновляется.
Денис

Многие рынки форекс закрыты с 16:00 EST в пятницу до 17:00 EST в воскресенье. Если вам действительно нужны более точные расценки на выходные, то да, я бы посмотрел другой поток.
Райан

1
@Ryan Но почему он не показывает все валюты?
Сунил

4
К сожалению, сервис Fixer.io устарел. Существует альтернативная совместимая замена API обменных курсов, расположенная на exchangeratesapi.io
madisvain

53

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

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

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

3
К сожалению, вчера Yahoo прекратила их обслуживание без предупреждения, поставив под угрозу тысячи предприятий.
FlorianB

Кажется, что этот API отключен навсегда.
снижение активности

48

Если вам нужен бесплатный и простой 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
Мощный. Спасибо, автор
james

1
Я скоро перейду на премиум.
james

1
Это больше НЕ бесплатно. Бесплатно только для тестирования / демонстрации. Если вы запросите больше, он вернет 400 и выдаст вам ошибку: «Система обнаружила этот запрос как злоупотребление бесплатной службой. Если вам нужно больше запросов, рассмотрите возможность использования платной службы. Проверьте currencyconverterapi.com/pricing для больше информации. Спасибо. " и заблокируйте свой ip и api-ключ.
Swifty

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 05

1
www.google.com/finance больше не работает. С сентября 2017 года URL-адрес финансового отдела был изменен на financial.google.com. : D bryanveloso.com/2017/09/14/…
jehzlau

2
Google, переходящий на financial.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 и financial.google.com/finance/converter больше не доступны.
Christian

16

Вот несколько API обмена на примере PHP.

[ Open Exchange Rates 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 долларов = 18039.09015 JPY

[ Currency Layer API ]

Предоставляет 1000 запросов в месяц бесплатно. Вы должны зарегистрироваться и получить КЛЮЧ доступа. Пользовательская базовая валюта не поддерживается в бесплатной учетной записи. Проверить документацию .

$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 долларов США = 18036,75045 JPY


14
Очень легко попадает в квоту .. не рекомендуется.
Ayush Goyal

7
@AyushGoyal. Если вы нажимаете API при каждой конверсии, значит, вы все равно делаете это неправильно. Настройте задание cron, чтобы запрашивать API каждый час и сохранять текущие курсы обмена в таблице базы данных, а когда вам нужно выполнять расчеты обмена, извлекайте данные из таблицы так часто, как вам нравится. Таким образом вы никогда не достигнете месячного лимита.
06

1

Вы можете попробовать геоплагин

Помимо геолокации, выполняемой по IP (но 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, который устанавливает обменный курс между фунтами и долларами США.

<?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, отображаются по лицензии. Тарифы предназначены только для информационных целей и могут быть изменены без предварительного уведомления. Ставки для фактических транзакций могут отличаться, и Ситибанк не предлагает совершать транзакции с любой отображаемой ставкой.


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.