본문으로 건너뛰기
javinfo

필터링

/query 결과를 필터링, 정렬, 페이지 매김하고 제공업체별 지원 기능을 확인하세요.

필터링은 **/query**에만 적용됩니다. 단일 결과 엔드포인트인 /movie와 /random은 필터를 받지 않습니다.


1. 빠른 시작

/query는 q 외에 네 가지 선택적 입력을 받습니다: 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이며 페이지 크기에 비례합니다 (요금). 필터는 가격을 바꾸지 않습니다. 결과 없음(count: 0인 200)과 오류는 무료입니다.


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

페이지당 결과 수. 정수, 기본값 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 스토어프론트), 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를 무시합니다. 항상 첫 페이지를 관련성 순으로 반환합니다.
  • javdatabase, sextb, javlibrary, javbus는 자체 카탈로그. 필터링과 페이지 매김이 빠르고 완전하며 상위 상한이 없습니다.

4. 제공업체 선택 작동 방식 (워터폴)

/query는 제공업체를 순서대로 시도하며 첫 번째 유효한 결과를 채택합니다:

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

처음 일곱 개(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로 특정 제공업체를 강제합니다. 충족할 수 없으면 message에 이유를 담아 **422**로 실패하며, 조용히 삭제되지 않습니다.

# 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"로 필터링하면 0행입니다. 저장된 전체 문자열이 필요합니다. (알려진 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 — 예약됨, 미구현.
  • 차원당 다중 값. 필드당 하나의 값(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; 고정 안 함 → 건너뛰고 다음 시도.

다음

  • API 참조: /query의 모든 필터 매개변수와 라이브 플레이그라운드.
  • 오류: 400과 422 사례.

이 페이지의 내용