ニコニコ動画 『スナップショット検索API v2』 ガイド
ニコニコ動画のコンテンツを解析する目的で検索/取得する際に利用できます


はじめに

キーワードやフィルタ条件を指定して、動画を検索できます。 当APIの検索結果は、毎日AM5:00に更新される動画検索インデックスから返されます。

APIエンドポイント

http://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search

ヘッダー

User-Agentにサービス名またはアプリケーション名を指定してください。

クエリパラメータ

以下のパラメータを GET のクエリパラメータで与えます。

パラメータ名省略可能かデフォルト値説明
qstringno-ゲーム検索キーワードです。 書式の詳細は*1を参照してください。
targetsstringno-title,description,tags検索対象のフィールド(複数可、カンマ区切り)です。キーワード検索の場合、title,description,tagsを指定してください。タグ検索(キーワードに完全一致するタグがあるコンテンツをヒット)の場合、tagsExactを指定してください。
fieldsstringyes-contentId,title,description,tagsレスポンスに含みたいヒットしたコンテンツのフィールド(複数可、カンマ区切り)です。フィールド名は*2を参照してください。
filtersstringyes--検索結果をフィルタの条件にマッチするコンテンツだけに絞ります。フィルタの書式には*3を参照してください。
jsonFilterstringyes--OR や AND の入れ子など複雑なフィルター条件を使う場合のみに使用します。 OR / AND / NOT 単体で使用する場合は filters を使ってください。フィルタの書式には*4を参照してください。
_sortstringno--viewCounterソート順をソートの方向の記号とフィールド名を連結したもので指定します。ソートの方向は昇順または降順かを'+'か'-'で指定し、ない場合はデフォルトとして'-'となります。使用できるフィールドは*2を参考にしてください。
_offsetintegeryes010返ってくるコンテンツの取得オフセット。最大:制限なし
_limitintegeryes1010返ってくるコンテンツの最大数。最大:100
_contextstringno-apiguideサービスまたはアプリケーション名。最大:40文字

*1 クエリ文字列仕様

機能名書式説明備考
AND検索空白(半角)で区切るミク ボーカル“ミク” かつ “ボーカル"を含むコンテンツ
OR検索ORで区切るミク OR ボーカル"ミク"または"ボーカル"を含むコンテンツORの前後には空白を入れてください。
--ミク OR ボーカル OR ヴォーカル"ミク"または"ボーカル"または"ヴォーカル"を含むコンテンツ
AND・OR検索-ボーカル OR 歌ってみた ミク("ボーカル” または"歌ってみた") でかつ “ミク” を含むコンテンツANDとORを組み合わせる場合OR検索を先に書きます。
フレーズ検索ダブルクオート" で囲む“ミク ボーカル”空白を含む “ミク ボーカル” を含むコンテンツダブルクオートで囲むことで空白や演算子も含めて検索できます。
NOT検索単語の前に-をつけるミク -ボーカル“ミク"を含んでボーカルを含まないコンテンツ。
--ミク - ボーカル"ミク” かつ “-” かつ “ボーカル"を含むコンテンツ- と単語の間に空白をいれないでください。
---ボーカルエラーNOT検索だけ実行することはできません。

*2 フィールド仕様

すべてのフィールドで値が入ってないなどの理由でnullが返ってくる場合があります。

フィールド名説明fieldsで取得可能か_sortに指定可能かfiltersに指定可能か
contentIdコンテンツID。http://nico.ms/ の後に連結することでコンテンツへのURLになります。stringo-o
titleタイトルstringo--
descriptionコンテンツの説明文。stringo--
tagsタグ(空白区切り)stringo-o
categoryTagsカテゴリタグstringo-o
viewCounter再生数integerooo
mylistCounterマイリスト数またはお気に入り数。integerooo
commentCounterコメント数integerooo
startTimeコンテンツの投稿時間。string (ISO8601形式)ooo
lastCommentTime最終コメント時間integerooo
lengthSeconds再生時間(秒)integerooo

*3 フィルタ指定仕様

フィールド field0 が val0 または val1 … の値のいずれかに一致するコンテンツだけにフィルタリングする場合、以下のようにURLパラメータを指定します。

filters[field0][0]=val0&filters[field0][1]=val1

フィールド field1 が val0 〜 val1 の範囲(val0,val1含まず)に一致するコンテンツだけにフィルタリングする場合、以下のようにURLパラメータを指定します。

 filters[field1][gt]=val0&filters[field1][lt]=val1

範囲の値も含めたい場合gteとlteを使用します。

フィルタにはinteger、またはstring(日付)のフィールドを利用できます。詳しくは*2のフィールド仕様を参考にしてください。

filters[viewCounter][0]=1000000
filters[mylistCounter][gte]=1000&filters[commentCounter][gte]=1000
filters[startTime][gte]=2014-01-01T00:00:00+09:00&filters[startTime][lt]=2015-01-01T00:00:00+09:00
filters[categoryTags][0]=ゲーム

*4 JSONフィルタ指定仕様

実際に使用する際はエンコードする必要があります。

キー説明
共通typeequal,range,or,and,notのいずれか
type == equalfieldequal で対象にしたいフィールド
valueequal で対象にしたい値
type == rangefieldrange で対象にしたいフィールド
from範囲の始点の値
to範囲の終点の値
include_lowerfromの値を範囲に含めるか
include_uppertoの値を範囲に含めるか
type == orfiltersJSONフィルターの配列
type == andfiltersJSONフィルターの配列
type == notfilterJSONフィルター
{
  "type": "or",
  "filters": [
    {
      "type": "range",
      "field": "startTime",
      "from": "2017-07-07T00:00:00+09:00",
      "to": "2017-07-08T00:00:00+09:00",
      "include_lower": true
    },
    {
      "type": "range",
      "field": "startTime",
      "from": "2016-07-07T00:00:00+09:00",
      "to": "2016-07-08T00:00:00+09:00",
      "include_lower": true
    }
  ]
}

レスポンス

以下のJSONが返ってきます。

正常な場合

フィールド名説明
metaobject-レスポンスのメタ情報フィールド
meta.statusinteger200HTTPステータス(成功の場合200)
meta.idstring594513df-85ea-4122-9859-f4ec2701cacfリクエストID
meta.totalCountinteger12673ヒット件数
dataarray-ヒットしたコンテンツ。要素の内容はパラメータfieldsによって異なります

{
  "meta": {
    "status": 200,
    "totalCount": 1,
    "id":"594513df-85ea-4122-9859-f4ec2701cacf"
  },
  "data": [
    {
      "contentId": "sm9",
      "title": "テスト",
      "description": "テスト",
      "startTime": "2016-11-03T02:09:11+09:00",
      "viewCounter": 1
    }
  ]
}

エラーの場合

フィールド名説明
metaobject-レスポンスのメタ情報フィールド
meta.statusinteger400HTTPステータス(エラーの場合200以外)
meta.errorCodestringQUERY_PARSE_ERRORエラーコード
meta.errorMessagestringquery parse errorエラー内容

status: 400

不正なパラメータです。

{
  "meta": {
    "status": 400,
    "errorCode": "QUERY_PARSE_ERROR",
    "errorMessage": "query parse error"
  }
}

status: 500

検索サーバの異常です。

{
  "meta": {
    "status": 500,
    "errorCode": "INTERNAL_SERVER_ERROR",
    "errorMessage": "please retry later."
  }
}

status: 503

サービスがメンテナンス中です。メンテナンス終了までお待ち下さい。

{
  "meta": {
    "status": 503,
    "errorCode": "MAINTENANCE",
    "errorMessage": "please retry later."
  }
}

サンプルクエリと実行例

ここでは、以下のような条件の検索クエリを例示します。

URL

http://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?q=%E5%88%9D%E9%9F%B3%E3%83%9F%E3%82%AF&targets=title&fields=contentId,title,viewCounter&filters[viewCounter][gte]=10000&_sort=-viewCounter&_offset=0&_limit=3&_context=apiguide

curl での実行例

curl -A 'apiguide application' 'http://api.search.nicovideo.jp/api/v2/snapshot/video/contents/search?targets=title&fields=contentId,title,viewCounter&_sort=-viewCounter&_offset=0&_limit=3&_context=apiguide_application' --data-urlencode "q=初音ミク" --data-urlencode "filters[viewCounter][gte]=10000"

レスポンス

{
  "meta": {
    "status": 200,
    "totalCount": 12673,
    "id": "0554268c-c0f3-4436-9098-7b9e07885623"
  },
  "data": [
    {
      "contentId": "sm1097445",
      "title": "【初音ミク】みくみくにしてあげる♪【してやんよ】",
      "viewCounter": 11904784
    },
    {
      "contentId": "sm1715919",
      "title": "初音ミク が オリジナル曲を歌ってくれたよ「メルト」",
      "viewCounter": 10230124
    },
    {
      "contentId": "sm15630734",
      "title": "『初音ミク』千本桜『オリジナル曲PV』",
      "viewCounter": 9557201
    }
  ]
}

データの更新について

更新は一日に一回行われます。 当APIで参照できるデータは、AM5:00時点(日本標準時)でのデータですが、参照できる状態になるまでデータの更新作業が行われます。

以下のエンドポイントから、現在参照しているデータの切り替え日時を取得することができます。

切り替え日時の取得のエンドポイント

http://api.search.nicovideo.jp/api/v2/snapshot/version

レスポンス(JSON)

{
  "last_modified" : "yyyy-MM-ddTHH:mm:ss+09:00"
}

注意事項

利用制限

本APIは、解析を目的とした負荷の高い利用法が想定されているため、

同時接続数の制限、および 同一ユーザーによる過度な利用に制限 を設けております。

制限を超えてリクエストを行った場合、正常に検索結果が返されません。 連続して取得する場合は、十分な間隔を設けてご利用ください。


API利用規約

このAPI利用規約(以下「本利用規約」といいます)は、株式会社ドワンゴ(以下「当社」といいます)が企画・運営するサービス「niconico」の動画検索として、ある時点の一貫性のある検索結果を提供するAPI『Snapshot API』(以下「本API」といいます)を本APIの利用者(以下「利用者」といいます)が利用するにあたっての諸条件について規定します。利用者は本APIを利用する前に、必ず本利用規約をご確認いただいた上、本利用規約に同意いただく必要があります。当社は、利用者が本APIを利用したことをもって本利用規約に同意したものとみなします。

なお、本利用規約は、当社の任意の判断により、変更されることがあります。変更後の利用条件は、変更後の本利用規約を当社が掲示したときから適用されるものとし、利用者はこれを予め承諾するものとします。

第1条(本APIの利用許諾)
1.  当社は、利用者に対し、本API及び本APIに関して提供されるドキュメント(以下「本ドキュメント」といいます)を利用することを許諾します。但し、利用者は、本利用規約及び本ドキュメントに記載された態様、方法に従って本APIを利用するものとします。
2.  本API及び本ドキュメントを、営利目的に利用することはできません。
3.  本APIの利用をするにあたり、利用者は、当社に対して、利用者が反社会勢力(暴力団、暴力団員、暴力団準構成員、暴力団関係企業、総会屋等、社会運動標榜ゴロ、政治活動標榜ゴロ、特殊知能暴力集団、反社会的勢力共生者、又はその他これらに準ずる者をいう。以下同じです。)に該当しないことを表明し、且つ将来にわたっても該当しないことを確約します。
4.  当社は、利用者が本利用規約に反した場合、利用者に催告なく、本条第1項に定める利用許諾を取り消すことができるものとします。

第2条(利用者の義務)
1.  利用者が本APIを利用者自身のアプリケーション(以下「アプリケーション」といいます)に利用して第三者に提供する場合(この場合の第三者を以下「エンドユーザー」といいます)、利用者はアプリケーションを提供する主体として、エンドユーザーに提示した利用条件に従ってエンドユーザーに適正にアプリケーションを提供する責任を負います。また、利用者は、アプリケーション及びこれに関するサービスが、利用者により制作し運営するものであり、利用者がその責任を負うものであることをエンドユーザーが理解できるよう明示するものとします。
2.  利用者は、アプリケーション及びこれに関わるサービスの運営にあたり、個人情報の保護に関する法律、特定商取引に関する法律、割賦販売法、不当景品類及び不当表示防止法、その他関係法令を遵守しなくてはなりません。
3.  利用者は、本APIの利用及びアプリケーションの提供にかかる一切の事項に関連して生じたエンドユーザー又は第三者との紛争(本利用規約に基づく利用者への本APIの提供が終了した後に生じた紛争を含む)について、利用者の責任と費用において一切を処理するものとし、当社は一切関与せず一切の責任も負いません。また、当該クレームや請求への対応に関連して当社に費用が発生した場合又は当社が損害賠償金等の支払いを行った場合については、利用者は当社に対し当該費用及び損害賠償金等(当社が支払った弁護士費用を含みます)を支払うものとします。

第3条(知的財産権等)
1.  「niconico」及び本APIに関する著作権、商標権、意匠権、特許権、実用新案権、ノウハウ、その他権利の一切(以下「知的財産権等」といいます)は、アプリケーションに組み込まれた場合であっても、当社に帰属します。利用者は、知的財産権等を第三者に譲渡、賃貸、サブライセンスその他の処分をしてはならないものとします。
2.  利用者は、本API及び当社の知的財産権等を、本利用規約において明示的に許諾している範囲を超えて利用したりすることはできません。
3.  前項に違反して、利用者が当社に損害を与えた場合、利用者はこの損害(間接的損害も含みます)を当社に対し賠償するものとします。

第4条(禁止事項)
利用者は、本APIの利用(本APIをアプリケーションに組み込む場合及びエンドユーザーによるアプリケーション利用に伴う場合を含む)にあたり、以下に該当する行為をすることはできません。利用者が以下の項目の一つにでも該当した場合、当社は、利用者に対して何等の催告もなく、本APIの利用を停止することができるものとし、またこれにより、当社に損害が生じた場合、利用者はこの損害(間接的損害も含みます)を当社に対し賠償するものとします。
(1) 本ドキュメントに記載されてない方法、態様での本APIの利用
(2) 営業活動、営利を目的とした利用またはその準備行為
(3) 本ドキュメントの複製、改変、翻訳、第三者への頒布、送信(自動公衆送信、送信可能化を含む)。但し、著作権法上の「引用」に該当する場合を除く。
(4) niconicoの機能・性能に悪影響を与えたり妨害したりする行為
(5) 公序良俗に反する行為(反社会的活動及びその宣伝活動も含む)
(6) 犯罪的行為(コンピュータウィルス・ジャンクメール・スパムメール・チェーンレターその他有害なファイルのアップロードや配布、殺人幇助、未成年者略取、ねずみ講にあたる行為を含む)及び、当該犯罪的行為を助長し又はその実行を暗示する行為
(7) 当社、他の利用者、又は第三者の知的所有権を侵害する行為
(8) 当社、他の利用者、又は第三者の財産・信用・名誉等を毀損する行為及び、プライバシーに関する権利、肖像権その他の権利を侵害する行為
(9) 故意、過失を問わず、法令、条約に反する行為
(10) 当社、他の利用者、又は第三者に経済的・精神的不利益を与える行為
(11) 当社、他の利用者、又は第三者に対する誹謗中傷、いやがらせの行為
(12) 公職選挙法に抵触する行為
(13) 未成年者に対し悪影響があると判断される行為
(14) 性風俗、宗教、政治に関する社会的行為であると判断される行為
(15) niconicoその他当社が提供する全てのサービスの運営を妨げる行為、又はそのおそれのある行為をしていると当社が判断した行為
(16) niconico及び当社が提供する全てのサービスの信用・名誉等を毀損する行為、又はそのおそれのある行為
(17)賭博・ギャンブルを行わせ、又は賭博・ギャンブルへの参加を勧誘する行為
(18) 本利用規約の条項に違反する行為
(19) 個人に関する情報の収集、蓄積行為
(20) 「niconico利用規約」の禁止事項に該当する場合
(21) 反社会的勢力への利益供与
(22) その他、当社が不適当と判断する行為

第5条(免責)
1.  利用者は、以下の各号をあらかじめ承諾の上、本APIを利用するものとし、以下の各号により利用者に損害が生じた場合であっても当社は一切責任を負わないものとします。
(1) 本APIは、明示又は黙示の有無にかかわらず、当社がその提供時において保有する状態で提供するものであること
(2) 本APIのエラーやバグ、論理的誤り、不具合、中断その他の瑕疵がないことについて当社が一切保証しないこと
(3) 利用者が予定している目的への適合性、有用性(有益性)、セキュリティ、権原、非侵害性及び正確性等について当社が一切保証しないこと
(4) 当社は本APIの修正又は改良義務を負わないこと
(5) 当社は、本APIの仕様の全部又は一部をいつでも変更することができること
(6) 当社は、本APIの提供をいつでも終了することができること
2.  利用者は、本APIを自己の責任と費用負担で利用するものとし、本APIの利用又は利用不能に関連して発生した損害について、当社は(当社が損害の発生する可能性を指摘されていた場合を含みます)一切の損害賠償責任を負わないことを承諾するものとします。ただし、当社の故意又は重大な過失に基づく利用者の損害についてはこの限りではありません。

第6条(機密保持)
利用者は、本API及び本ドキュメントの利用に関連して当社から受領した情報等の一切について、当社から事前に書面による承諾を得た場合を除き、機密として取り扱うものとし、第三者に開示してはならないものとします。

第7条(一般条項)
1.  利用者は、理由のいかんを問わず、本APIの利用を終了したときは、本APIを利用したアプリケーションのプログラムを消去するものとします。
2.  利用者は、本利用規約に基づく一切の権利義務を第三者に譲渡し、または承継させてはならないものとします
3.  本利用規約及び利用者と当社との本利用規約に基づく本APIの利用に関する関係には、日本法が適用されます。
4.  本利用規約に起因し又は関連する一切の紛争については、東京地方裁判所を第一審の専属的合意管轄裁判所とします。
5.  当社が、本利用規約に示される権利を行使又は実施しない場合にも、その権利を放棄するものではありません。

2014年10月15日制定

更新履歴