¿Cómo obtengo los tipos de cambio de divisas a través de una API como Google Finance? [cerrado]

137

Ahora, encontré la API de Google Finance y comencé a buscar eso, pero encontré mucha información sobre carteras, transacciones, posiciones y otras cosas de las que no sé nada.

¿Estoy mirando los documentos incorrectos? ¿Qué debo hacer para obtener una fuente de tipos de cambio de GF? ¿Es esto posible?

EDITAR

Para aclarar las cosas un poco. No me interesan las cosas técnicas ni quiero ningún código.

Bogdan
fuente
ver stackoverflow.com/a/21627583/592868 para una clase php usando Yahoo! Finanzas
Felix Geenen
3
@George Stocker Esta pregunta fue originalmente muy específica sobre alguna tonta API de Google que se retiró hace un tiempo AFAIK. De alguna manera, la gente comenzó a agregar alternativas a esa API y se transformó en algún tipo de índice sobre las API de cambio de divisas. Obviamente, la comunidad lo encuentra útil ya que obtuvo toneladas de votos y favoritos ...
Bogdan
@Bogdan ¿Qué te gustaría que hiciera?
George Stocker
44
@GeorgeStocker Bueno, puede dejarlo cerrado si cree que va en contra de las reglas SO, pero no lo elimine; La gente parece encontrar esto como una buena referencia para este tipo de cosas. Mi 2c.
Bogdan
@GeorgeStocker Es el # 1 en Google para la moneda de JavaScript API y es increíblemente útil. Este elemento merece mantenerse actualizado porque ayuda a muchos desarrolladores, que es la razón principal por la que se creó stackoverflow. Si bien está en lo cierto en la letra de la regla, no está en el espíritu cerrar este tema, ya que no se pueden encontrar spam ni respuestas obstinadas. Le solicito amablemente que lo abra nuevamente.
Jan Derk

Respuestas:

821

Gracias por todas sus respuestas.

Moneda gratisconverterapi:

  • Tarifas actualizadas cada 30 min.
  • La clave API ahora es necesaria para el servidor libre.

Una URL de conversión de muestra es: http://free.currencyconverterapi.com/api/v5/convert?q=EUR_USD&compact=y


Para la posteridad aquí están junto con otras posibles respuestas:

  1. API de finanzas de Yahoo Descatalogado 2017-11-06 ###

Discontinuado a partir del 2017-11-06 con mensaje

Nos ha llamado la atención que este servicio se está utilizando en violación de los Términos de servicio de Yahoo. Como tal, el servicio está siendo descontinuado. Para todas las investigaciones futuras de datos de mercados y acciones, consulte finance.yahoo.com.

Solicitud: http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=USDINR=X
Este CSV estaba siendo utilizado por un complemento jQuery llamado [Curry] [1]. Curry desde entonces (2017-08-29) se movió para usar fixer.io en su lugar debido a problemas de estabilidad. Puede ser útil si necesita algo más que un CSV.

  1. ( gracias a Keyo ) Yahoo Query Language le permite obtener un montón de monedas a la vez en XML o JSON. Los datos se actualizan por segundo (mientras que el Banco Central Europeo tiene datos de un día) y se detiene el fin de semana. No requiere ningún tipo de registro.

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

Aquí está el Constructor de consultas YQL, donde puede probar una consulta y copiar la URL: (YA NO ESTÁ DISPONIBLE)

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

la consola yql ya no está disponible

  1. API de tipos de cambio de código abierto

Gratis para uso personal (1000 visitas por mes) El
cambio de "base" (de "USD") no está permitido en la cuenta Gratis
Requiere registro.
Solicitud: http://openexchangerates.org/latest.json
Respuesta:

   <!-- 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 moneda

Plan gratuito para 250 visitas mensuales El
cambio de "fuente" (de "USD") no está permitido en la cuenta gratuita
Requiere registro.
Documentación: currencylayer.com/documentation

Respuesta 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 (datos del Banco Central Europeo)

Plan gratuito para 1,000 visitas mensuales El
cambio de "fuente" (de "USD") no está permitido en la cuenta gratuita Requiere registro.

Este punto final de API está en desuso y dejará de funcionar el 1 de junio de 2018. Para obtener más información, visite: https://github.com/fixerAPI/fixer#readme)


Sitio web: http://fixer.io/
Solicitud de ejemplo: [http://api.fixer.io/latest?base=USDfont>[7]
Solo recopila un valor por día
  1. Feed del Banco Central Europeo

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

Respuesta 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 ### Según el sitio web:

    Tipos de cambio API es un servicio gratuito para los tipos de cambio actuales e históricos publicados por el Banco Central Europeo
    Este servicio es compatible con fixer.io y es realmente fácil de usar: no se necesita una clave API. Por ejemplo (esto usa CURL, pero puede usar su herramienta de solicitud favorita):

    > curl https://api.exchangeratesapi.io/latest?base=GBP&symbols=USD
    {"base":"GBP","rates":{"USD":1.264494191},"date":"2019-05-29"}
    
  2. ### CurrencyApi.net ### Plan gratuito para 1250 visitas mensuales
    La moneda base se establece como USD en una cuenta gratuita
    Requiere registro.
    Documentación: currencyapi.net/documentation

    Respuesta JSON:

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

Sitio web: https://labstack.com/currency
Documentación: https://labstack.com/docs/api/currency/convert
Precios: https://labstack.com/pricing
Solicitud: https://currency.labstack.com / api / v1 / convert / 1 / USD / INR
Respuesta:

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

[1]: http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange donde se empareja ("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
fuente
66
Aquí hay un enlace con una explicación más útil de la API de finanzas de Yahoo.
Miranda
44
Tenga en cuenta que los datos del proyecto de tipos de cambio abiertos se han alejado de GitHub (NO hay datos disponibles allí ahora) y ahora se están sirviendo a través de openexchangerates.org , ¡gracias!
William Joss Crowcroft
17
rate-exchange.appspot ya no funciona ..
letitbefornow
55
ACTUALIZACIÓN: Ahora Yahoo deshabilitó la API con este mensajeIt 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 el
66

El Banco Central Europeo (BCE) también tiene el feed gratuito más confiable que conozco. Contiene aproximadamente 28 monedas y se actualiza al menos diariamente.

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

Para obtener más formatos y herramientas, consulte la página de referencia del BCE: http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html

Ryan
fuente
3
muy mal fixer.io viene sin garantía. No es para producción.
Ben Sinclair
2
Lamentablemente, no se actualiza los fines de semana.
Denis
Muchos mercados de compraventa de divisas están cerrados desde las 4 p.m. EST del viernes hasta las 5 p.m. EST del domingo. Si realmente necesita tarifas de fin de semana más precisas, entonces sí, verificaría una transmisión diferente.
Ryan
1
@ Ryan ¿Pero por qué no muestra todas las monedas?
Sunil Targe
44
El servicio Fixer.io lamentablemente está en desuso. Hay una API de tasas de cambio de reemplazo compatible alternativa ubicada en exchangeratesapi.io
madisvain
53

Yahoo tiene una función YQL para obtener un montón de monedas a la vez en XML o JSON. Me di cuenta de que los datos están actualizados por minutos cuando el BCE tiene datos de un día y se detiene el fin de semana.

http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.xchange donde se empareja ("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

Aquí está su generador de consultas, donde puede probar una consulta y copiar la 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

Keyo
fuente
Hola @Keyo, cuando pruebo la muestra de YQL que proporcionaste dentro de mi código Java que intenta leer como URL, obtengo una excepción IO (el servidor devolvió el código de respuesta HTTP: 400 para URL: query.yahooapis.com/v1/public/ yql? q = seleccione * de yahoo.finance.xchange donde emparejar ("USDEUR") & env = store: //datatables.org/alltableswithkeys) que funciona si solo copio esta URL al navegador
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 donde emparejar en (\" "+ currencyPair +" \ ") & env = store: //datatables.org/ alltableswithkeys "; pruebe {// String response = URLReader.read (dirección); // System.out.println (respuesta); URL url = nueva URL (dirección); BufferedReader in = new BufferedReader (nuevo InputStreamReader (url.openStream ())); } catch (Excepción e) {// TODO Bloque de captura generado automáticamente e.printStackTrace (); }} '
Malik Firose
Hola @Keyo, ¿hay alguna forma de obtener la tasa alta / baja para un marco de tiempo específico en YQL?
entpnomad
3
Lamentablemente, Yahoo terminó su servicio ayer sin previo aviso, poniendo en peligro a miles de empresas.
FlorianB
Esta API parece estar permanentemente deshabilitada.
Reducción de la actividad
47

Si necesita una API simple y gratuita para convertir una moneda a otra, pruebe free.currencyconverterapi.com .

Descargo de responsabilidad, soy el autor del sitio web y lo uso para uno de mis otros sitios web.

El servicio es de uso gratuito incluso para aplicaciones comerciales, pero no ofrece garantía. Por razones de rendimiento, los valores solo se actualizan cada hora.

Una URL de conversión de muestra es: http://free.currencyconverterapi.com/api/v6/convert?q=EUR_PHP&compact=ultra&apiKey=sample-api-key que devolverá un valor con formato json, por ejemplo, {"EUR_PHP": 60.849184}

Manny
fuente
1
Gracias. ¿Cuál es la fuente de las tasas de conversión? Esto nos da la posibilidad de medir la confiabilidad de su servicio.
s3m3n
1
Funciona en noviembre de 2017. Gracias por proporcionarlo. Pero siga proporcionándolo, ya que los sitios dependen de él. Estaba usando Yahoo Finance que acaba de morir.
Aplicable el
1
Poderoso. Gracias autor
James Oduro
1
Actualizaré a premium pronto.
james Oduro
1
Ya no es gratis. Gratis es solo para uso de prueba / demostración. Si solicita más, devolverá 400 y le dará un error: "El sistema ha detectado esta solicitud como un abuso del servicio gratuito. Si necesita más solicitudes, considere usar el servicio pago. Consulte currencyconverterapi.com/pricing para más información. Gracias ". y bloquee su ip y api-key.
Swifty
25

Obtuve este contenido 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
fuente
55
Con iGoogle fuera del ciclo, esta es la mejor opción, la opción anterior www.google.com/ig ya no funciona.
raphie
1
www.google.com/finance ya no funciona. A partir de septiembre de 2017, la URL de finanzas se cambió a finance.google.com. : D bryanveloso.com/2017/09/14/…
jehzlau
2
El traslado de Google a finance.google.com me hizo tropezar y rompió una solicitud de rizo. Para arreglar eso, solicite a curl que siga las redirecciones: curl_setopt ($ curl, CURLOPT_FOLLOWLOCATION, true);
Jaybong
1
Acabo de probar google.com/finance/converter?a=1&from=INR&to=USD no funcionó, abre el diálogo.
Aplicable el
44
www.google.com/finance/converter y finance.google.com/finance/converter ya no están disponibles.
Christian
16

Aquí hay algunas API de intercambio con ejemplos de PHP.

[ API de tipos de cambio abiertos ]

Proporciona 1,000 solicitudes por mes gratis. Debe registrarse y obtener la ID de la aplicación. La moneda base USD para una cuenta gratuita. Consulte las monedas y la documentación admitidas .

// 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 capa de moneda ]

Proporciona 1,000 solicitudes por mes gratis. Debe registrarse y tomar la CLAVE de acceso. La moneda base personalizada no es compatible con la cuenta gratuita. Consulta la documentación .

$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
fuente
14
Cuota cuota muy fácilmente ... no se recomienda.
Ayush Goyal
77
@AyushGoyal Si está accediendo a la API para cada conversión, lo está haciendo mal de todos modos. Configure un cronjob para consultar la API cada hora y almacenar los tipos de cambio actuales en una tabla de base de datos y cuando necesite hacer cálculos de intercambio extraiga los datos de la tabla con la frecuencia que desee. Nunca alcanzarás el límite mensual de esa manera.
tpartee
1

Puedes probar geoplugin

Además de la geolocalización realizada por IP (pero la IP es la IP del proveedor, por lo que no es tan precisa), también devuelven monedas y tienen un convertidor de divisas: ver ejemplos.

Tienen 111 monedas actualizadas.

usuario3227746
fuente
0

Si está buscando una solución basada en rubí para este problema, le recomiendo usar el método de la Calculadora de Google, una solución similar a la siguiente: 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})"
iluminar
fuente
2
iGoogle se retiró el 1 de noviembre de 2013. Esta API ya no funciona.
reformado el
0

Aquí hay un script PHP simple que obtiene el tipo de cambio entre GBP y 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/>'; 
?>

Las tasas de cambio de Google no son precisas. Google mismo dice ==> Google no puede garantizar la precisión de los tipos de cambio utilizados por la calculadora. Debe confirmar las tasas actuales antes de realizar cualquier transacción que pueda verse afectada por cambios en las tasas de cambio. Las tasas de cambio de moneda extranjera proporcionadas por Citibank NA se muestran bajo licencia. Las tarifas son solo para fines informativos y están sujetas a cambios sin previo aviso. Las tarifas de las transacciones reales pueden variar y Citibank no ofrece realizar ninguna transacción con la tarifa que se muestra.

Mohamed Nur
fuente
3
iGoogle se retiró el 1 de noviembre de 2013. Esta API ya no funciona.
reformado el
-1

Para todos los novatos que buscan alguna pista sobre la conversión de divisas, eche un vistazo a este enlace. Datavoila

Me ayudó mucho con respecto a mi propio proyecto en C #. En caso de que el sitio desaparezca, agregaré el código a continuación. Simplemente agregue los pasos a continuación a su propio proyecto. Perdón por el formato.

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);
Emperador 2052
fuente