本文へスキップ
javinfo

探索エンドポイント

品番なしでカタログを閲覧:トレンド、類似作品、日別発売、スタジオ、シリーズ、ジャンル、ランダム。

1つの品番ではなくカタログ全体を扱う13の GET エンドポイントです。すべて x-javinfo-key で認証し、 課金されます。ほとんどは meta を返し、応答ソース、スキャン数、呼び出し時間が入ります。

基本料金は 1,000 コールあたり $0.40 です。num を受け付ける場合、10 を超えると料金がページ サイズに比例して上がります。num=20 は $0.80 です。計算式はレート制限と料金に。

エンドポイント用途デフォルトでの 1,000 コールあたり
/discover/trending最近の発売をランク付け$0.80(num=20)
/discover/underrated評価の高い古い作品$0.80(num=20)
/discover/suggestion品番、出演者、タグ、スタジオをまたぐ入力補完$0.40(num=8)
/discover/similarシード品番に似た作品$0.48(num=12)
/discover/duelシード付きの A/B ペア$0.40
/discover/calendar日ごとにまとめた発売$0.40
/discover/tags期間内のタグ件数$1.20(num=30)
/discover/studiosスタジオ一覧、または1スタジオのカタログ$1.20 / $0.80
/discover/series1シリーズ、新しい順$0.80(num=20)
/discover/genresカタログ全体のジャンル件数$2.40(num=60)
/discover/random条件に合うランダムな作品$0.40(num=10)
/discover/for-youアカウント自身の検索履歴からのおすすめ$0.80(num=20)
/discover/statsソース別のカタログ合計$0.40

作品カード

探索レスポンスの作品はすべてこの形です。以下のエンドポイントは同じカードを使うので、レンダラーは 一度書けば済みます。

フィールド型説明
codestring正規化された品番。例:ABP-002
titlestring | null英語タイトルのみ。ソースにない場合は null。javbus の行は title: null で、日本語タイトルが titleJa に入っていることがよくあります
titleJastring | null日本語タイトル
releaseDatestring | nullYYYY-MM-DD
runtimeMinsnumber | null分
makerstring | nullスタジオ / メーカー
labelstring | nullレーベル
seriesstring | nullシリーズ。ソースの表記のまま
categoriesstring[]ジャンルタグ
actressesstring[]出演者。ソースに英語名があれば英語名
coverstring | nullジャケット URL
ratingnumber | nulljavlibrary のみ、1〜10。他のソースでは null
sourcestringこのカードを提供したソース:fanza、javdatabase、javlibrary、javbus、missav のいずれか
urlstring | nullソースサイト上のページ。ソースが保持している場合のみ

1回の呼び出しに複数インデックスが応答すると、カードは code でまとまり、優先順の先頭がメタデータを 提供します。rating は例外です。評価は javlibrary だけなので、他のソースのカードは、作品が別で評価 されていても null です。

meta は呼び出しを説明します:

フィールド型説明
sourcesstring[]ヒットまたはファセット件数で応答した公開ソース名。空配列は通常、カタログに到達できなかったことを意味します
scannednumberランク付けやフィルタリングの前に読んだドキュメント数。ファセットのみのエンドポイントでは 0
latencyMsnumberサーバー側の時間

例は省略しています。配列は先頭のみ、繰り返しは "…"、長いタイトルは切り詰めました。残った値は 実際のレスポンスから。

/discover/trending

API:/discover/trending

最近の発売を品質と日付でランク付けします。ホームページや「今週の新作」の棚に。

パラメータ型デフォルト範囲
rangeinteger301〜365、さかのぼる日数
numinteger201〜50
genrestringなし正確なカテゴリー名

料金: num=20 で 1,000 コールあたり $0.80。num ≤ 10 なら $0.40。

ハンドラーは直近 range 日間を新しい順に読み、新しさ、評価、ギャラリー数、プレビュー、出演者数で 再ランク付けします。日付に上限がないため、未来の告知作品も入ります。

curl -s 'https://api.javinfo.dev/discover/trending?range=7&num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:trending",
  "count": 3,
  "results": [
    {
      "code": "FCDSS-120",
      "title": "4 Hours of the Best Anal Licking Service: Sticking My Tongue in Your Asshole! [FALENO Maniac Special Selection]",
      "titleJa": null,
      "releaseDate": "2026-12-03",
      "runtimeMins": 240,
      "maker": "Faleno",
      "label": "Faleno",
      "series": "FALENO Compilation",
      "categories": ["Anal Play", "Beautiful Girl", "…"],
      "actresses": ["Ayaka Tomoda", "Chiharu Mitsuha", "…"],
      "cover": "https://www.javdatabase.com/covers/full/1f/1fcdss00120pl.webp",
      "rating": null,
      "source": "javdatabase",
      "url": "https://www.javdatabase.com/movies/fcdss-120/"
    },
    "…"
  ],
  "meta": {
    "sources": ["fanza", "javdatabase", "…"],
    "scanned": 45,
    "latencyMs": 23
  }
}

ステータス:200、400、401、402、429。

/discover/underrated

API:/discover/underrated

見逃されていそうな古い作品を、日付より評価でランク付けします。「埋もれた作品」の棚に。

パラメータ型デフォルト範囲
minAgeDaysinteger36530〜3650、最小の経過日数
numinteger201〜50

料金: num=20 で 1,000 コールあたり $0.80。num ≤ 10 なら $0.40。

評価を持つのは javlibrary だけなので、候補はこのインデックスから作ります。カットオフ前の12年から30日スライスを8つ取ります。評価のない作品は除外し、スコアはより古く、評価が高く、記録が 完全な作品を優先します。

curl -s 'https://api.javinfo.dev/discover/underrated?num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:underrated",
  "count": 3,
  "results": [
    {
      "code": "IRCP-016",
      "title": "The Price Of Chigasaki Lion Compliant With Me Naked",
      "titleJa": "裸のわたしと言いなりの値段 茅ヶ崎りおん",
      "releaseDate": "2014-07-13",
      "runtimeMins": 120,
      "maker": "Iromegane",
      "label": "Iromegane",
      "series": null,
      "categories": ["Solowork", "Girl", "…"],
      "actresses": ["Shiina Mayu (Chigasaki Rion)"],
      "cover": "https://pics.dmm.co.jp/mono/movie/adult/ircp016/ircp016pl.jpg",
      "rating": 10,
      "source": "javlibrary",
      "url": "https://www.javlibrary.com/en/javlijya24.html"
    },
    "…"
  ],
  "meta": {
    "sources": ["javlibrary"],
    "scanned": 640,
    "latencyMs": 63
  }
}

ステータス:200、400、401、402、429。

/discover/suggestion

API:/discover/suggestion

検索ボックスの入力補完です。1回で品番、出演者、タグ、スタジオを混ぜ、重複を除いて品番を先頭に 返します。

パラメータ型デフォルト範囲
qstring必須1文字以上
numinteger81〜20

料金: num=8 で 1,000 コールあたり $0.40。num=20 なら $0.80。

各エントリは、自分が何かと、隣に何を表示するかを示します:

kindvaluelabelextra
code品番同じ品番英語タイトル。英語タイトルがない場合は日本語タイトル
idol出演者 ID名前画像 URL
tagタグ slug同じ slug件数
studioスタジオ名同じ名前件数

extra は null を許します。検索は作品インデックスと同じ前方一致で、別の n-gram はありません。サジェストは種類の順(品番、出演者、タグ、スタジオ)に構築し、num で切ります。

curl -s 'https://api.javinfo.dev/discover/suggestion?q=ABP&num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "q": "ABP",
  "count": 3,
  "results": [
    {
      "kind": "code",
      "value": "ABP-001",
      "label": "ABP-001",
      "extra": "Lola Misaki at Your Service Newest Beauty Salon Addict"
    },
    {
      "kind": "code",
      "value": "ABP-002",
      "label": "ABP-002",
      "extra": "NEW TOKYO Style 01 - Aikarin"
    },
    "…"
  ]
}

q がない場合はハンドラーが動く前に拒否されます:

curl -s 'https://api.javinfo.dev/discover/suggestion' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "defined": false,
  "code": "BAD_REQUEST",
  "status": 400,
  "message": "Input validation failed",
  "data": {
    "issues": [
      {
        "expected": "string",
        "code": "invalid_type",
        "path": ["q"],
        "message": "Invalid input: expected string, received undefined"
      }
    ]
  }
}

ステータス:200、400、401、402、429。

/discover/similar

API:/discover/similar

「これに似た作品」。品番を1つ渡すと、ランク付けされた近傍、シードのカード、使用したスコアを返します。 詳細ページに。

パラメータ型デフォルト範囲
qstring必須作品の品番
numinteger121〜50

料金: num=12 で 1,000 コールあたり $0.48。num ≤ 10 なら $0.40。

シードは作品インデックス全体で解決します。候補は最初の出演者か最初の3タグのいずれかを共有し、 出演者、タグ、メーカー、レーベル、シリーズ、再生時間、発売日でランク付けします。シードは results から除外します。scores は品番で results と対応し、0〜1、小数3桁です。

どのインデックスも知らない品番は 404 で、空の 200 ではありません。タイプミスに課金されることはありません。

curl -s 'https://api.javinfo.dev/discover/similar?q=ABP-002&num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:similar",
  "count": 3,
  "results": [
    {
      "code": "WPC-013",
      "title": "WPC-013 WATER POLE Aikarin",
      "titleJa": "WPC-013 WATER POLE あいかりん",
      "releaseDate": "2023-03-20",
      "runtimeMins": 128,
      "maker": "Prestige",
      "label": "WPC",
      "series": "WATER POLE",
      "categories": ["Hot Girl", "Sailor Suit", "…"],
      "actresses": ["Aikarin"],
      "cover": null,
      "rating": null,
      "source": "missav",
      "url": null
    },
    "…"
  ],
  "meta": {
    "sources": ["fanza", "javdatabase", "…"],
    "scanned": 180,
    "latencyMs": 72
  },
  "seed": {
    "code": "ABP-002",
    "title": "NEW TOKYO Style 01 - Aikarin",
    "titleJa": null,
    "releaseDate": "2013-06-01",
    "runtimeMins": 127,
    "maker": "Prestige",
    "label": "ABSOLUTELY PERFECT",
    "series": "Tokyo Style",
    "categories": ["Facial", "Handjob"],
    "actresses": ["Aikarin"],
    "cover": "https://pics.dmm.co.jp/digital/video/118abp00002/118abp00002pl.jpg",
    "rating": null,
    "source": "fanza",
    "url": null
  },
  "scores": [
    { "code": "WPC-013", "score": 0.5 },
    { "code": "MAS-110", "score": 0.496 },
    "…"
  ]
}

同じリクエスト、未知の品番:

curl -s 'https://api.javinfo.dev/discover/similar?q=ZZZZ-99999&num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "defined": false,
  "code": "NOT_FOUND",
  "status": 404,
  "message": "no title found for \"ZZZZ-99999\""
}

ステータス:200、400、401、402、404、429。

/discover/duel

API:/discover/duel

「どっちがいい」ゲーム用の A/B ペアです。同じ seed なら誰でも同じ2枚のカードを見ます。

パラメータ型デフォルト範囲
seedstring今日の UTC 日付任意の文字列
genrestringなし正確なカテゴリー名
performerstringなし正確な出演者名

料金: 1,000 コールあたり $0.40 の定額。ページサイズ調整なし。

プールは DMM + FANZA、javdatabase、javlibrary 各インデックスの最新40作品です。品番で重複を除き、 発売済みで出演者ありに限ります。genre と performer で絞れます。シード付き PRNG が2作品を選び、品番で並べるので、どの呼び出し元でも a と b は同じ側です。プールは新作で動くため、 シードが安定するのはそのウィンドウ内だけです。候補が2つ未満なら a と b は null です。

curl -s 'https://api.javinfo.dev/discover/duel?seed=42' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "seed": "42",
  "a": {
    "code": "DSOD-124",
    "title": "That absolute, total fatso made me come so many times it was embarrassing…",
    "titleJa": "最低最悪なあのデブに恥ずかしいほど何度もイカされて…ションベン垂れ流す肉便器調教された言いなり美人清掃員 天川そら",
    "releaseDate": "2026-11-06",
    "runtimeMins": 141,
    "maker": "Das",
    "label": "Das",
    "series": null,
    "categories": ["Deep Throat", "Embarrassment", "…"],
    "actresses": ["Sora Amakawa"],
    "cover": "https://pics.dmm.co.jp/digital/video/dsod00124/dsod00124pl.jpg",
    "rating": null,
    "source": "fanza",
    "url": null
  },
  "b": {
    "code": "VRKM-1944",
    "title": "[VR] Getting Hooked on Sora Amakawa",
    "titleJa": null,
    "releaseDate": "2026-11-06",
    "runtimeMins": 84,
    "maker": "K M Produce",
    "label": "K M Produce",
    "series": "pond",
    "categories": ["8KVR", "Beautiful Tits", "…"],
    "actresses": ["Sora Amakawa"],
    "cover": "https://www.javdatabase.com/covers/full/vr/vrkm01944pl.webp",
    "rating": null,
    "source": "javdatabase",
    "url": "https://www.javdatabase.com/movies/vrkm-1944/"
  }
}

ステータス:200、401、402、429。

/discover/calendar

API:/discover/calendar

2つの日付の間の発売を日ごとにまとめます。カレンダー表示に。

パラメータ型デフォルト範囲
fromstring今日YYYY-MM-DD
tostring今日 + 30 日YYYY-MM-DD

料金: 1,000 コールあたり $0.40 の定額。下のループの各呼び出しは個別に課金されます。

両方の日付を含みます。2つのデフォルトは独立しているため、from だけでも今日から30日後で終わります。 過去の範囲には両方指定してください。発売のない日は省略され、バケットは昇順。各発売は完全な 作品カードです。

長い範囲は途中で止まる

各ソースは1回で最大1,000行を返すため、発売の多い範囲は約5日で埋まります。エンドポイントは完全な 日だけを返し、どこで止まったかを示します:

フィールド意味
through完全にカバーされた最後の日、YYYY-MM-DD。回答が切り詰められていなければ to と同じです。
truncatedthrough より後の日が切り詰められた場合に true。

from=2026-11-01&to=2026-11-14 は1回の呼び出しには長すぎます:

curl -s 'https://api.javinfo.dev/discover/calendar?from=2026-11-01&to=2026-11-14' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "from": "2026-11-01",
  "to": "2026-11-14",
  "through": "2026-11-05",
  "truncated": true,
  "count": 1011,
  "days": [
    {
      "date": "2026-11-01",
      "count": 109,
      "releases": [
        {
          "code": "DANDYA-045",
          "title": null,
          "titleJa": "母親と行った銭湯でコッソリおちんちんをいじってくるお姉さんに逃げても追いかけられ何度も精子を飲まれてしまいました",
          "releaseDate": "2026-11-01",
          "runtimeMins": 175,
          "maker": "DANDY",
          "label": null,
          "series": null,
          "categories": [
            "4K",
            "Big Asses",
            "Big Tits",
            "…"
          ],
          "actresses": [],
          "cover": "https://pics.dmm.co.jp/digital/video/1dandya00045/1dandya00045pl.jpg",
          "rating": null,
          "source": "fanza",
          "url": null
        },
        "…"
      ]
    },
    "…"
  ],
  "meta": {
    "sources": [
      "fanza",
      "javdatabase",
      "javlibrary",
      "javbus",
      "missav"
    ],
    "scanned": 3136,
    "latencyMs": 352
  }
}

この応答には 11 月 1 日から 5 日までの 1,011 作品が入っています。収まる範囲は全体が返ります: from=2026-11-01&to=2026-11-03 は "through": "2026-11-03" と "truncated": false を返します。

残りは from を through の翌日にして呼び直し、truncated が false になるまで繰り返します。 2回目の呼び出しは from=2026-11-06&to=2026-11-14 です:

{
  "from": "2026-11-06",
  "to": "2026-11-14",
  "through": "2026-11-14",
  "truncated": false,
  "count": 1101,
  "days": [
    "…"
  ],
  "meta": {
    "sources": [
      "fanza",
      "javdatabase",
      "javbus",
      "missav"
    ],
    "scanned": 1957,
    "latencyMs": 627
  }
}

同じループをコードにすると次のとおりです:

let from = '2026-11-01';
const to = '2026-11-14';
const days = [];

while (from <= to) {
  const res = await fetch(
    `https://api.javinfo.dev/discover/calendar?from=${from}&to=${to}`,
    { headers: { 'x-javinfo-key': KEY } },
  );
  const page = await res.json();
  days.push(...page.days);
  if (!page.truncated) break;

  const next = new Date(`${page.through}T00:00:00Z`);
  next.setUTCDate(next.getUTCDate() + 1);
  from = next.toISOString().slice(0, 10);
}

1日だけで上限を超える場合、その日は一部だけ返り、through はその日、ループは翌日へ進みます。

ステータス:200、400、401、402、429。

/discover/tags

API:/discover/tags

直近のタグ件数を多い順に返します。「トレンドタグ」ブロックに。

パラメータ型デフォルト範囲
rangeinteger301〜365、さかのぼる日数
numinteger301〜100

料金: num=30 で 1,000 コールあたり $1.20。num ≤ 10 なら $0.40。

件数は DMM + FANZA と javdatabase のファセットから取ります。タグは数える前に正規化するため、 表記の揺れは1つにまとまります。値は表示名ではなく slug です。

curl -s 'https://api.javinfo.dev/discover/tags?range=7&num=5' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:tags",
  "count": 5,
  "results": [
    { "tag": "featured-actress", "count": 3476 },
    { "tag": "hi-def", "count": 2834 },
    "…"
  ],
  "meta": {
    "sources": ["fanza", "javdatabase"],
    "scanned": 0,
    "latencyMs": 117
  }
}

ステータス:200、400、401、402、429。

/discover/studios

API:/discover/studios

1つのルートに2つの形があります。q なしでは range 内の生産量順のスタジオ一覧、q ありでは そのスタジオのカタログを新しい順に返します。どちらかは kind が示します:directory か catalogue。

パラメータ型デフォルト範囲
qstringなし正確なスタジオ名。カタログモードに切り替わります
rangeinteger36530〜3650、一覧モードのみ
numinteger一覧 30、カタログ 20一覧 1〜100、カタログは最大50
pageinteger11以上、カタログモードのみ

料金: 一覧 num=30 で 1,000 コールあたり $1.20、カタログ num=20 で $0.80。カタログの num 上限は50なので、最高は $2.00 です。

q があると range、ないと page は無視されます。カタログモードの total はそのスタジオの 作品数の推定値です。ページングはこれを基準に。

curl -s 'https://api.javinfo.dev/discover/studios?num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "kind": "directory",
  "source": "discover:studios",
  "count": 3,
  "results": [
    { "studio": "MOODYZ", "count": 2688 },
    { "studio": "S1 NO.1 STYLE", "count": 2382 },
    "…"
  ],
  "meta": {
    "sources": ["fanza"],
    "scanned": 0,
    "latencyMs": 416
  }
}
curl -s 'https://api.javinfo.dev/discover/studios?q=S1%20NO.1%20STYLE&num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "kind": "catalogue",
  "source": "discover:studio",
  "studio": "S1 NO.1 STYLE",
  "total": 25713,
  "count": 3,
  "results": [
    {
      "code": "K9SNOS349",
      "title": null,
      "titleJa": "【数量限定】特大号新人 希望みう 104cm Iの素顔 濃厚なキスして、本能で交わって、ありのままを曝け出す。 (ブルーレイディスク) 生写真3枚セット",
      "releaseDate": "2026-11-25",
      "runtimeMins": 120,
      "maker": "S1 NO.1 STYLE",
      "label": "S1 NO.1 STYLE",
      "series": null,
      "categories": ["Big Tits", "Featured Actress", "…"],
      "actresses": ["希望みう"],
      "cover": "https://pics.dmm.co.jp/mono/movie/adult/k9snos349/k9snos349ps.jpg",
      "rating": null,
      "source": "fanza",
      "url": null
    },
    "…"
  ],
  "meta": {
    "sources": ["fanza"],
    "scanned": 3,
    "latencyMs": 7
  }
}

ステータス:200、400、401、402、429。

/discover/series

API:/discover/series

1つのシリーズのカタログを新しい順に返します。呼び出し元が1作品を開いたとき、他のエントリを並べる のに使います。

パラメータ型デフォルト範囲
qstring必須正確なシリーズ名
numinteger201〜50
pageinteger11以上

料金: num=20 で 1,000 コールあたり $0.80。num ≤ 10 なら $0.40。

q は DMM + FANZA インデックスのシリーズ名への完全一致で、検索ではありません。カタログが保存 する文字列を渡してください。どの作品の series からでも読めます。部分的な名前や別表記は 404 ではなく、count: 0 の空の 200 を返します。total はシリーズ内の作品数の推定値です。

curl -s 'https://api.javinfo.dev/discover/series?q=Unfaithful%20Housewife&num=2' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:series",
  "count": 2,
  "results": [
    {
      "code": "JUKD-481",
      "title": "Unfaithful Housewife 5",
      "titleJa": "不倫妻5",
      "releaseDate": "2006-12-25",
      "runtimeMins": 87,
      "maker": "MADONNA",
      "label": "Madonna",
      "series": "Unfaithful Housewife",
      "categories": ["69", "Adultery", "…"],
      "actresses": ["Anna Muto", "Hiromi Yuki", "…"],
      "cover": "https://pics.dmm.co.jp/digital/video/jukd00481/jukd00481pl.jpg",
      "rating": null,
      "source": "fanza",
      "url": null
    },
    "…"
  ],
  "meta": {
    "sources": ["fanza"],
    "scanned": 2,
    "latencyMs": 14
  },
  "series": "Unfaithful Housewife",
  "total": 7
}

ステータス:200、400、401、402、429。

/discover/genres

API:/discover/genres

カタログ全体のジャンル分類と件数です。フィルターメニューの生成に。

パラメータ型デフォルト範囲
numinteger601〜200

料金: num=60 で 1,000 コールあたり $2.40。num ≤ 10 なら $0.40、num=200 なら $8.00。

ここでの値は表示ラベル(Featured Actress)で、slug を返す /discover/tags とは違います。件数は DMM + FANZA のみから来るため、別ソースの作品は加算されません。

curl -s 'https://api.javinfo.dev/discover/genres?num=5' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:genres",
  "count": 5,
  "results": [
    { "genre": "Featured Actress", "count": 589656 },
    { "genre": "Creampie", "count": 438721 },
    "…"
  ],
  "meta": {
    "sources": ["fanza"],
    "scanned": 0,
    "latencyMs": 163
  }
}

ステータス:200、400、401、402、429。

/discover/random

API:/discover/random

任意のフィルターに合うランダムな作品です。「おまかせ」ボタンに。

パラメータ型デフォルト範囲
genrestringなし正確なカテゴリー名
performerstringなし正確な出演者名
studiostringなし正確なスタジオ名
censoredstringなしcensored または uncensored
numinteger101〜50

料金: num=10 で 1,000 コールあたり $0.40。num=50 なら $2.00。

フィルターは AND で組み合わされます。抽選は均等ではありません。ハンドラーは5か月をランダムに読み、各月でオフセットを取り、プールをシャッフルし、狭いフィルター で足りないときに補充します。連続呼び出しは無関係な作品を返します。

censored は uncensored のときだけ意味を持ち、DMM + FANZA の代わりに javbus の無修正セクション を読みます。censored を渡すのは省略と同じです。キャッシュがないため、毎回サンプリングします。 レスポンスに meta と source はありません。

curl -s 'https://api.javinfo.dev/discover/random?num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "count": 3,
  "results": [
    {
      "code": "JUY-689",
      "title": "A Former Race Queen Married Woman Ai Izumi 32 Years Old Her Adult Video Debut!!",
      "titleJa": "元レースクイーンの人妻 和泉藍 32歳 AVDebut!!",
      "releaseDate": "2018-11-25",
      "runtimeMins": 120,
      "maker": "MADONNA",
      "label": "Madonna",
      "series": null,
      "categories": ["Debut", "Digital Mosaic", "…"],
      "actresses": ["Ai Izumi"],
      "cover": "https://pics.dmm.co.jp/digital/video/juy00689/juy00689pl.jpg",
      "rating": null,
      "source": "fanza",
      "url": null
    },
    "…"
  ]
}

無修正フィルターを付けた場合:

curl -s 'https://api.javinfo.dev/discover/random?censored=uncensored&num=2' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "count": 2,
  "results": [
    {
      "code": "KING-1009",
      "title": null,
      "titleJa": "Computer Fantasy",
      "releaseDate": "2004-08-24",
      "runtimeMins": 90,
      "maker": "POPMedia",
      "label": null,
      "series": null,
      "categories": [],
      "actresses": [],
      "cover": "https://www.javbus.com/imgs/cover/qq6_b.jpg",
      "rating": null,
      "source": "javbus",
      "url": "https://www.javbus.com/en/KING1009"
    },
    "…"
  ]
}

ステータス:200、400、401、402、429。

/discover/for-you

API:/discover/for-you

アカウントの検索履歴からのおすすめです。同じアカウントの2つのキーは履歴を共有します。履歴はキー ではなくユーザー単位で保存されるためです。

パラメータ型デフォルト範囲
numinteger201〜50
lookbackinteger201〜100、読む最近の検索数

料金: num=20 で 1,000 コールあたり $0.80。num ≤ 10 なら $0.40。

履歴に数えるのは成功した /movie、/query、/idols だけです。ハンドラーは直近 lookback 行を 読み、最大5つの異なるクエリを残し、上位ヒットのタグを取り、共有する最近の作品を選びます。 並び順は /discover/trending と同じトレンドスコアです。

basis は説明で、表示用に返します:使用したクエリ、導いたタグ、fallback です。履歴がない場合、 fallback は true で、直近30日の最新作品が返ります。

curl -s 'https://api.javinfo.dev/discover/for-you?num=3' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "source": "discover:for-you",
  "count": 1,
  "results": [
    {
      "code": "FC2-PPV-4973873",
      "title": "FC2-PPV-4973873 [50% OFF for one week] [First time] A 35-year-old married bank employee with a cold demeanor. She's unp…",
      "titleJa": "FC2-PPV-4973873 【一週間50%OFF】【初】35歳既婚の塩対応銀行員。近寄りがたいから一転、バキュームフェラで濃厚ザーメンを搾り取る。口内射精、ごっくん合計2発。",
      "releaseDate": "2026-09-09",
      "runtimeMins": 35,
      "maker": "Fc2",
      "label": null,
      "series": null,
      "categories": ["Wife", "Adultery", "…"],
      "actresses": [],
      "cover": null,
      "rating": null,
      "source": "missav",
      "url": null
    }
  ],
  "meta": {
    "sources": ["missav"],
    "scanned": 1,
    "latencyMs": 115
  },
  "basis": {
    "queries": ["JQJ-002", "JUR-851", "…"],
    "tags": ["featured-actress", "big-tits", "…"],
    "fallback": false
  }
}

ステータス:200、400、401、402、429。

/discover/stats

API:/discover/stats

ソース別のカタログ合計とタイムスタンプです。パラメータなし。

料金: 1,000 コールあたり $0.40 の定額。

件数はインデックスのドキュメント数なので、2つのソースにある作品は2回数えます。asOf は読み取り 時刻です。公開 GET /stats はキー不要で1日キャッシュされますが、報告するのは プロバイダー件数です:FANZA と DMM が分かれ、合計なし。

curl -s 'https://api.javinfo.dev/discover/stats' \
  -H "x-javinfo-key: jvi_your_key_here"
{
  "total": 3980531,
  "sources": {
    "fanza": 1759469,
    "javdatabase": 505464,
    "javlibrary": 430950,
    "javbus": 663879,
    "missav": 519017,
    "idols": 101752
  },
  "asOf": "2026-11-06T18:30:56.778Z"
}

ステータス:200、401、402、429。

エラー

入力はハンドラー前に検証されます。不正なパラメータは 400 で、code: "BAD_REQUEST"、 message: "Input validation failed"、パラメータを示す issues 配列付きです。この API は 422 を 返しません。範囲外も型違いも 400 です:range は日数なので range=7 は通り、 range=week は issues[].path が ["range"] の 400 になります。最大値50を超える /discover/trending?num=500 のボディは次のとおりです:

{
  "defined": false,
  "code": "BAD_REQUEST",
  "status": 400,
  "message": "Input validation failed",
  "data": {
    "issues": [
      {
        "origin": "number",
        "code": "too_big",
        "maximum": 50,
        "inclusive": true,
        "path": ["num"],
        "message": "Too big: expected number to be <=50"
      }
    ]
  }
}

キーなしと拒否ではボディが異なります。キーがまったくない場合:

{
  "defined": false,
  "code": "UNAUTHORIZED",
  "status": 401,
  "message": "Unauthorized"
}

ゲートが受け付けないキー:

{ "error": "invalid api key" }

クレジット不足。課金はなく、Retry-After は1時間:

{
  "defined": false,
  "code": "PAYMENT_REQUIRED",
  "status": 402,
  "message": "insufficient balance"
}

アカウントの1分あたりの上限を超過。Retry-After は秒単位です:

{ "error": "rate limit exceeded" }

404 は上に示した /discover/similar 固有です。他の探索エンドポイントは返しません。

無料になるもの

課金は新しい 200 だけです。以下は無料:

  • キャッシュヒット。X-Cache: HIT が付き、クレジットは消費されません。/discover/random は キャッシュがないためヒットしません。
  • すべての 4xx。失敗したリクエストは課金されません。
  • 縮退した回答。上流のインデックス読み取りが失敗すると、API は手元のもので応答し、X-Degraded に 失敗数を設定し、課金もキャッシュもしません。レスポンスが薄いときはこのヘッダーを確認。

X-Balance-Remaining は呼び出し後に残るクレジットです。

このページの内容