無料でCORS対応してるのが意外と無かったので色々試してみた。
❌OANDA
- APIキー必要(デモ口座開設=無料)
- Qiitaで為替APIで検索したらよく出てくるやつ
- なんかcurl一発みたいなサンプルがググって10秒で出てこなくて面倒になってきてやめた
❌http://api.aoikujira.com/kawase/json/usd
- 登録不要
- CORS非対応
❌https://www.gaitameonline.com/rateaj/getrate
- 登録不要
- CORS非対応
❌http://data.fixer.io/api/latest?access_key=XXX&symbols=USD,JPY
- APIキー必要(無料プランあり)
- CORS対応OK
- 無料プランだと https 非対応!
❌https://api.exchangeratesapi.io/latest
-
登録不要→2020年08月時点では誰でも使えたが2021年4月現在ではいつの間にかAPIキーが必要 - CORS対応OK
-
https対応OK→ 無料プランでは https 利用不可 - API提供元の組織は欧州中央銀行(ECB)。正確性/安定性/継続性など色んな意味で理想的。今後も安心して使えそう
こいつが欲しかった! → オワタ(ノД`)シクシク
await fetch("https://api.exchangeratesapi.io/latest", {mode:"cors"}).then(r=>r.json())
2021年4月現在は以下のレスポンスが返ってきており登録が必要な模様
{
"success": false,
"error": {
"code": 101,
"type": "missing_access_key",
"info": "You have not supplied an API Access Key. [Required format: access_key=YOUR_ACCESS_KEY]"
}
}
一応試しに登録してみたがFreeプランだと以下が返ってくる。駄目だコレ…。
{
"error": {
"code": "https_access_restricted",
"message": "Access Restricted - Your current Subscription Plan does not support HTTPS Encryption."
}
}
❌️ https://forex-api.coin.z.com/public/v1/ticker
GMOコイン、最新が取れるだけで過去分は取れない、CORS非対応
await fetch("https://forex-api.coin.z.com/public/v1/ticker", {mode:"cors"})
// CORSエラー
✅️ https://api.frankfurter.dev/v1/latest
データソースは European Central Bank。
- latest を YYYY-MM-DD にすると日付指定で取れる。
- 未来日付を指定してもエラーにならず latest として扱われるようだ。実際にどの日付のデータなのかはパラメータではなくレスポンスの date を見るべき。
- YYYY-MM-DD..YYYY-MM-DD にすると日付範囲で全部取れる。1900-2099年分とか指定しても大丈夫みたいで便利すぎる。startは1999-01-04のようだ。
- CORSもOK、最強では。
- ちなみに土日データは無い。
❌️ https://query1.finance.yahoo.com/v8/finance/chart/USDJPY=X?interval=1d
- Yahoo Finance