追記 2019年4月22日
2019年6月3日から動画と生放送以外は廃止されるのに言及。
niconico で使われていた新検索βを js や PHP などから使う方法は2015年11月に非推奨になり、新しく V2 として公開された。今回の V2 の特徴はタグレポと同じようにブラウザから直接検索して json が返ってくるので誰でも手軽に利用できる。
新しいAPI:niconico コンテンツ検索APIガイド(2019年6月3日に動画と生放送以外は廃止)
新しいAPI:コンテンツ検索APIドキュメント(ドキュメント削除を確認 2017年3月17日)
従来のAPI:Mashup Awards 11向け提供APIガイド(ドキュメント削除を確認 2017年3月17日)
新しいスナップショットAPI:ニコニコ動画 『スナップショット検索API v2』 ガイド
従来のスナップショットAPI:ニコニコ動画 『スナップショット検索API』 ガイド(ドキュメント削除を確認 2017年3月18日)
タグレポの記事はこちら:新機能「タグレポ」について
今回の大きな特徴はブラウザからでも手軽に調べられるのと、従来のAPIでは一度に取得できるデータが100でそれが 3 4分割されていたのが分割されなくなったので従来よりも高速に処理できるが、取得上限が 1600 1700(offset が1600なのでそこから+100) なのは変わらないので期間を区切るなど取得方法を工夫する必要がある。アクセス制限については 0.5秒間隔なら現状上手くいっている。2016年1月17日くらいから0.5秒間隔だと途中で取得できなくなり0.6秒間隔で上手くいっている。現在(2016年6月以降)は 0.6 秒でも 0.9 秒でも止まることがあるので待ち時間の設定は 0.5 秒で止まればリトライするようにしている。
対応サービスは以前と同じように、動画、生放送、静画(イラスト)、静画(マンガ)、静画(書籍)、チャンネル、ブロマガ記事(著名人)、ニュース、ゲーム、権利楽曲、動画マイリスト、まとめ、コミュニティである。その後、2017年5月19日にゲームと権利楽曲、2017年8月13日に動画マイリストも検索できるようになった。
クエリパラメータも以前と同じで、検索キーワード、調べる方法(タイトル、説明文、タグ)、調べる内容、フィルタ、ソート方法、オフセットの指定、取得数の指定、アプリケーション名が指定できる。
必須クエリパラメータは q(クエリ), targets(検索方法), _sort(順番), _context(アプリ名) である。
サービス別の fields の設定可能・不可能のグラフ
ドキュメントでは fields の設定を省略できると書いてあるがどのサービスも省略できない。
追記 2017年8月22日、fields の省略について確かに省略は出来るが省略すると status, totalCount, id だけ返ってくる。この記事を書いた当時の記憶が曖昧なので省略したときにエラーが出たのかそれとも今と同じ仕様だったのか覚えていない。
まとめは2019年5月22日に終了する。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |
contentId | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
title | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
description | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
tags | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
categoryTags | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
viewCounter | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
mylistCounter | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
commentCounter | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
startTime | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
thumbnailUrl | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
communityIcon | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
scoreTimeshiftReserved | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
liveStatus | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
しかしドキュメントと読むと動画と生放送以外を調べるのに必要な説明が全く足りていないのでそれぞれのサンプルコマンドは以下のようにする。
limit は 0 にしても totalCount が返ってくるので総数を調べる場合に便利。
startTime について、2014-01-01T00:00:00+09:00 形式で POST する必要があったが、+09:00 部分はなくても良かった。それが 2016年9月12日の営業時間帯頃から仕様が変わって、それが必須項目になり + をエンコードして %2d にして 2014-01-01T00:00:00%2d00:00 形式で POST すると今まで通りの時間で応答がある。そして、時間指定がおかしかったのが 9月27日 までに直った。2014-01-01T00:00:00%2d09:00 形式で指定する。
生放送の liveStatus について、past は放送終了状態。onair は getplayerstatus の start_time 以降状態。reserved は予約枠で放送開始前から getplayerstatus の open_time 以降を含み、start_time 前(開場の状態から本編が始まる前)までの状態。
動画
https://api.search.nicovideo.jp/api/v2/video/contents/search?q=初音ミク&targets=title&fields=contentId,title,description,tags,categoryTags,viewCounter,mylistCounter,commentCounter,startTime,thumbnailUrl&filters[viewCounter][gte]=1000000&_sort=-viewCounter&_offset=0&_limit=100&_context=apiguide
静画(書籍)、2017年10月4日に使えなくなった
https://api.search.nicovideo.jp/api/v2/book/contents/search?q=の&targets=title&fields=contentId,title,description,tags,viewCounter,mylistCounter,commentCounter,startTime,thumbnailUrl&_sort=viewCounter&_context=apiguide
ニュース(description,commentCounter が取得できなくなってた。2019年5月3日確認)
https://api.search.nicovideo.jp/api/v2/news/contents/search?q=%E3%83%8E%E3%83%BC%E3%83%99%E3%83%AB%E8%B3%9E&targets=title&fields=contentId,title,tags,startTime&_sort=startTime&_context=apiguide
https://api.search.nicovideo.jp/api/v2/game/contents/search?q=アドベンチャー&targets=title&_context=apiguide&_sort=-startTime&fields=contentId,title,description,tags,startTime
権利楽曲
https://api.search.nicovideo.jp/api/v2/license_search/contents/search?q=孤独のグルメ&targets=title&_context=apiguide&_sort=-startTime&fields=contentId,title
動画マイリスト
https://api.search.nicovideo.jp/api/v2/mylist_video/contents/search?q=初音ミク&targets=title&_context=apiguide&_sort=-startTime&fields=contentId,title,description,startTime
まとめ(2019年5月22日廃止予定)
https://api.search.nicovideo.jp/api/v2/summary/contents/search?q=RTA&fields=contentId,title,description,tags,startTime,thumbnailUrl&_sort=startTime&targets=title,tags&filters&_context=apiguide
ニコニコミュニティ(データが入るのは2018年7月中の予定->2018年6月26日入ってた->2018年6月27日まだ全部入ってなかった)
https://api.search.nicovideo.jp/api/v2/community/contents/search?q=RTA&targets=title,tags&fields=contentId,title,description,tags,startTime,thumbnailUrl&_sort=startTime&_context=apiguide
追記 2018年6月23日
「2018/03/05 検索対象のサービス に summary と community を追加」より、まとめとニコニコミュニティを追加した。
追記 2017年11月14日
「2017/10/04 検索対象のサービス から book を削除」とあるので削除した。
追記 2017年9月7日
ゲーム, 権利楽曲, 動画マイリスト の例を追加した。
追記 2017年5月20日
10番目のレスで教えてもらい API のドキュメントが新たに公開されていたのを追加した。
追記 2017年3月17日
「新検索β」終了のお知らせ|ニコニコインフォ より新検索ベータのウェブ上での検索が出来なくなったが、同時に以下のドキュメントのページも削除されトップページにリダイレクトされるようになった。
追記 2016年9月30日
startTime の仕様変更について。
追記 2019年1月5日
liveStatus の詳細を調べた。
コメント
コメントを書くstartTime の string (ISO8601形式) って3日前から変わりましたか?
教えて詳しい人!!
>>5
2014-01-01T00:00:00+09:00 ではなくて
2014-01-01T00:00:00%2b00:00 にすれば正しい時間で返事があるようです
9時間プラスではなく0時間プラスです
ニコニコ静画(マンガ)で正しいサムネURLが取得出来ないのですが・・・
>>8
thumbnailUrl で http://lohas.nicoseiga.jp/thumb/mg_thumb/0q がどのマンガにも返ってきますね。
非公式の設定でサムネイルを取得することは可能だが、禁止事項に当たるのでここでは書けません。
http://search.nicovideo.jp/manga/search/ は v1 を使っているがこれを調べると分かるかもしれません。
http://site.nicovideo.jp/search-api-docs/search.html
http://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?q=test&targets=tagsExact&_sort=viewCounter&_context=apiguide
今叩くと, fields 省略できるみたい? (仕様変わった?)
APIガイドの方にfiltersにcontentIdの指定が可能との記載があったので
サンプルクエリのURLを以下の様に変えて実行してみました。
http://api.search.nicovideo.jp/api/v2/video/contents/search?q=%E5%88%9D%E9%9F%B3%E3%83%9F%E3%82%AF&targets=title&fields=contentId,title,viewCounter&filters[contentId][0]=sm1097445&_sort=-viewCounter&_offset=0&_limit=3&_context=apiguide
しかしどうしても以下のようなエラーが返ってきてしまいます・・・
{"meta":{"status":400,"errorCode":"QUERY_PARSE_ERROR","errorMessage":null,"id":"030306b1-05b9-422e-99c0-dd33b4c08c1f"}}
どのようにすればcontentIdをフィルターに指定することができるのでしょうか?教えていただけたら幸いです
>>12
サポートに問い合わせたのでしばしお待ちください
>>12
問い合わせの返信によると、ドキュメントの間違いだそうです。つまりcontentIdはfiltersで指定できないです。
>>14
お忙しい時間ところ早速の問い合わせ・回答していただきありがとうございます
正式に出来ないという返信を頂き、悩んでいた事が解決しスッキリいたしました!
本当にありがとうございます