なろうユーザ検索APIでは小説家になろうに登録されたユーザの情報を取得できます。
このAPIでは非公開情報の取得は行なえません。
なろうAPIはHTTPでのリクエストに対してJSON形式、JSONP形式又はYAML形式、PHPのserializeで応答します。
実際にユーザ情報が更新されてからなろうユーザ検索APIに反映されるまで平均5分程度(最大2時間)の誤差があります。
出力形式
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ファイルとして返します。 |
out | string |
出力形式をyamlまたはjsonまたはphpを指定。 |
of | string |
出力する項目を個別に指定できます。未指定時は全項目出力されます。 |
lim | int(1~500) |
最大出力数を指定できます。最低1、最高500です。 |
st | int(1~2000) |
表示開始位置の指定です。半角数字で指定してください。 |
order | string |
出力順序を指定できます。
|
outパラメータの詳細
出力形式を指定できます。
以下の形式から指定してください。
-
yamlYAML形式(デフォルト)
-
jsonJSON形式
-
jsonpJSONP形式
-
phpPHPの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 |
利用するライブラリを指定できます。
|
https://api.syosetu.com/userapi/api/?libtype=1
従来通りのライブラリで出力を行ないます。
ユーザ名やユーザ名のフリガナ等、文字列が格納される部分が数値で構成されている場合でも、数値はダブルクォートで囲まれません。
https://api.syosetu.com/userapi/api/?libtype=2
新ライブラリで出力を行ないます。
ユーザ名やユーザ名のフリガナ等、文字列が格納される部分が数値で構成されている場合、数値がダブルクォートで囲まれます。
条件抽出GETパラメータ
検索単語指定
パラメータ | 値 | 説明 |
---|---|---|
word | string |
単語を指定できます。文字コードはUTF-8でURLエンコードしてください。 |
notword | string |
含みたくない単語を指定できます。文字コードはUTF-8でURLエンコードしてください。 |
ユーザID指定
パラメータ | 値 | 説明 |
---|---|---|
userid | int |
ユーザIDで抽出可能。 |
頭文字指定
パラメータ | 値 | 説明 |
---|---|---|
name1st | string |
抽出するユーザのユーザ名のフリガナの頭文字を指定できます。 |
作品投稿数指定
パラメータ | 値 | 説明 |
---|---|---|
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 |
全ユーザ情報出力数です。 |
userid | int |
ユーザID |
name | string |
ユーザ名 |
yomikata | string |
ユーザ名のフリガナ |
name1st | string |
ユーザ名のフリガナの頭文字 |
novel_cnt | int |
作品投稿数 |
review_cnt | int |
レビュー投稿数 |
novel_length | int |
作品累計文字数 |
sum_global_point | int |
総合評価ポイントの合計 |
ofパラメータ
出力する項目を個別に指定できます。未指定時は全項目出力されます。転送量軽減のため、このパラメータの使用が推奨されます。
複数項目を出力する場合はハイフン(-)記号で区切ってください。
-
uuserid
-
nname
-
yyomikata
-
1name1st
-
ncnovel_cnt
-
rcreview_cnt
-
nlnovel_length
-
sgsum_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