本文へスキップ
javinfo

フィルタリング

/query の結果をフィルター・ソート・ページングし、プロバイダー別の対応機能を確認する。

フィルタリングは /query のみ。単一結果の /movie と /random はフィルターを受け付けません。


1. クイックスタート

/query は q に加えて 4 つの任意入力を受け付けます:filter、sort、page、num (ページサイズ)。GET と POST の両方で動作します。

KEY="jvi_..."   # your API key, sent as the x-javinfo-key header

# POST — genre + runtime filter, newest first
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{
        "q": "ema kisaki",
        "filter": { "genre": "Big Tits", "runtimeMin": 120 },
        "sort": "release",
        "page": 1
      }'

# GET — same thing, flattened into query params
curl -s "https://api.javinfo.dev/query?q=ema%20kisaki&filter[genre]=Big%20Tits&filter[runtimeMin]=120&sort=release" \
  -H "x-javinfo-key: $KEY"

フィルターがあれば q は省略可能。キーワードなしでカテゴリー全体を閲覧できます:

# All "creampie" titles, no search term
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{ "filter": { "genre": "creampie" } }'

q もフィルターもない → 400("provide a search query or at least one filter")。

デフォルト num=10 で 1,000 コールあたり $0.40、ページサイズに比例 (料金)。フィルターは料金を変えません。結果なし(200 と count: 0)やエラーは無料です。


2. 入力パラメーター

filter

オブジェクト。全フィールド任意。必要なものだけ設定します。

フィールド型意味
genre文字列カテゴリー / ジャンル
actress文字列女優(出演者)
maker文字列メーカー / スタジオ
series文字列シリーズ
director文字列監督
label文字列レーベル
actor文字列男優
censored"censored" | "uncensored"モザイクの状態
runtimeMin数値(分)最短の再生時間
runtimeMax数値(分)最長の再生時間
releaseAfter文字列 YYYY-MM-DDこの日付以降に発売
releaseBefore文字列 YYYY-MM-DDこの日付以前に発売
availability"playable" | "magnets" | "subtitle" | "single"ストリーム / マグネット / 字幕あり / 単一作品

sort

relevance(デフォルト)、release、update、rating、views。

  • relevance — テキストの関連度。デフォルト。
  • release — 発売日の新しい順。
  • update — 最近追加・更新された順。
  • rating — 評価の高い順。
  • views — 予約済み。どのプロバイダーも未対応(常に拒否)。

page

1 始まりの整数。省略時は 1 ページ目。ページサイズは num。

深いページングの上限。 fanza/dmm のインデックスは結果セットを 1,000 件で打ち切る ため、page × num は 1000 以下に。num: 50 なら 20 ページ目が最後です。それ以上は エラーではなく 404(結果なし)。さらに掘るには filter で絞り込みます。

num

1 ページの結果数。整数、デフォルト 10、最大 50。超過は拒否ではなくクランプ。 num < 1 → 400。missav は自身の検索件数が上限。他はページング対応。page の オフセットは num から算出(num=10 の 2 ページ目は最初の 10 件をスキップ)。

数値入力は両メソッドで変換され、page やネストした filter[...] も含みます。 filter[runtimeMin]=120 付きの GET も機能します。


3. プロバイダー対応マトリクス

/query は複数プロバイダーを検索し、すべてが全フィルターに対応するわけではありません。 クエリを組み立てる前に表を読んでください。

プロバイダーと ID:query:fanza、query:dmm(DMM + FANZA の2つのストアフロント)、query:javdatabase、query:sextb、 query:javlibrary、query:javbus、query:missav、query:javdb。

機能fanza / dmmmissavjavdbjavdatabasesextbjavlibraryjavbus
genre✅✅❌✅✅✅✅
actress✅✅❌✅✅✅✅
maker✅✅❌✅✅✅✅
series✅✅❌✅✅✅✅
director✅✅❌✅✅✅✅
label✅✅❌✅✅✅✅
actor✅✅❌✅✅✅❌
censored: censored✅✅✅✅✅✅✅
censored: uncensored❌✅✅✅✅❌✅
runtimeMin / runtimeMax✅✅❌✅✅✅✅
releaseAfter / releaseBefore✅✅❌✅✅✅✅
availability❌❌✅❌❌❌❌
複数フィルターの組み合わせ任意の組み合わせ任意の組み合わせ❌ なし任意の組み合わせ任意の組み合わせ任意の組み合わせ任意の組み合わせ
sort: relevance✅✅✅✅✅✅✅
sort: release✅❌✅✅✅✅✅
sort: update❌❌✅❌❌❌❌
sort: rating❌❌✅❌❌❌❌
sort: views❌❌❌❌❌❌❌
page✅❌(常に 1 ページ目)✅✅✅✅✅

凡例:✅ 対応 · ❌ 非対応。

補足:

  • fanza/dmm はモザイクありのみ。 uncensored で除外されます。
  • javdb にフィールド単位のフィルターはありません。 粗いモザイク有無、availability、 充実したソートのみ。名前付き次元を要求すると除外されます。
  • javlibrary はモザイクありのみ。 uncensored で除外されます。
  • javbus に actor 次元はありません。 filter.actor を固定すると 422。ソートは relevance と release のみで、sort: rating は拒否。
  • javbus は日本語名と英語名を受け付けます。 出演者・メーカー・ジャンルは両方の フィールドを読むため、三上悠亜 も Yua Mikami も一致。ジャンルは英語名で、日本語名も 併記。
  • javdatabase は英語のみ。 コーパスは英語サイトそのまま。日本語クエリ(巨乳)は 一致せず、スキップされます。ローマ字か英語を渡してください。
  • missav は page と sort を無視。 常に 1 ページ目を関連度順で返します。
  • javdatabase、sextb、javlibrary、javbus は自前のカタログ。 フィルタリングとページングが 高速かつ完全で、上流の上限もありません。

4. プロバイダー選択の仕組み(ウォーターフォール)

/query はプロバイダーを順番に試し、最初の有効な結果を採用します:

FANZA → DMM → javdatabase → sextb → javlibrary → javbus → missav → javdb

最初の 7 つ(missav まで)は自前のインデックス。javdb はライブ取得のフォールバックです。

満たせないフィルターの扱いは、ピン留めの有無で変わります。

ピン留めなし(デフォルト)— スキップして次へ

providers を送らない場合、全プロバイダーが候補。完全に満たせないものは黙って スキップされ、次へ進みます。リクエスト全体を満たす最初のプロバイダーが応答します。

# sort=rating is javdb-only → every other provider is skipped, javdb answers.
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{ "q": "ABP", "sort": "rating" }'
# → { "source": "javdb", ... }

どのプロバイダーも満たせない → 理由付きの 422。

ピン留めあり — ハードエラー

providers で特定のプロバイダーを強制。満たせない場合は 422 で失敗し、message に 理由。黙って破棄されることはありません。

# Pin javdb, ask for a genre it can't filter → 422
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{ "q": "x", "providers": ["query:javdb"], "filter": { "genre": "creampie" } }'
# → 422 { "message": "does not support filter \"genre\"" }

# Pin fanza, ask for uncensored → 422
#   → { "message": "does not support uncensored content" }

providers はカンマ区切りリストか配列。query: プレフィックスは任意です: "providers": ["fanza","missav"] または "providers": "javdb"。


5. 値はそのまま透過

v1 のパススルー:フィルター値はプロバイダーのバックエンドにそのまま送られます。 共有の分類体系も、あいまい検索もありません。あるプロバイダーで効く値が別のプロバイダーでは 一致しないことはよくあり、メタデータの保存方法の違いによります。

考慮すべき点:

  • ジャンルはプロバイダーごとに異なります。

    • fanza/dmm、javdatabase、sextb は英語("Big Tits"、"creampie")。
    • missav は日本語("巨乳"、"フィスト")。英語では何も返りません。
    • javbus は両方を受け付け、両方に照合します。
  • 名前は完全一致。 部分文字列ではありません。DMM + FANZA のインデックスは別名を名前 に組み込みます(例:"Ema Kisaki (HARUKI, Haruki Kato)")。actress: "Ema Kisaki" では ゼロ件。保存された完全な文字列が必要です。(v1 の既知の粗さ。)

  • censored の意味はソースごとに違います。 missav にフラグはありません。API が censored を主流のモザイク作品、uncensored をそれ以外すべて(Caribbeancom、 10musume、Tokyo-Hot、1pondo、FC2、無修正流出など)に割り当てます。

  • javdatabase は英語のみ。 英語かローマ字を渡してください。日本語の q や値は一致 せず、スキップされます。

一致しなくても、件数が減るか 0 件になるだけです。ピン留めなしならウォーターフォールは 続行し、エラーにはなりません。


6. レスポンスの構造

ボディは採用プロバイダーの結果セットです:

{
  "q": "ema kisaki",        // your query, echoed
  "source": "fanza",        // which provider answered
  "count": 10,              // page size (default 10, set by num)
  "results": [
    {
      "id": "118abp00999",          // stable id (content id or dvd id)
      "dvdId": "ABP-999",
      "title": "…",
      "cover": "https://…/…ps.jpg",
      "releaseDate": "2019-01-04",
      "extra": {                    // provider-specific, keys vary by source
        "runtimeMins": 130,
        "maker": "…",
        "categories": ["Big Tits", "…"],
        "actresses": [{ "name": "…", "image": "https://…|null" }],
        "duration": 7800,           // missav (seconds)
        "genres": ["巨乳"],          // missav
        "studio": "…", "url": "…"   // javdatabase
        // …
      }
    }
  ]
}

extra はスーパーセットで、応答プロバイダーのキーだけを含みます。コアフィールド(id、 dvdId、title、cover、releaseDate)は全プロバイダーで共通です。

レスポンスヘッダー:X-Response-Time-Ms、X-Balance-Remaining。


7. プロバイダー別チートシート

fanza / dmm(DMM + FANZA)— 最も充実した構造化フィルター。

  • 全名前付き次元を自由に組み合わせ。英語のジャンルと名前。
  • runtimeMin/runtimeMax は分単位。sort: release。ページング。
  • モザイクありのみ。uncensored、availability なし。
# Big-tits titles over 120 min, newest first
-d '{ "filter": { "genre": "Big Tits", "runtimeMin": 120 }, "sort": "release" }'

名前で検索。 英語タイトルは 2022 年半ばまでで、以降は日本語のみ。出演者名 (ローマ字)は別にインデックスされるため、q に "Yua Mikami" と入れれば新作にも 届きます。"sort": "release" で新しい順に。デフォルトの relevance では、英語タイトル に名前を含む古い作品が上位に来ます。

# Newest Yua Mikami titles first
-d '{ "q": "Yua Mikami", "providers": ["fanza"], "sort": "release" }'
# Exact-match browse (see §5 on stored name strings)
-d '{ "filter": { "actress": "Yua Mikami" }, "sort": "release" }'

missav — 最も広いフィルター範囲、関連度順のみ。

  • 全名前付き次元(ジャンルは日本語)、再生時間と発売日の範囲、censored 両方向。
  • sort なし、実質ページングなし(1 ページ目のみ)、availability なし。
# Uncensored titles matching "caribbean"
-d '{ "q": "caribbean", "filter": { "censored": "uncensored" } }'
# Japanese genre browse
-d '{ "q": "SSIS", "filter": { "genre": "巨乳" } }'

javdb — フィールドフィルターなし、最高のソートと availability。

  • censored(両方向)、availability、sort(relevance/release/update/rating)のみ。
  • ページング。genre/actress/maker なし。
# Playable, highest rated
-d '{ "q": "ABP", "filter": { "availability": "playable" }, "sort": "rating" }'

javdatabase — 完全な英語カタログ。有碼と無修正、全名前付き次元、両方の範囲。英語の値 のみ(日本語 q はスキップ)。sort: release。ページング。availability なし。

# Creampie titles from S1
-d '{ "filter": { "genre": "creampie", "maker": "S1 NO.1 STYLE" } }'

sextb — ストリーム込み、自前カタログ。全名前付き次元、両方の範囲、censored 両方向。 sort: release。ページング。availability なし。

javlibrary — モザイクありのみ、自前カタログ。全名前付き次元、両方の範囲。 sort: release。ページング。availability なし。

javbus — トレントと広い日本語カタログ、自前インデックス。actor を除く全名前付き次元、 両方の範囲、censored 両方向。出演者・メーカー・ジャンルは日本語か英語。 sort: relevance / release。ページング。availability なし。トレントは /movie の extra.downloadLinks で返ります。

# Japanese actress, newest first (POST)
-d '{ "providers": ["javbus"], "filter": { "actress": "三上悠亜" }, "sort": "release", "num": 2 }'

# Japanese genre + runtime, over GET
curl -s 'https://api.javinfo.dev/query?providers=javbus&filter%5Bgenre%5D=%E5%B7%A8%E4%B9%B3&filter%5BruntimeMin%5D=120&num=2' \
  -H "x-javinfo-key: $KEY"

# Uncensored releases since 2026, newest first (POST)
-d '{ "providers": ["javbus"], "filter": { "censored": "uncensored", "releaseAfter": "2026-01-01" }, "sort": "release", "num": 2 }'

javbus を固定してできないことを要求 → 本物の 422:

# No male-actor dimension → 422
-d '{ "providers": ["javbus"], "filter": { "actor": "Shimiken" } }'
# → { "defined": false, "code": "BAD_REQUEST", "status": 422, "message": "does not support filter \"actor\"" }

# No rating sort → 422
-d '{ "providers": ["javbus"], "q": "ABP", "sort": "rating" }'
# → { "defined": false, "code": "BAD_REQUEST", "status": 422, "message": "does not support sort \"rating\"" }

結果は §6 の標準 /query ボディ。/movie のレコードとトレントは javbus の節へ。


8. v1 の制限

  • プロバイダー間の値の正規化。 統一語彙はなく、各プロバイダーの方言(英語 vs 日本語、 完全一致)を使います。
  • sort: views — 予約済みで未実装。
  • 1 次元 1 値。 genre: ["a","b"] は不可。
  • javdb の範囲指定。 他はすべて対応。
  • javdb 以外の availability。
  • javdb の任意フィルター組み合わせ。 フィールドフィルターがありません。
  • javbus の actor。 男優次元がありません。
  • javbus の sort: update、rating、views。 relevance と release のみ。
  • missav のページングとソート。
  • fanza/dmm の 1,000 件超えページング(page × num ≤ 1000)。
  • /movie や /random のフィルタリング。

不可能な組み合わせ:ピン留めあり → 理由付き 422、なし → スキップして次へ。

次へ

このページの内容