なろう小説ランキングAPIでは「小説を読もう!で公開しているランキング」を取得できます。取得できるランキングは2013年5月1日以降の日間、週間、月間、四半期ランキングです。
現在、R18ランキングを取得するAPIは提供しておりません。
なろう小説ランキングAPIはHTTPでのリクエストに対してJSON形式、JSONP形式又はYAML形式で応答します。
すべてのランキング結果を抽出できるわけではありません。
出力形式
JSON形式、JSONP形式またはYAML形式となっています。
標準はYAML形式となっていますが、outパラメータで変更できます。
文字コードはUTF-8です。
APIのURL
https://api.syosetu.com/rank/rankget/
GETで送信。POSTでは受信できません。
rtypeは必須です。指定しない場合Error: Invalid date.になります。
GETパラメータ
パラメータ | 値 | 説明 |
---|---|---|
gzip | int(1~5) |
gzip圧縮してgzipファイルとして返します。 |
out | string |
出力形式をyamlまたはjsonまたはphpを指定。 |
rtype | string |
ランキングタイプです。蓄積されているランキングを取得できます。
|
https://api.syosetu.com/rank/rankget/?rtype=20130501-m
2013年5月1日の月間ランキングを取得するURLです。
https://api.syosetu.com/rank/rankget/?rtype=20130502-d
2013年5月2日の日間ランキングを取得するURLです。
https://api.syosetu.com/rank/rankget/?rtype=20140401-q
2014年4月1日の四半期ランキングを取得するURLです。
https://api.syosetu.com/rank/rankget/?rtype=20140408-w
2014年4月8日(火曜日)の週間ランキングを取得するURLです。
https://api.syosetu.com/rank/rankget/?rtype=20140501-w
【×指定できません】
週間は火曜日分以外提供していないため、2014年5月1日(木曜日)を指定するURLはエラーになります。
https://api.syosetu.com/rank/rankget/?rtype=20140402-m
【×指定できません】
月間は毎月1日分以外提供していないため、4月2日を指定するURLはエラーになります。
https://api.syosetu.com/rank/rankget/?rtype=20140403-q
【×指定できません】
四半期は毎月1日分以外提供していないため、4月3日を指定するURLはエラーになります。
outパラメータの詳細
出力形式を指定できます。
jsonまたはyamlまたはphpで指定してください。
-
yamlYAML形式(デフォルト)
-
jsonJSON形式
-
phpPHPのserialize()
-
jsonpJSONP形式
JSONPの使い方
JSONPを利用することでJavaScriptから直接、APIを利用できるようになります。
-
callbackコールバック関数名。コールバック関数名には半角英数字など/^$?[a-zA-Z0-9\[\]\.\_]+$/ (perl) の正規表現に一致する関数名を指定してください。
https://api.syosetu.com/rank/rankget/?out=jsonp&callback=call&rtype=20130501-m
JSONP形式でコールバック関数名をcallにしたい場合のURLです。2013年5月1日の月間ランキングを取得します。
YAML形式の出力に関する動作について
出力形式にYAMLを指定した場合、パラメータを指定する事で利用するライブラリを変更できます。
パラメータ | 値 | 説明 |
---|---|---|
libtype | int |
利用するライブラリを指定できます。
|
https://api.syosetu.com/rank/rankget/?rtype=20130501-m&libtype=1
従来通りのライブラリで出力を行ないます。
文字列が格納される部分が数値で構成されている場合でも、数値はダブルクォートで囲まれません。
https://api.syosetu.com/rank/rankget/?rtype=20130501-m&libtype=2
新ライブラリで出力を行ないます。
文字列が格納される部分が数値で構成されている場合、数値がダブルクォートで囲まれます。
出力
APIサーバが出力する文字コードはUTF-8です。デフォルトはYAML形式です。
outパラメータでJSON形式などにも変更できます。
要素 | 説明 |
---|---|
ncode |
Nコード |
pt |
ポイント |
rank |
順位1~300 |
Nコードから作品情報の取得
なろう小説APIを利用することでNコードから作品情報を取得できます。
https://api.syosetu.com/novelapi/api/?ncode=n0001a-n1111b-n9999d
N0001A,N1111B,N9999Dを取得するなろう小説APIのURLです。
制約について
このAPIで出力するランキングのデータは2013年5月1日以降の「小説を読もう!で公開しているランキング」を蓄積(バックアップ)したものですが、すべてのランキングの蓄積/提供はサーバリソースの制約上、不可能です。週間は毎週火曜日のみ、月間、四半期は毎月1日のランキングを蓄積しAPIで提供しています。
そのため、週間の場合は火曜日以外の日付を指定するとDATE ERROR[2]が、月間と四半期の場合は1日以外を指定するとDATE ERROR[1]がエラーとして表示されます。
また、「小説を読もう!で公開しているランキング」の日間ランキングは1日3回更新されていますが、このAPIでは午前4時~午前7時に作成した日間ランキングのみを蓄積しAPIで提供しています。
予めご了承願います。
利用制限
負荷状況により今後、導入されることがあるためキャッシュの導入など、利用制限を想定したシステム設計をお願いします。ただし、古い情報を誤って掲載しないよう一定期間(長くても2週間)でキャッシュの更新・削除をお願いします。
IPアドレスごとに利用制限を行います。
1日の利用上限は80,000または転送量上限400MByteです。
利用制限は初回アクセスから24時間が適用範囲です。
初回のアクセスから24時間後に回数と転送量を記録していたカウンタと初回アクセス時刻をリセットします。
なお、1日の利用上限を超えた場合、エラーの発生確率が増します。
混雑状況にもよりますが、リクエスト回数または転送量が利用上限の120%を超えるとほとんど接続できなくなります。
備考:利用制限カウンタは厳密ではなく多少のマージンを設けてあります。
転送量は圧縮することで減らせます。
- gzip=5を指定し、gzipファイルで受信する。
デメリットとして受け取り側で解凍する手間は発生するが、かなりの転送量を削減できる。 - YAML形式を使う。一番容量が小さいため。
遅延について
データベースサーバは日本国内の複数拠点に分散されていることがあります。
APIから小説データベースに接続した場合、原則としてスレーブサーバにつながります。
マスタサーバとスレーブサーバ間は10秒以内にデータを同期しています。
しかし、何らかのネットワーク障害が発生した場合、遅延が発生し、サーバによってデータにばらつきが生じることがあります。
また、実際にランキングのデータが修正されてからAPIに反映されるまで遅れがあります。