なろうユーザ検索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以上の値を指定すると、新ライブラリを利用します。
新ライブラリでは以下の点が従来のライブラリと異なります。

  • 文字列と数値の型指定が厳格化します。
  • マルチバイト文字や一部の制御文字がエスケープ処理されます。

https://api.syosetu.com/userapi/api/?libtype=1

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

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です。
unを指定しています。

利用制限

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