注意:本APIで取得した情報を18歳未満に閲覧させてはいけません。
なろうR18小説APIはHTTPでのリクエストに対してJSON形式、JSONP形式、YAML形式またはPHPのserializeで応答します。 実際に小説のデータが修正されてからなろうAPIに反映されるまで平均5分程度(最大2時間)の誤差があります。
APIを使うためにはJavaScriptあるいはPerl/PHP/Ruby/Java/C言語などでプログラミングが必要です。
小説情報の出力要素に感想数、期間別ポイントを表す項目を追加しました。詳細は出力をご覧ください。 また、項目の追加に伴い出力GETパラメータのofで利用可能な値を追加しました。詳細は出力のofパラメータをご覧ください。 小説情報の出力要素およびofパラメータにisr15に関する記述がありましたが、本APIでは出力を行なう仕様は存在しないため削除しました。 小説情報の出力要素に登録必須キーワードの有無を表す項目を追加しました。詳細は出力をご覧ください。 また、項目の追加に伴い出力GETパラメータのofで利用可能な値を追加しました。詳細は出力のofパラメータをご覧ください。 条件抽出GETパラメータで、登録必須キーワードに「異世界転生」「異世界転移」が含まれる小説のみを抽出できるようになりました。 同様に、条件除外GETパラメータで登録必須キーワードに「異世界転生」「異世界転移」が含まれる小説を除外できるようになりました。 ミッドナイトノベルズの公開に伴い、nocgenre,notnocgenreで指定可能な値を追加しました。 Atomフィードの日付にあたる項目に、最終掲載日(general_lastup)ではなく小説の更新日時(novelupdated_at)が出力されている点を修正しました。 最終掲載日の取得を正しく行なう場合はパラメータの追加をお願いします。 |
JSON形式、JSONP形式またはYAML形式、PHPのserialize
標準はYAML形式となっていますが、outパラメータで変更できます。
文字コードはUTF-8です。
https://api.syosetu.com/novel18api/api/
GETで送信。POSTでは受信できません。
日本語などマルチバイト文字送信時は文字コードをUTF-8にし、URLエンコードしてください。
パラメータ | 値 | 説明 | ||||||||||||||||||||||||||
gzip | int(1~5) |
gzip圧縮してgzipファイルとして返します。 gzip圧縮レベルを1~5で指定できます。 転送量上限を減らすためにも推奨 |
||||||||||||||||||||||||||
out | string |
出力形式をyamlまたはjsonまたはphpを指定。 未指定時はYAMLになる。outパラメータの詳細 |
||||||||||||||||||||||||||
of | string | 出力する項目を個別に指定できます。未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。 複数項目を出力する場合は-で区切ってください。詳しくは出力の項目をご覧ください。 | ||||||||||||||||||||||||||
lim | int(1~500) |
最大出力数を指定できます。最低1、最高500です。 半角数字で指定してください。 指定しない場合は20件になります。 |
||||||||||||||||||||||||||
st | int(1~2000) | 表示開始位置の指定です。半角数字で指定してください。 たとえば全部で10作品あるとして、3作品目以降の小説情報を取得したい場合は3と指定してください。 | ||||||||||||||||||||||||||
order | string |
出力順序を指定できます。 指定しない場合は新着更新順となります。
|
出力形式を指定できます。
jsonまたはyamlまたはphpで指定してください。
- yaml:
- YAML形式(デフォルト)
- json:
- JSON形式
- php:
- PHPのserialize()
- atom:
- Atomフィード
- jsonp:
- JSONP形式
JSONPを利用することでJavaScriptから直接、APIを利用できるようになります。
callback
コールバック関数名。コールバック関数名には半角英数字など/^\$?[a-zA-Z0-9\[\]\.\_]+$/ (perl) の正規表現に一致する関数名を指定してください。
JSONPを利用することでJavaScriptから直接、APIを利用できるようになります。
例
https://api.syosetu.com/novel18api/api/?out=jsonp&callback=call
JSONP形式でコールバック関数名をcallにしたい場合のURLです。
出力形式にYAMLを指定した場合、パラメータを指定する事で利用するライブラリを変更できます。
パラメータ | 値 | 説明 |
libtype | int |
利用するライブラリを指定できます。 未指定もしくは1以下の値を指定した場合、従来通りのライブラリを利用します。 2以上の値を指定すると、新ライブラリを利用します。 新ライブラリでは以下の点が従来のライブラリと異なります。 ・文字列と数値の型指定が厳格化します。 ・マルチバイト文字や一部の制御文字がエスケープ処理されます。 |
例1
https://api.syosetu.com/novel18api/api/?libtype=1
従来通りのライブラリで出力を行ないます。
小説名や作者名等、文字列が格納される部分が数値で構成されている場合でも、数値はダブルクォートで囲まれません。
例2
https://api.syosetu.com/novel18api/api/?libtype=2
新ライブラリで出力を行ないます。
小説名や作者名等、文字列が格納される部分が数値で構成されている場合、数値がダブルクォートで囲まれます。
Atomフィードの日付にあたる項目に、最終掲載日(general_lastup)ではなく小説の更新日時(novelupdated_at)が出力されていることが判明しました為、最終掲載日の取得を正しく行なう為のパラメータを追加しました。
お手数をお掛けしますが、日付の出力に最終掲載日を必要とする場合は、追加のパラメータをご利用いただきますようお願いいたします。
パラメータ | 値 | 説明 |
updatetype | int |
日付として出力する項目を指定できます。 2の値を指定すると、最終掲載日(general_lastup)を日付として出力します。 未指定の場合、従来通り小説の更新日時(novelupdated_at)を日付として出力します。 |
例1
https://api.syosetu.com/novel18api/api/?out=atom
従来通り、小説の更新日時(novelupdated_at)を日付として出力します。
例2
https://api.syosetu.com/novel18api/api/?out=atom&updatetype=2
最終掲載日(general_lastup)を日付として出力します。
▽検索単語指定
パラメータ | 値 | 説明 |
word | string | 単語を指定できます。文字コードはUTF-8でURLエンコードしてください。 半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。 |
notword | string | 含みたくない単語を指定できます。文字コードはUTF-8でURLエンコードしてください。 スペースで区切ることにより含ませない単語を増やせます。部分一致で除外されます。 |
▽抽出対象の範囲
パラメータ | 値 | 説明 |
title | int | 1の場合はタイトルをwordとnotwordの抽出対象にします。 |
ex | int | 1の場合はあらすじをwordとnotwordの抽出対象にします。 |
keyword | int | 1の場合はキーワードをwordとnotwordの抽出対象にします。 |
wname | int | 1の場合は作者名をwordとnotwordの抽出対象にします。 |
※上記4項目すべて指定しない場合は全項目抽出対象と扱います。
※wordがNコードと判断される文字列の場合、抽出対象はすべて無視され、Nコードから
小説を探します。
▽掲載サイト指定
パラメータ | 値 | 説明 |
nocgenre | int string |
掲載サイトを指定できます。ハイフン(-)記号で区切れば複数の掲載サイトを一括抽出できます。
|
https://api.syosetu.com/novel18api/api/?nocgenre=1
掲載サイトがノクターンノベルズ(男性向け)となっている小説の小説情報を取得するURLです。
例2
https://api.syosetu.com/novel18api/api/?nocgenre=1-3
掲載サイトがノクターンノベルズ(男性向け)またはムーンライトノベルズ(BL)となっている小説の小説情報を取得するURLです。
▽掲載サイト除外指定
パラメータ | 値 | 説明 |
notnocgenre | int string |
掲載サイトを除外検索できます。ハイフン(-)記号で区切れば含ませたくない掲載サイトを増やせます。
|
https://api.syosetu.com/novel18api/api/?notnocgenre=1
掲載サイトがノクターンノベルズ(男性向け)となっている小説以外の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?notnocgenre=2-3
掲載サイトがムーンライトノベルズ(女性向け、BL)となっている小説以外の小説情報を取得するURLです。
▽XID指定
パラメータ | 値 | 説明 |
xid | int string |
XIDで抽出可能。ハイフン(-)記号で区切ればXIDのOR検索ができます。 |
▽登録必須キーワード指定
パラメータ | 値 | 説明 |
isbl | int | 1を指定した場合、登録必須キーワードに「ボーイズラブ」が含まれている小説のみを抽出します。 |
isgl | int | 1を指定した場合、登録必須キーワードに「ガールズラブ」が含まれている小説のみを抽出します。 |
iszankoku | int | 1を指定した場合、登録必須キーワードに「残酷な描写あり」が含まれている小説のみを抽出します。 |
istensei | int | 1を指定した場合、登録必須キーワードに「異世界転生」が含まれている小説のみを抽出します。 |
istenni | int | 1を指定した場合、登録必須キーワードに「異世界転移」が含まれている小説のみを抽出します。 |
istt | int | 1を指定した場合、登録必須キーワードに「異世界転生」または「異世界転移」が含まれている小説のみを抽出します。 |
▽登録必須キーワード除外指定
パラメータ | 値 | 説明 |
notbl | int | 1を指定した場合、登録必須キーワードに「ボーイズラブ」が含まれている小説を除外し抽出します。 |
notgl | int | 1を指定した場合、登録必須キーワードに「ガールズラブ」が含まれている小説を除外し抽出します。 |
notzankoku | int | 1を指定した場合、登録必須キーワードに「残酷な描写あり」が含まれている小説を除外し抽出します。 |
nottensei | int | 1を指定した場合、登録必須キーワードに「異世界転生」が含まれている小説を除外し抽出します。 |
nottenni | int | 1を指定した場合、登録必須キーワードに「異世界転移」が含まれている小説を除外し抽出します。 |
▽文字数指定
パラメータ | 値 | 説明 |
minlen | int |
抽出する小説の最小文字数を指定できます。 文字数とは小説から一部タグ記号(改ページ等)、ルビ、ルビのふりがな部分、みてみんの画像挿入コード、スペース、改行を抜いた値です。 |
maxlen | int | 抽出する小説の最大文字数。文字数とは小説から一部タグ記号(改ページ等)、ルビ、ルビのふりがな部分、みてみんの画像挿入コード、スペース、改行を抜いた値です。 |
length | int string |
抽出する小説の文字数を指定できます。minlenまたはmaxlenと併用はできません。 文字数とは小説から一部タグ記号(改ページ等)、ルビ、ルビのふりがな部分、みてみんの画像挿入コード、スペース、改行を抜いた値です。 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。 |
https://api.syosetu.com/novel18api/api/?length=10000
文字数が1万文字ちょうどの小説の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?length=2000-3000
文字数が2000文字から3000文字の小説の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?length=10000-
文字数が10000文字以上の小説の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?length=-15000
文字数が15000文字以下の小説の小説情報を取得するURLです。
▽会話率指定
パラメータ | 値 | 説明 |
kaiwaritu | int string |
抽出する小説の会話率を%単位で指定できます。 範囲指定する場合は、最低数と最大数をハイフン(-)記号で区切ってください。 |
https://api.syosetu.com/novel18api/api/?kaiwaritu=10-50
会話率が10%~50%までの作品を抽出します。
https://api.syosetu.com/novel18api/api/?kaiwaritu=0-50
会話率が0%~50%までの作品つまり50%以下の作品を抽出します。
https://api.syosetu.com/novel18api/api/?kaiwaritu=50-
会話率が50%以上の作品を抽出します。
https://api.syosetu.com/novel18api/api/?kaiwaritu=30
会話率が30%ちょうどの作品を抽出します。
▽挿絵数指定
パラメータ | 値 | 説明 |
sasie | int string |
抽出する小説の挿絵の数を指定できます。 範囲指定する場合は、最小数と最大数を-(ハイフン)記号で区切ってください。 |
https://api.syosetu.com/novel18api/api/?sasie=1-
挿絵が存在する、つまり1以上を取得します。
https://api.syosetu.com/novel18api/api/?sasie=1-5
挿絵が1つから5つまでの作品を指定します。
https://api.syosetu.com/novel18api/api/?sasie=3
挿絵が3つの作品を抽出します。
▽読了時間指定
※読了時間は文字数(minlen、maxlen、length)と併用不可
パラメータ | 値 | 説明 |
mintime | int |
抽出する小説の最低読了時間を分単位で指定できます。 読了時間は小説文字数÷500を切り上げした数字です。 |
maxtime | int |
抽出する小説の最大読了時間を分単位で指定できます。 読了時間は小説文字数÷500を切り上げした数字です。 |
time | int string |
抽出する小説の読了時間を指定できます。mintimeまたはmaxtimeと併用はできません。 読了時間は小説文字数÷500を切り上げした数字です。 範囲指定する場合は、最小文字数と最大文字数をハイフン(-)記号で区切ってください。 |
https://api.syosetu.com/novel18api/api/?time=10
読了時間が10分ちょうどの小説の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?time=30-100
読了時間が30分~100分の小説の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?time=10-
読了時間が10分以上の小説の小説情報を取得するURLです。
https://api.syosetu.com/novel18api/api/?time=-10
読了時間が10分以内の小説の小説情報を取得するURLです。
▽Nコード指定
パラメータ | 値 | 説明 |
ncode | string |
Nコードで抽出可能。ハイフン(-)記号で区切ればNコードのOR検索ができます。 開示設定が「検索除外中です」となっている作品は抽出できません。 |
https://api.syosetu.com/novel18api/api/?ncode=n0001a-n1111b-n9999d
N0001A,N1111B,N9999Dを取得するURLです。
▽小説タイプ指定
パラメータ | 値 | 説明 |
type | string |
小説タイプを指定できます。 t:短編 r:連載中 er:完結済連載小説 re:すべての連載小説(連載中および完結済) ter:短編と完結済連載小説 |
▽文体指定
パラメータ | 値 | 説明 |
buntai | int string |
文体を指定できます。ハイフン(-)記号で区切ればOR検索できます。 1:字下げされておらず、連続改行が多い作品 2:字下げされていないが、改行数は平均な作品 4:字下げが適切だが、連続改行が多い作品 6:字下げが適切でかつ改行数も平均な作品 |
本機能は試験提供機能です。マージンを設けてあるため、適切な結果でない場合があります。
例
https://api.syosetu.com/novel18api/api/?buntai=4-6
字下げが適切に行われている作品
▽連載停止中指定
パラメータ | 値 | 説明 |
stop | int |
連載停止中作品に関する指定ができます。 1:長期連載停止中を除きます 2:長期連載停止中のみ取得します |
未完結の連載中小説で最終掲載日から63日以上経過しているものをさします。
検索結果に反映されるまで約15分~2時間の遅れがあります。
https://api.syosetu.com/novel18api/api/?stop=1
長期連載停止中を除外するURLです。
▽最終掲載日指定
パラメータ | 値 | 説明 |
lastup | string |
最終掲載日(general_lastup)で抽出できます。以下の文字列を指定できます。 thisweek:今週(日曜日の午前0時はじまり) lastweek:先週 sevenday:過去7日間(7日前の午前0時はじまり) thismonth:今月 lastmonth:先月 タイムスタンプで指定 開始日と終了日をハイフン(-)記号で区切ることでUNIXタイムスタンプで抽出できます。 UNIXタイムスタンプとは1970年1月1日からの通算秒数のことです。 |
https://api.syosetu.com/novel18api/api/?lastup=thisweek
今週新規投稿または次話投稿された作品の一覧です。
https://api.syosetu.com/novel18api/api/?lastup=1262271600-1264949999
2010年1月1日0時0分0秒から2010年1月31日23時59分59秒までに新規投稿または次話投稿された作品を抽出できます。UNIXタイムスタンプで指定しています。
▽最終更新日指定
パラメータ | 値 | 説明 |
lastupdate | string |
最終更新日(novelupdated_at)で抽出できます。以下の文字列を指定できます。 thisweek:今週(日曜日の午前0時はじまり) lastweek:先週 sevenday:過去7日間(7日前の午前0時はじまり) thismonth:今月 lastmonth:先月 タイムスタンプで指定 開始日と終了日をハイフン(-)記号で区切ることでUNIXタイムスタンプで抽出できます。 UNIXタイムスタンプとは1970年1月1日からの通算秒数のことです。 |
▽ピックアップ指定
パラメータ | 値 | 説明 |
ispickup | int |
ピックアップ条件に当てはまるかの指定ができます。 1:最終掲載日(general_lastup)から60日以内でなおかつ「短編または完結済または10万文字以上の連載中」 0:上記ピックアップ条件を満たさない作品 |
ノクターンノベルズ、ムーンライトノベルズおよびミッドナイトノベルズのピックアップはispickupが1でさらに小説評価が高い順100件です。
ノクターンノベルズ、ムーンライトノベルズおよびミッドナイトノベルズのピックアップと同一結果を取得したい場合はispickupが1であるかを確認し、さらに総合評価で並べ替えその結果を100件取得する必要があります。
https://api.syosetu.com/novel18api/api/?ispickup=1&order=hyoka&lim=100
ノクターンノベルズ、ムーンライトノベルズおよびミッドナイトノベルズで使っている小説ピックアップの情報を取得するURLです。
APIサーバが出力する文字コードはUTF-8です。デフォルトはYAML形式です。
outパラメータでJSON形式などにも変更できます。
最初の要素には全小説出力数が入り、以降、一作品ずつ情報が入っています。
要素 | 説明 |
allcount | 全小説出力数です。 |
title | 小説名 |
ncode | Nコード |
writer | 作者名 |
story | 小説のあらすじ |
nocgenre |
掲載サイト
|
gensaku | 現在未使用項目(常に空文字が返ります) |
keyword | キーワード |
general_firstup |
初回掲載日 YYYY-MM-DD HH:MM:SSの形式 |
general_lastup |
最終掲載日 YYYY-MM-DD HH:MM:SSの形式 |
novel_type | 連載の場合は1、短編の場合は2 |
end | 短編小説と完結済小説は0となっています。連載中は1です。 |
general_all_no | 全掲載部分数です。短編の場合は1です。 |
length | 小説文字数です。スペースや改行は文字数としてカウントしません。 |
time | 読了時間(分単位)です。読了時間は小説文字数÷500を切り上げした数値です。 |
isstop | 長期連載停止中なら1、それ以外は0です。 |
isbl | 登録必須キーワードに「ボーイズラブ」が含まれる場合は1、それ以外は0です。 |
isgl | 登録必須キーワードに「ガールズラブ」が含まれる場合は1、それ以外は0です。 |
iszankoku | 登録必須キーワードに「残酷な描写あり」が含まれる場合は1、それ以外は0です。 |
istensei | 登録必須キーワードに「異世界転生」が含まれる場合は1、それ以外は0です。 |
istenni | 登録必須キーワードに「異世界転移」が含まれる場合は1、それ以外は0です。 |
pc_or_k |
1はケータイのみ、2はPCのみ、3はPCとケータイで投稿された作品です。 対象は投稿と次話投稿時のみで、どの端末で執筆されたかを表すものではありません。 |
global_point | 総合評価ポイント(=(R18ブックマーク数×2)+評価ポイント) |
daily_point |
日間ポイント (ランキング集計時点から過去24時間以内で新たに登録されたブックマークや評価が対象) |
weekly_point |
週間ポイント (ランキング集計時点から過去7日以内で新たに登録されたブックマークや評価が対象) |
monthly_point |
月間ポイント (ランキング集計時点から過去30日以内で新たに登録されたブックマークや評価が対象) |
quarter_point |
四半期ポイント (ランキング集計時点から過去90日以内で新たに登録されたブックマークや評価が対象) |
yearly_point |
年間ポイント (ランキング集計時点から過去365日以内で新たに登録されたブックマークや評価が対象) |
fav_novel_cnt | R18ブックマーク数 |
impression_cnt | 感想数 |
review_cnt | レビュー数 |
all_point | 評価ポイント |
all_hyoka_cnt | 評価者数 |
sasie_cnt | 挿絵の数 |
kaiwaritu | 会話率 |
novelupdated_at | 小説の更新日時 |
updated_at |
最終更新日時 (注意:システム用で小説更新時とは関係ありません) |
▼ofパラメータ
出力する項目を個別に指定できます。未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
複数項目を出力する場合はハイフン(-)記号で区切ってください。
- t:
- title
- n:
- ncode
- w:
- writer
- s:
- story
- ng:
- nocgenre
- k:
- keyword
- gf:
- general_firstup
- gl:
- general_lastup
- nt:
- noveltype
※novel_typeではございません - e:
- end
- ga:
- general_all_no
- l:
- length
- ti:
- time
- i:
- isstop
- ibl:
- isbl
- igl:
- isgl
- izk:
- iszankoku
- its:
- istensei
- iti:
- istenni
- p:
- pc_or_k
- gp:
- global_point
- dp:
- daily_point
- wp:
- weekly_point
- mp:
- monthly_point
- qp:
- quarter_point
- yp:
- yearly_point
- f:
- fav_novel_cnt
- imp:
- impression_cnt
- r:
- review_cnt
- a:
- all_point
- ah:
- all_hyoka_cnt
- sa:
- sasie_cnt
- ka:
- kaiwaritu
- nu:
- novelupdated_at
- ua:
- upda
https://api.syosetu.com/novel18api/api/?of=t-w&ncode=n0001a
N0001Aのタイトルと作者名を取得するURLです。tとnを指定しています。
https://api.syosetu.com/novel18api/api/?of=ga&ncode=n0001a
N0001Aの全掲載部分数を取得するURLです。
※注意:ntを指定した場合、novel_typeではなくnoveltypeと_(アンダーバー)無しで出力される仕様となっております。ご注意下さい。
out=atomを選択された場合のみ、出力制限があります。
タイトルとURL、あらすじ、最終掲載日、コメントの中に作者名のみが出力されています。その他の項目(評価ポイントやキーワードなど)は出力しません。
なろう18小説APIにはさまざまな時刻項目があります。
項目 | 説明 |
general_firstup | 初回掲載日です。最初に小説を掲載した日時となっております。原則として初回掲載日が変わることはありません。 |
general_lastup |
小説最終掲載日です。小説を公開した時点で反映されます。 上のgeneral_firstupと違い連載小説の場合、次話投稿時にも反映されます。ただし編集の場合は反映されません。 |
novelupdated_at |
小説の更新時刻 最後に小説データが更新された時刻です。 |
updated_at | データ更新時刻 最後にデータが更新された時刻です。なろう小説APIの場合、総合評価ポイントが変わった場合なども反映されます。 小説の更新時刻ではありません。 |
利用制限は現在、休止しています。
負荷状況により今後、導入されることがあるためキャッシュの導入など、利用制限を想定したシステム設計をお願いします。ただし、古い情報を誤って掲載しないよう一定期間(長くても2週間)でキャッシュの更新・削除をお願いします。
IPアドレスごとに利用制限を行います。
1日の利用上限は80,000または転送量上限400MByteです。
利用制限は初回アクセスから24時間が適用範囲です。
初回のアクセスから24時間後に回数と転送量を記録していたカウンタと
初回アクセス時刻をリセットします。
なお、1日の利用上限を超えた場合、エラーの発生確率が増します。
混雑状況にもよりますが、リクエスト回数または転送量が利用上限の
120%を超えるとほとんど接続できなくなります。
備考:利用制限カウンタは厳密ではなく多少のマージンを設けてあります。
転送量は圧縮することで減らせます。
転送量制限の回避方法
-
gzip=5を指定し、gzipファイルで受信する。
デメリットとして受け取り側で解凍する手間は発生するが、かなりの転送量を削減できる。 - YAML形式を使う。一番容量が小さいため。
- ofパラメータを使い、必要な項目のみを出力する。
データベースサーバは日本国内の複数拠点に分散されていることがあります。
APIから小説データベースに接続した場合、原則としてスレーブサーバにつながります。
マスタサーバとスレーブサーバ間は10秒以内にデータを同期しています。
しかし、何らかのネットワーク障害が発生した場合、遅延が発生、サーバによって
データにばらつきが生じることがあります。
また、実際に小説のデータが修正されてからなろうAPIに反映されるまで
平均5分程度(最大2時間)の誤差があります。
stopパラメータ、global_point、fav_novel_cnt、review_cnt、all_point、all_hyoka_cnt項目に関してはキャッシュの都合上、さらに15分から2時間の遅れがあります。