Amazonで売っている駅すぱあとAPIは何ができるのか

「駅すぱあとAPI」は、乗換案内や鉄道時刻表データを取得できるAPIです。
本記事では、Amazonで購入できる「駅すぱあとAPI」でどんな機能が使えるのか解説します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678625/979906a6-4af6-6c11-3b5f-fa05e972d93a.png)
▲Amazonで販売されている駅すぱあとAPIキー

# 駅すぱあとAPIの利用方法

駅すぱあとAPIは、一般的なWeb APIと同様にHTTP通信で利用します。

ブラウザなどから手動で呼び出すこともできますが、通常はプログラム内からHTTP通信で呼び出します。

例えばNode.jsから駅すぱあとAPIを利用する場合、以下のようなコードになります。

```js
const response = await fetch(`https://api.ekispert.jp/v1/json/station/light?key=${process.env.EKISPERT_API_KEY}`);
const data = await res.json();
console.log(data);
```

# 駅すぱあとAPIのプラン

駅すぱあとAPIのプランには主に4種類あります。

- [フリープラン](https://docs.ekispert.com/v1/le/index.html)：申し込みフォームから申請。個人で利用可能だが機能が限定されている。
- [買い切り型](https://docs.ekispert.com/v1/index.html)：AmazonでAPIキーを購入して利用。個人で利用可能だが機能が限定されている。
- [スタンダードプラン](https://docs.ekispert.com/v1/index.html)：企業向け。申し込みフォームから申請。会社名などを入力する必要あり。
- エンタープライズ：企業向けで、スタンダードプランに加えて追加のサポートあり。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678625/0ba529d5-26ee-6254-6401-70be71ecec23.png)
> https://api-info.ekispert.com/plan/

この中で最も手軽に使えるものは、Amazonで購入できる買い切り型のAPIキーかと思います。
値段はほぼ1リクエスト1円で、5000リクエスト/10000リクエスト/20000リクエストのものが用意されています。

> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678625/e94b49e9-d3cb-7248-11ec-7ac8b3f937f7.png)
> [駅すぱあと API for Amazon | 5,000リクエスト](https://amzn.asia/d/0ccTYX4b)

# Amazon版ではどの機能が利用できるのか？

フリープランとスタンダードプランについてはドキュメントがあり、どの機能が利用できるのか確認できます。

- [フリープランの機能一覧](https://docs.ekispert.com/v1/api/)
- [スタンダードプランの機能一覧](https://docs.ekispert.com/v1/le/api/)

一方、Amazon版のプランで具体的にAPIのどの機能が利用できるかについては、Amazonの商品ページの画像2枚目に少し書かれているのみで、詳しい説明についてはドキュメントサイトには記載がないようです。

### 実際にAPIを叩いて確認する

Amazon版のキーを使ってAPIのどのパスを利用できるかについては、実際にAPIを叩いてみるとわかります。
例えば、`/search/course/extereme`というパスにリクエストを送ると、このパスはAmazon版キーでは利用できないので、以下のエラーメッセージが返ってきます。

```
利用できない機能を呼び出しています。アクセスできる機能は、
/address/station,
/corporation,
/coupon/detail,
/coupon/list,
/course/fare/divided,
/course/passStation,
/course/recalculate,
/course/repayment,
/course/teiki/divided,
/dataversion,
/geo/station,
/operationLine,
/plane/timetable,
/railmap/data,
/railmap/detail,
/railmap/list,
/search/course/light,
/search/course/plain,
/search/multipleRange,
/search/range,
/ship/timetable,
/station,
/station/info,
/station/light,
/toolbox/course/point,
/toolbox/geo/convert
です。
```

これを見ると、Amazon版のキーで利用できる機能とできない機能が分かります。

## ✅ Amazon版キーで利用できる機能

以下がAmazon版キーを使用して叩けるAPIの一覧になります。
路線の基礎データに関する情報や、飛行機/船の時刻表、路線図情報などが利用できます。

- 乗換案内
    - [平均待ち時間探索](https://docs.ekispert.com/v1/api/search/course/plain.html) (`/search/course/plain`)
    - [駅すぱあと for web URL生成](https://docs.ekispert.com/v1/le/api/search/course/light.html) (`/search/course/light`)
    - [通過駅情報](https://docs.ekispert.com/v1/api/course/passStation.html) (`/course/passStation`)
    - [地点生成](https://docs.ekispert.com/v1/api/toolbox/course/point.html) (`/toolbox/course/point`)
    - [定期券の払い戻し計算](https://docs.ekispert.com/v1/api/course/repayment.html) (`/course/repayment`)
    - [定期代の分割計算](https://docs.ekispert.com/v1/api/course/teiki/divided.html) (`/course/teiki/divided`)
    - [運賃の分割計算](https://docs.ekispert.com/v1/api/course/fare/divided.html) (`/course/fare/divided`)
    - [探索結果の運賃切り替え](https://docs.ekispert.com/v1/api/course/recalculate.html) (`/course/recalculate`)
- 駅の情報
    - [範囲探索](https://docs.ekispert.com/v1/api/search/multipleRange.html) (`/search/multipleRange`)
    - [範囲探索(旧版)](https://docs.ekispert.com/v1/api/search/range.html) (`/search/range`)
    - [駅情報](https://docs.ekispert.com/v1/api/station.html) (`/station`)
    - [駅簡易情報](https://docs.ekispert.com/v1/api/station/light.html) (`/station/light`)
    - [緯度経度からの周辺駅検索](https://docs.ekispert.com/v1/api/geo/station.html) (`/geo/station`)
    - [住所情報からの周辺駅検索](https://docs.ekispert.com/v1/api/address/station.html) (`/address/station`)
    - [駅付加情報](https://docs.ekispert.com/v1/api/station/info.html) (`/station/info`)
    - [運行路線情報](https://docs.ekispert.com/v1/api/operationLine.html) (`/operationLine`)
    - [会社情報](https://docs.ekispert.com/v1/api/corporation.html) (`/corporation`)
- 時刻表
    - [航空路線時刻表](https://docs.ekispert.com/v1/api/plane/timetable.html) (`/plane/timetable`)
    - [航海路線時刻表](https://docs.ekispert.com/v1/api/ship/timetable.html) (`/ship/timetable`)
- 回数券
    - [回数券一覧](https://docs.ekispert.com/v1/api/coupon/list.html) (`/coupon/list`)
    - [回数券詳細](https://docs.ekispert.com/v1/api/coupon/detail.html) (`/coupon/detail`)
- 路線図
    - [路線図一覧](https://docs.ekispert.com/v1/api/railmap/list.html) (`/railmap/list`)
    - [路線図画像](https://docs.ekispert.com/v1/api/railmap/data.html) (`/railmap/data`)
    - [路線図駅情報](https://docs.ekispert.com/v1/api/railmap/detail.html) (`/railmap/detail`)
- その他
    - [測地系変換](https://docs.ekispert.com/v1/api/toolbox/geo/convert.html) (`/toolbox/geo/convert`)
    - [データバージョン](https://docs.ekispert.com/v1/api/dataversion.html) (`/dataversion`)

「平均待ち時間探索(`/search/course/plain`)」が、いわゆる「経路探索」です。
ただし、この機能を使っても電車の乗車時刻などは取得できず、移動経路のみを取得することができます。
電車の出発時刻を得たい場合は、スタンダードプラン以上を契約した上で`/search/course/extreme`を使う必要があります。

駅の情報については、それぞれのAPIを使って、例えば以下のような情報を取得することができます。

- 駅コード（経路探索のfromとtoに指定する）
- 駅の緯度経度
- 駅からX分以内に行ける駅（`/search/multipleRange`）
- 緯度経度を指定して周辺の駅を検索する（`/geo/station`）
- 駅名のインクリメンタルサーチ（`/station/light`）


## ❌ Amazon版キーで利用できない機能（スタンダードプラン以上で利用できる機能）

一方、Amazonキーでは利用できない機能もあります。
鉄道時刻表を使用する情報や、運行情報を取得する機能についてはAmazonキーでは利用できません。
これらの機能を利用するには、専用フォームからスタンダードプランを申し込む必要があります。

- 乗換案内
    - [経路探索](https://docs.ekispert.com/v1/api/search/course/extreme.html) (`/search/course/extreme`)
    - [前後のダイヤ探索](https://docs.ekispert.com/v1/api/search/course/pattern.html) (`/search/course/pattern`)
    - [経路簡易探索](https://docs.ekispert.com/v1/api/search/course.html) (`/search/course`)
    - [平均待ち時間バスのみ探索](https://docs.ekispert.com/v1/api/search/course/bus.html) (`/search/course/bus`)
    - [探索条件生成](https://docs.ekispert.com/v1/api/toolbox/course/condition.html) (`/toolbox/course/condition`)
    - [経路情報の更新判定](https://docs.ekispert.com/v1/api/toolbox/course/update.html) (`/toolbox/course/update`)
    - [経路の再現／定期券・指定列車利用](https://docs.ekispert.com/v1/api/course/edit.html) (`/course/edit`)
    - [経路の生成](https://docs.ekispert.com/v1/api/course/create.html) (`/course/create`)
    - [経路探索結果のシェイプ情報](https://docs.ekispert.com/v1/api/course/shape.html) (`/course/shape`)
- 駅の情報
    - [区間の駅情報](https://docs.ekispert.com/v1/api/course/station.html) (`/course/station`)
    - [列車等の停車駅情報](https://docs.ekispert.com/v1/api/course/trainStation.html) (`/course/trainStation`)
    - [平均路線情報](https://docs.ekispert.com/v1/api/rail.html) (`/rail`)
- 時刻表
    - [鉄道駅時刻表](https://docs.ekispert.com/v1/api/operationLine/timetable.html) (`/operationLine/timetable`)
    - [鉄道駅時刻表(旧版)](https://docs.ekispert.com/v1/api/station/timetable.html) (`/station/timetable`)
    - [鉄道駅時刻表の列車情報](https://docs.ekispert.com/v1/api/station/timetable/train.html) (`/station/timetable/train`)
    - [区間時刻表](https://docs.ekispert.com/v1/api/course/timetable.html) (`/course/timetable`)
    - [区間時刻表の列車情報](https://docs.ekispert.com/v1/api/course/timetable/train.html) (`/course/timetable/train`)
    - [バス路線時刻表](https://docs.ekispert.com/v1/api/bus/timetable.html) (`/bus/timetable`)
    - [特急列車時刻表](https://docs.ekispert.com/v1/api/train/timetable.html) (`/train/timetable`)
- 運行情報
    - [鉄道運行情報（レスキューナウ）](https://docs.ekispert.com/v1/api/operationLine/service/rescuenow/information.html) (`/operationLine/service/rescuenow/information`)
    - [鉄道運行情報（レスキューナウ）(旧版)](https://docs.ekispert.com/v1/api/rail/service/rescuenow/information.html) (`/rail/service/rescuenow/information`)
    - [鉄道運行情報路線リスト(旧版)](https://docs.ekispert.com/v1/api/rail/service/list.html) (`/rail/service/list`)

スタンダードプランの機能を使うと、鉄道の時刻情報を利用した乗換案内や、最新の運行情報を取得することができるため、
一般的な乗換案内アプリのような本格的なシステムを実装することができます。

# まとめ

本記事では、Amazon版のAPIキーで利用できる駅すぱあとAPIの機能について紹介しました。

Amazon版のキーでも公共交通に関する基本的な情報は取得することができるため、開発者の皆様はこれを使ってぜひ面白いアプリを作ってみてください！

- [駅すぱあと API for Amazon | 5,000リクエスト](https://amzn.asia/d/0ccTYX4b)
- [駅すぱあと API for Amazon | 10,000リクエスト](https://amzn.asia/d/7OqyOaA)
- [駅すぱあと API for Amazon | 20,000リクエスト](https://amzn.asia/d/iOKJuLr)