公開API ドキュメント

外部のサイトやツールから利用できるAPIエンドポイント一覧です。すべてのエンドポイントでCORSが有効です。

概要

ベースURL: https://otomad-ranking.com

すべてのエンドポイントは GET メソッドで、レスポンスは JSON 形式です。認証不要・CORS対応のため、ブラウザのJavaScriptから直接呼び出せます。

使用例(JavaScript)
const res = await fetch("https://otomad-ranking.com/api/growth-ranking");
const data = await res.json();
console.log(data);

リアルタイムランキング

GET /api/growth-ranking/dates

リアルタイムランキングが存在する日付の一覧を返します。

レスポンス例
{
  "dates": [
    { "date": "20260720", "generatedAt": 1753012800000 },
    { "date": "20260719", "generatedAt": 1752926400000 }
  ]
}
フィールド説明
dates[].datestring日付(YYYYMMDD形式)
dates[].generatedAtnumberデータ生成日時(UNIXミリ秒)

GET /api/growth-ranking

指定日(省略時は最新)のリアルタイムランキングデータを返します。

パラメータ説明
?datestring日付(YYYYMMDD形式)。省略時は最新日付。
レスポンス例
{
  "dateLabel": "20260720",
  "windows": {
    "weekly": {
      "growthRanking": [
        {
          "rank": 1,
          "videoId": "sm12345678",
          "title": "動画タイトル",
          "thumbnailUrl": "https://...",
          "growth": 15000,
          "currentViews": 80000
        }
      ],
      "mylistRateRanking": [ ... ]
    },
    "daily": { ... }
  }
}

週刊音MADランキング バックナンバー

GET /api/backnumber-ranking/weeks

登録済みのバックナンバー週一覧を返します。

レスポンス例
{
  "weeks": [
    {
      "week": 841,
      "generatedAt": 1753012800000,
      "period": { "start": "2026/07/06", "end": "2026/07/12" },
      "thumbnailUrl": "https://...",
      "title": "動画タイトル"
    }
  ]
}

GET /api/backnumber-ranking

指定週(省略時は最新)のバックナンバーランキングデータを返します。

パラメータ説明
?weeknumber週番号(第○回の数字)。省略時は最新。
レスポンス例
{
  "week": 841,
  "announcementVideoId": "sm46404782",
  "announcementTitle": "週刊音MADランキング #841",
  "periodText": "集計期間 ...",
  "entries": [
    {
      "rank": 1,
      "label": null,
      "videoId": "sm12345678",
      "title": "動画タイトル",
      "uploader": "投稿者名",
      "thumbnailUrl": "https://...",
      "point": 15200
    },
    {
      "rank": null,
      "label": "PICKUP",
      "videoId": "sm23456789",
      "title": "...",
      ...
    }
  ]
}
フィールド説明
entries[].ranknumber | null順位(PICKUP/OP/EDはnull)
entries[].labelstring | nullラベル(PICKUP / OP / ED など)
entries[].videoIdstringニコニコ動画の動画ID
entries[].pointnumberポイント(ある場合)

タグランキング

GET /api/tag-ranking/dates

タグランキングデータが存在する日付の一覧を返します。

レスポンス例
{
  "dates": [
    { "date": "20260720", "generatedAt": 1721433600000 }
  ]
}

GET /api/tag-ranking

指定日のタグランキング(トレンド・使用回数・マイリスト率の3種類 × デイリー/ウィークリー/月間)。全動画のスナップショット差分から、タグごとに成長ポイントを集計したものです。

パラメータ説明
?datestring日付(YYYYMMDD)。省略時は最新
レスポンス例(一部抜粋)
{
  "dateLabel": "20260720",
  "generatedAt": 1721433600000,
  "windows": {
    "daily": {
      "trendRanking": [
        { "rank": 1, "tag": "東方", "growthPoint": 12345, "viewDelta": 10000, "mylistDelta": 200, "videoCount": 50 }
      ],
      "countRanking": [
        { "rank": 1, "tag": "cookie☆", "growthPoint": 8000, "viewDelta": 6000, "mylistDelta": 100, "videoCount": 80 }
      ],
      "mylistRateRanking": [
        { "rank": 1, "tag": "例のアレ", "mylistRate": 5.23, "growthPoint": 3000, "viewDelta": 2000, "mylistDelta": 105, "videoCount": 30 }
      ]
    },
    "weekly": { "..." : "..." },
    "monthly": { "..." : "..." }
  }
}

動画統計値履歴

GET /api/video-history

指定した動画の再生数・コメント数・マイリスト数・いいね数の推移を、スナップショットの全日付分返します。

パラメータ説明
?idstring動画ID(sm12345678)またはニコニコ動画のURL
レスポンス例
{
  "videoId": "sm29811031",
  "snapshots": 4,
  "history": [
    { "date": "20260717", "takenAt": 1784279953975, "view": 10754, "comment": 62, "mylist": 56, "like": 29 },
    { "date": "20260718", "takenAt": 1784338043745, "view": 10754, "comment": 62, "mylist": 56, "like": 29 },
    { "date": "20260719", "takenAt": 1784433427876, "view": 10754, "comment": 62, "mylist": 56, "like": 29 },
    { "date": "20260720", "takenAt": 1784527786387, "view": 10755, "comment": 62, "mylist": 56, "like": 29 }
  ]
}
フィールド説明
videoIdstring動画ID
snapshotsnumber該当動画が含まれるスナップショット数
history[].datestringスナップショット日付(YYYYMMDD)
history[].takenAtnumberスナップショット取得日時(UNIXミリ秒)
history[].viewnumber再生数
history[].commentnumberコメント数
history[].mylistnumberマイリスト数
history[].likenumberいいね数

横断検索

GET /api/search

動画タイトル・動画ID・日付・週番号などで、リアルタイムランキングとバックナンバーの全データを横断検索します。

パラメータ説明
?qstring検索キーワード(2文字以上)。以下の形式に対応:
・動画タイトル(部分一致)
・動画ID(sm12345678)
・日付(2026/07/20, 20260720, 2026/07)
・月(7月)
・週番号(第841回)
・発表タイトル(部分一致)
・対象期間テキスト(部分一致)
レスポンス例
{
  "q": "第841回",
  "matchedDates": [
    { "date": "20260720" }
  ],
  "matchedWeeks": [
    {
      "week": 841,
      "period": { "start": "2026/07/06", "end": "2026/07/12" },
      "announcementTitle": "...",
      "thumbnailUrl": "https://..."
    }
  ],
  "count": 5,
  "results": [
    {
      "source": "backnumber",
      "week": 841,
      "period": { "start": "...", "end": "..." },
      "rank": 1,
      "videoId": "sm12345678",
      "title": "...",
      "thumbnailUrl": "..."
    },
    {
      "source": "realtime",
      "date": "20260720",
      "legacy": false,
      "rank": 3,
      "videoId": "sm12345678",
      "title": "...",
      "thumbnailUrl": "..."
    }
  ]
}

エラーレスポンス

エラー時はHTTPステータスコード 400/404/500 とともに以下の形式で返します。

{ "error": "エラーメッセージ" }

レート制限

現時点ではレート制限を設けていませんが、常識的な範囲でご利用ください。短時間の大量リクエストはサーバーに負荷がかかるため、適度な間隔(1秒以上)を空けてください。