1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ニコニコ動画のAPI一覧

Last updated at Posted at 2024-05-10

これは、NicoClientというTypeScript製のニコニコ動画のラッパーを開発する際のメモ書きです。
随時追加していきます。

注意

ここに載っているAPIの大半は公表されていないAPIです。
自己責任で使用して下さい。

ニコニコ動画のサーバーに負担がかからないよう、リクエストは最小限にとどめるなど節度を持った利用をしましょう。
また、UserAgentを適切に指定しましょう。
例: <実装するソフトウェアとかの名前>/<バージョン> <開発者のメール> niconico/<ニコニコのユーザーID>

*が付いたヘッダやパラメーターなどは必須です。
付いていないものは必須では有りませんが、取得できるデータが少なくなったりします。

githubのリンク先でanyとなっているものは筆者が確認できていないデータです。
もしそのデータが確認できた場合は教えてくれたら追記します。

間違っていたら教えて下さい。

nicovideo.jp

多くの場合、以下のような値を指定しないと INVALID_PARAMETER(400) と怒られます。
指定しましょう
Frontend-IdFrontend-Versionは必須です。
他はなくてもいいですが、あったので一応書いておきます。

X-Frontend-Id: 2
X-Frontend-Version: 9.46
X-Niconico-Language: ja-jp
X-Client-Os-Type: others

いくつかのapiでしか確認をしていませんが、以下のようなパラメーターを指定することでも大丈夫なようです。
_frontendId: 2
_frontendVersion: 9.46

多くのサンプルコードの場合X-Frontend-Versionは整数ですが、
後述する nvapi.nicovideo.jp/v1/hello で整数だとINVALID_PARAMETER(400)が返されるので小数点付きの方がよいと思います。
執筆時点(2024/05/09)のWeb版は以下を使用していました。

X-Frontend-Id: 70
X-Frontend-Version: 0

レスポンス

jsonは以下の形式で帰ってきます。
この記事ではmetaは無視してdata以下を記述しています。

{
    "meta": {
        "status": 200,
        "id"?: string,
        "errorCode"?: string,
        "errorMessage"?: string,
    }
    "data": {
        /* ... */
    }
}

Cookie

ニコニコ動画のアカウント認証はuser_sessionという値が使用されます。
二段階認証を設けている場合でもこの値だけです。

Cookie: user_session=user_session_<userid>_<token>

ActionTrackID

ActionTrackIDはコメントなどを取得する際に使用される値です。
リクエストごとにランダムな値を生成する必要があります。
ActionTrackIDは <英数字>_<数字> の値です。
英数字と数字は一文字以上であれば何でもよさそうです。
だた、実際のリクエストでは <英数字10桁_UnixTime> が使われているのでそれを使います。

www.nicovideo.jp

api/watch/v3(_guest)/

動画情報を取得するapiです。
https://www.nicovideo.jp/api/watch/v3/<videoID>(ログイン必須)
https://www.nicovideo.jp/api/watch/v3_guest/<videoID>
Method: GET POST PUT PATCH DELETE
Header:
X-Frontend-Id*
X-Frontend-Version*
Param:
actionTrackId*: actionTrackID
Response: VideoInfo.www.d.ts
media系は飛ばしてるところがありますが、きちんと理解したら追記します。
こちらも参考になるかと ニコ動 動画情報取得API サンプルレスポンス

api/watch/v3/でログインすることで各viewerの値が確認できるようになります。
api/watch/v3_guest/では各viewerの値はnullになります。

nvapi.nicovideo.jp

v1/hello

アプリのアップデートを確認するapiです。
https://nvapi.nicovideo.jp/v1/hello
Method: GET
Header:
X-Frontend-Id*
X-Frontend-Version* - 小数点以下がないとだめ
Param:
osVersion: 15.8.2(exam)
- iOSだとシステムのバージョンだったけど他は確認してない

Response
data: {
    "version": {
    "isUpdateRequired": false,
    // アプリにアップデートが必要かどうか(X-Frontend-Version)が最新かどうか
    "isOSUpdateRequired"?: false,
    // OSにアップデートが必要かどうか(osVersion指定時のみ)
    }
}

account.nicovideo.jp

secure.nicovideo.jpaccountと内容は同じだと思います(パスは違う)。
もし違う点があった場合は随時書きますが、今のところ書く予定はありません。

login/redirector

ニコニコ動画にメール(電話番号?)とパスでログインするapiです。
Cookieで取得できます。
https://account.nicovideo.jp/login/redirector
執筆予定...
(2段階認証のログインも執筆予定)

RestAPIでセッションを取得する方法はなさそうです。

api/public/v2/user.json

アカウントの個人情報とかを取得するapiです。
https://account.nicovideo.jp/api/public/v2/user.json
執筆予定...

Response: AccountInfo.account.d.ts

api/v1/register/account_passport

ゲストアカウントを新規作成するapiです。
https://account.nicovideo.jp/api/v1/register/account_passport

以下が参考になると思います。
Nicoaccount-Signature/register.py
Cryptoとかよくわかってないので、NicoClientには未実装です。
実装するかもですが

snapshot.search.nicovideo.jp

公開されてるAPIです。
サーバーに負荷がかからないようにできるだけこのapiから取得する方が良いでしょう。
詳しくは以下に記載されています。

api/v2/snapshot/video/contents/search

ニコニコ動画のスナップショットから動画を検索するapiです。

api/v2/snapshot/version

スナップショットの最終更新日時を取得するapiです。

nimg.jp

dcdn.cdn.nimg.jp

nicovideo/old-ranking/

ニコニコ動画の過去ランキングを取得するapiです。
詳しくは以下を参照してください。

参考

https://qiita.com/vram/items/0b14bc800ce8fd69b70d
https://zenn.dev/negima1072/articles/nvcomment-api
https://github.com/popo-nyan/Nicoaccount-Signature
https://site.nicovideo.jp/search-api-docs/snapshot

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?