TOP / 技術マニュアル / 利用実績 / 商標ガイドライン

なろう小説ランキングAPI

なろう小説ランキングAPIでは「小説を読もう!で公開しているランキング」を取得できます。取得できるランキングは2013年5月1日以降の日間、週間、月間、四半期ランキングです。
注意:現在、18禁ランキングを取得するAPIは提供しておりません。

なろう小説ランキングAPIはHTTPでのリクエストに対してJSON形式、JSONP形式又はYAML形式で応答します。 すべてのランキング結果を抽出できるわけではありません。

APIを使うためにはJavaScriptあるいはPerl/PHP/Ruby/Java/C言語などでプログラミングが必要です。

・出力形式

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ファイルとして返します。
gzip圧縮レベルを1~5で指定できます。
転送量上限を減らすためにも推奨
out string 出力形式をyamlまたはjsonまたはphpを指定。
未指定時はYAMLになる。outパラメータの詳細
rtype string ランキングタイプです。蓄積されているランキングを取得できます。
ランキングタイプの形式は日付-種類の形式です。20130501-mのように日付と種類の間に-(ハイフン)をはさみます。
日付は20130501のように西暦(4桁)、月(2桁)、日(2桁)で入力します。 種類には日間の場合はd,週間の場合はw,月間の場合はmが、四半期の場合はqが入ります。


+制約+
・2013年5月1日以降の日付を指定してください。
・週間を取得する場合、日付は火曜日の日付を指定してください。
・月間、四半期を取得する場合、日付は1日を指定してください。
詳しくは制約についてをご覧ください。

https://api.syosetu.com/rank/rankget/?rtype=20130501-m
2013年5月1日の月間ランキングを取得するURLです。

例2
https://api.syosetu.com/rank/rankget/?rtype=20130502-d
2013年5月2日の日間ランキングを取得するURLです。

例3
https://api.syosetu.com/rank/rankget/?rtype=20140401-q
2014年4月1日の四半期ランキングを取得するURLです。

例4
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で指定してください。

yaml:
YAML形式(デフォルト)
json:
JSON形式
php:
PHPのserialize()

jsonp:
JSONP形式

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 利用するライブラリを指定できます。
未指定もしくは1以下の値を指定した場合、従来通りのライブラリを利用します。
2以上の値を指定すると、新ライブラリを利用します。

新ライブラリでは以下の点が従来のライブラリと異なります。
・文字列と数値の型指定が厳格化します。
・マルチバイト文字や一部の制御文字がエスケープ処理されます。

例1
https://api.syosetu.com/novelapi/api/?libtype=1
従来通りのライブラリで出力を行ないます。
小説名や作者名等、文字列が格納される部分が数値で構成されている場合でも、数値はダブルクォートで囲まれません。

例2
https://api.syosetu.com/novelapi/api/?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に反映されるまで遅れがあります。


企画&運営
HinaProject Inc.