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

なろうユーザ検索API

なろうユーザ検索APIでは小説家になろうに登録されたユーザの情報を取得できます。
注意:このAPIでは非公開情報の取得は行なえません。

なろうAPIはHTTPでのリクエストに対してJSON形式、JSONP形式又はYAML形式、PHPのserializeで応答します。
実際にユーザ情報が更新されてからなろうユーザ検索APIに反映されるまで平均5分程度(最大2時間)の誤差があります。

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

・出力形式

JSON形式、JSONP形式またはYAML形式、PHPのserialize
標準はYAML形式となっていますが、outパラメータで変更できます。
文字コードはUTF-8です。

・APIのURL

https://api.syosetu.com/userapi/api/

GETで送信。POSTでは受信できません。
日本語などマルチバイト文字送信時は文字コードをUTF-8にし、URLエンコードしてください。

・出力GETパラメータ


パラメータ 説明
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 出力順序を指定できます。
指定しない場合はユーザIDの新しい順となります。

new ユーザIDの新しい順
novelcnt 小説投稿数の多い順
reviewcnt レビュー投稿数の多い順
novellength 小説累計文字数の多い順
sumglobalpoint 総合評価ポイントの合計の多い順
old ユーザIDの古い順


・outパラメータの詳細

出力形式を指定できます。
以下の形式から指定してください。

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

JSONPの使い方
JSONPを利用することでJavaScriptから直接、APIを利用できるようになります。

callback
コールバック関数名。コールバック関数名には半角英数時など/^\$?[a-zA-Z0-9\[\]\.\_]+$/ (perl) の正規表現に一致する関数名を指定してください。


https://api.syosetu.com/userapi/api/?out=jsonp&callback=call
JSONP形式でコールバック関数名をcallにしたい場合のURLです。

YAML形式の出力に関する動作について
出力形式にYAMLを指定した場合、パラメータを指定する事で利用するライブラリを変更できます。
パラメータ 説明
libtype int 利用するライブラリを指定できます。
未指定もしくは1以下の値を指定した場合、従来通りのライブラリを利用します。
2以上の値を指定すると、新ライブラリを利用します。

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

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

例2
https://api.syosetu.com/userapi/api/?libtype=2
新ライブラリで出力を行ないます。
ユーザ名やユーザ名のフリガナ等、文字列が格納される部分が数値で構成されている場合、数値がダブルクォートで囲まれます。

・条件抽出GETパラメータ


    ▽検索単語指定
パラメータ 説明
word string 単語を指定できます。文字コードはUTF-8でURLエンコードしてください。
半角または全角スペースで区切るとAND抽出になります。部分一致でHITします。
検索の対象はユーザ名とユーザ名のフリガナです。
notword string 含みたくない単語を指定できます。文字コードはUTF-8でURLエンコードしてください。
スペースで区切ることにより含ませない単語を増やせます。部分一致で除外されます。
除外の対象はユーザ名とユーザ名のフリガナです。


    ▽ユーザID指定
パラメータ 説明
userid int ユーザIDで抽出可能。


    ▽頭文字指定
パラメータ 説明
name1st string 抽出するユーザのユーザ名のフリガナの頭文字を指定できます。
頭文字はユーザ名のフリガナをひらがなに変換し、最初の1文字が「ぁ」~「ん」の場合に対象となります。
「ぱ」や「ば」等の半濁音や濁音は清音として扱われます。
漢字や英数字が頭文字のユーザは対象外です。


    ▽小説投稿数指定
パラメータ 説明
minnovel int 抽出するユーザの最低小説投稿数を指定できます。
maxnovel int 抽出するユーザの最高小説投稿数を指定できます。


https://api.syosetu.com/userapi/api/?minnovel=10
小説投稿数が10作品以上のユーザ情報を取得するURLです。

https://api.syosetu.com/userapi/api/?maxnovel=100
小説投稿数が100作品以下のユーザ情報を取得するURLです。

https://api.syosetu.com/userapi/api/?minnovel=5&maxnovel=30
小説投稿数が5作品以上30作品以下のユーザ情報を取得するURLです。



    ▽レビュー投稿数指定
パラメータ 説明
minreview int 抽出するユーザの最低レビュー投稿数を指定できます。
maxreview int 抽出するユーザの最高レビュー投稿数を指定できます。


https://api.syosetu.com/userapi/api/?minreview=50
レビュー投稿数が50件以上のユーザ情報を取得するURLです。

https://api.syosetu.com/userapi/api/?maxreview=100
レビュー投稿数が100件以下のユーザ情報を取得するURLです。

https://api.syosetu.com/userapi/api/?minreview=100&maxreview=500
レビュー投稿数が100件以上500件以下のユーザ情報を取得するURLです。



・出力

APIサーバが出力する文字コードはUTF-8です。デフォルトはYAML形式です。
outパラメータでJSON形式などにも変更できます。
最初の要素には全ユーザ情報出力数が入り、以降、一ユーザずつ情報が入っています。

要素 説明
allcount int 全ユーザ情報出力数です。
(注:登録ユーザ数の増加に伴い、APIへの反映遅れが生じる場合があります)
userid int ユーザID
name string ユーザ名
yomikata string ユーザ名のフリガナ
name1st string ユーザ名のフリガナの頭文字
ひらがな以外の場合はnullまたは空文字となります。
novel_cnt int 小説投稿数
review_cnt int レビュー投稿数
novel_length int 小説累計文字数
スペースや改行は文字数としてカウントしません。
sum_global_point int 総合評価ポイントの合計
投稿済小説でそれぞれ獲得した総合評価ポイントの合計です。

▼ofパラメータ
出力する項目を個別に指定できます。未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。 複数項目を出力する場合はハイフン(-)記号で区切ってください。

u:
userid
n:
name
y:
yomikata
1:
name1st
nc:
novel_cnt
rc:
review_cnt
nl:
novel_length
sg:
sum_global_point


https://api.syosetu.com/userapi/api/?of=u-n&order=sumglobalpoint
ユーザIDとユーザ名を総合評価ポイントの合計の多い順で取得するURLです。
uとnを指定しています。


・利用制限

利用制限は現在、休止しています。
負荷状況により今後、導入されることがあるためキャッシュの導入など、利用制限を想定したシステム設計をお願いします。ただし、古い情報を誤って掲載しないよう一定期間(長くても2週間)でキャッシュの更新・削除をお願いします。


IPアドレスごとに利用制限を行ないます。
1日の利用上限は80,000または転送量上限400MByteです。
利用制限は初回アクセスから24時間が適用範囲です。
初回のアクセスから24時間後に回数と転送量を記録していたカウンタと
初回アクセス時刻をリセットします。
なお、1日の利用上限を超えた場合、エラーの発生確率が増します。
混雑状況にもよりますが、リクエスト回数または転送量が利用上限の
120%を超えるとほとんど接続できなくなります。

備考:利用制限カウンタは厳密ではなく多少のマージンを設けてあります。
転送量は圧縮することで減らせます。

転送量制限の回避方法

  • gzip=5を指定し、gzipファイルで受信する。
    デメリットとして受け取り側で解凍する手間は発生するが、かなりの転送量を削減できる。
  • YAML形式を使う。一番容量が小さいため。
  • ofパラメータを使い、必要な項目のみを出力する。


・遅延について

データベースサーバは日本国内の複数拠点に分散されていることがあります。
APIから小説データベースに接続した場合、原則としてスレーブサーバにつながります。
マスタサーバとスレーブサーバ間は10秒以内にデータを同期しています。

しかし、何らかのネットワーク障害が発生した場合、遅延が発生、サーバによって
データにばらつきが生じることがあります。
また、実際にユーザ情報が更新されてからなろうユーザ検索APIに反映されるまで
平均5分程度(最大2時間)の誤差があります。

以下の項目に関してはキャッシュの都合上、最大24時間程度の遅れがあります。

  • novel_cnt
  • review_cnt
  • novel_length
  • sum_global_point


企画&運営
HinaProject Inc.