Chuyển đến nội dung
javinfo

Endpoint khám phá

Duyệt danh mục không cần mã khởi đầu: thịnh hành, tựa tương tự, phát hành theo ngày, studio, series, thể loại và lựa chọn ngẫu nhiên.

Mười ba endpoint GET trên danh mục, không phải một mã. Tất cả dùng x-javinfo-key và đều tính phí. Hầu hết trả về meta: nguồn trả lời, số tài liệu đã quét, thời gian gọi.

Giá cơ bản $0.40 mỗi 1.000 lần gọi. Với num, giá tăng theo kích thước trang khi vượt 10: num=20 tốn $0.80. Công thức ở Giới hạn tốc độ & thanh toán.

EndpointDùng đểMỗi 1.000 lần gọi ở mức mặc định
/discover/trendingBản phát hành gần đây, có xếp hạng$0.80 (num=20)
/discover/underratedTựa đề cũ có đánh giá cao$0.80 (num=20)
/discover/suggestionGợi ý tự động cho mã, diễn viên, thẻ và studio$0.40 (num=8)
/discover/similarTựa đề giống một mã gốc$0.48 (num=12)
/discover/duelCặp A/B theo seed$0.40
/discover/calendarPhát hành gom theo ngày$0.40
/discover/tagsSố lượng thẻ trong một khoảng thời gian$1.20 (num=30)
/discover/studiosDanh sách studio, hoặc danh mục của một studio$1.20 / $0.80
/discover/seriesMột series, mới nhất trước$0.80 (num=20)
/discover/genresSố lượng thể loại cho toàn bộ danh mục$2.40 (num=60)
/discover/randomTựa đề ngẫu nhiên khớp bộ lọc$0.40 (num=10)
/discover/for-youLựa chọn từ lịch sử tìm kiếm của chính tài khoản$0.80 (num=20)
/discover/statsTổng số danh mục theo từng nguồn$0.40

Thẻ tựa đề

Mọi tựa đề trong phản hồi khám phá đều có dạng này. Một thẻ dùng cho tất cả endpoint bên dưới.

TrườngKiểuGhi chú
codestringMã tựa đề đã chuẩn hóa, ví dụ ABP-002
titlestring | nullChỉ tiêu đề tiếng Anh; null khi nguồn không có. Hàng javbus thường có title: null với tiêu đề tiếng Nhật trong titleJa
titleJastring | nullTiêu đề tiếng Nhật
releaseDatestring | nullYYYY-MM-DD
runtimeMinsnumber | nullSố phút
makerstring | nullStudio / nhà sản xuất
labelstring | nullNhãn
seriesstring | nullSeries, đúng như nguồn ghi
categoriesstring[]Thẻ thể loại
actressesstring[]Dàn diễn viên, tên tiếng Anh khi nguồn có
coverstring | nullURL ảnh bìa
ratingnumber | nullchỉ javlibrary, 1–10; null ở mọi nguồn khác
sourcestringNguồn đã cung cấp thẻ này: fanza, javdatabase, javlibrary, javbus hoặc missav
urlstring | nullTrang trên site nguồn, khi nguồn có lưu

Các thẻ gộp theo code; chỉ mục đầu theo thứ tự ưu tiên giữ metadata. rating là ngoại lệ: chỉ javlibrary có đánh giá, nên thẻ từ nguồn khác là null kể cả khi tựa đề được đánh giá ở nơi khác.

meta mô tả lần gọi:

TrườngKiểuGhi chú
sourcesstring[]Tên các nguồn công khai đã trả lời bằng kết quả khớp hoặc số facet. Mảng rỗng thường nghĩa là không truy cập được danh mục
scannednumberSố tài liệu đã đọc trước khi xếp hạng hoặc lọc. 0 ở các endpoint chỉ trả facet
latencyMsnumberThời gian phía máy chủ

Ví dụ đã rút gọn: mục đầu, "…" cho mục lặp, tiêu đề dài bị cắt. Giá trị còn lại từ phản hồi thật.

/discover/trending

API: /discover/trending

Bản phát hành gần đây xếp theo chất lượng và ngày. Cho trang chủ hoặc dải "mới trong tuần này".

Tham sốKiểuMặc địnhPhạm vi
rangeinteger301–365, số ngày nhìn lại
numinteger201–50
genrestringkhông cóTên thể loại chính xác

Giá: $0.80 mỗi 1.000 ở num=20 mặc định; $0.40 khi num ≤ 10.

Handler đọc các bản phát hành trong range ngày gần nhất, mới nhất trước, rồi xếp lại theo độ mới, đánh giá, gallery, bản xem trước và dàn diễn viên. Không có cận trên ngày, nên tựa đề công bố với ngày phát hành tương lai cũng lọt vào.

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
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/underrated

API: /discover/underrated

Tựa đề đủ cũ để bị bỏ lỡ, xếp theo đánh giá nhiều hơn ngày. Cho kệ "bị lãng quên".

Tham sốKiểuMặc địnhPhạm vi
minAgeDaysinteger36530–3650, số ngày tuổi tối thiểu
numinteger201–50

Giá: $0.80 mỗi 1.000 ở num=20 mặc định; $0.40 khi num ≤ 10.

Chỉ javlibrary có đánh giá, nên nhóm ứng viên chỉ từ chỉ mục đó: tám lát 30 ngày ngẫu nhiên trên 12 năm trước mốc. Tựa đề không có đánh giá bị loại; điểm ưu tiên bản ghi cũ hơn, điểm cao hơn, đầy đủ hơn.

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
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/suggestion

API: /discover/suggestion

Gợi ý tự động cho ô tìm kiếm: mã, diễn viên, thẻ, studio trộn lẫn, khử trùng lặp, mã đứng đầu.

Tham sốKiểuMặc địnhPhạm vi
qstringbắt buộcít nhất 1 ký tự
numinteger81–20

Giá: $0.40 mỗi 1.000 ở num=8; $0.80 khi num=20.

Mỗi mục cho biết nó là gì và hiển thị gì bên cạnh:

kindvaluelabelextra
codeMã tựa đềCùng mãTiêu đề tiếng Anh, hoặc tiếng Nhật khi không có tiêu đề tiếng Anh
idolid diễn viênTênURL hình ảnh
tagslug thẻCùng slugSố lượng
studioTên studioCùng tênSố lượng

extra có thể null. Tìm kiếm dùng khớp tiền tố như các chỉ mục phim; không có chỉ mục n-gram. Gợi ý dựng theo loại rồi cắt còn 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"
    },
    "…"
  ]
}

Thiếu q sẽ bị từ chối trước khi handler chạy:

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"
      }
    ]
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/similar

API: /discover/similar

"Giống cái này hơn." Một mã, các lân cận đã xếp hạng, thẻ gốc và điểm số. Cho trang chi tiết.

Tham sốKiểuMặc địnhPhạm vi
qstringbắt buộcMột mã tựa đề
numinteger121–50

Giá: $0.48 mỗi 1.000 ở num=12; $0.40 khi num ≤ 10.

Mã gốc được phân giải qua các chỉ mục phim. Ứng viên chia sẻ diễn viên đầu hoặc một trong ba thẻ đầu, rồi xếp theo dàn diễn viên, thẻ, nhà sản xuất, nhãn, series, thời lượng và ngày phát hành. Mã gốc bị loại khỏi results; scores khớp results theo mã, thang 0–1, ba chữ số thập phân.

Một mã không chỉ mục nào biết là 404, không phải 200 rỗng. Lỗi gõ không bao giờ bị tính phí.

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 },
    "…"
  ]
}

Cùng yêu cầu với một mã không tồn tại:

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\""
}

Trạng thái: 200, 400, 401, 402, 404, 429.

/discover/duel

API: /discover/duel

Cặp A/B cho trò "chọn cái nào". Cùng seed cho mọi người thấy cùng hai thẻ.

Tham sốKiểuMặc địnhPhạm vi
seedstringngày UTC hôm naychuỗi bất kỳ
genrestringkhông cóTên thể loại chính xác
performerstringkhông cóTên diễn viên chính xác

Giá: $0.40 mỗi 1.000, cố định. Không có nút chỉnh kích thước trang.

Nhóm là 40 tựa đề mới nhất từ DMM + FANZA, javdatabase và javlibrary, khử trùng lặp theo mã, đã phát hành và có dàn diễn viên. genre và performer thu hẹp. PRNG có seed chọn hai và sắp theo mã, nên a và b ở cùng phía với mọi người gọi. Nhóm đổi khi có bản phát hành mới, nên seed chỉ ổn định trong cửa sổ đó. a và b có thể null nếu ít hơn hai ứng viên.

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/"
  }
}

Trạng thái: 200, 401, 402, 429.

/discover/calendar

API: /discover/calendar

Phát hành giữa hai ngày, gom theo ngày. Cho giao diện lịch.

Tham sốKiểuMặc địnhPhạm vi
fromstringhôm nayYYYY-MM-DD
tostringhôm nay + 30 ngàyYYYY-MM-DD

Giá: $0.40 mỗi 1.000, cố định. Mỗi lần gọi trong vòng lặp bên dưới tính riêng.

Cả hai ngày đều bao gồm. Hai giá trị độc lập: chỉ from vẫn kết thúc 30 ngày kể từ hôm nay, nên truyền cả hai cho khoảng trong quá khứ. Ngày trống bị bỏ qua; nhóm tăng dần. Mỗi bản phát hành là một thẻ đầy đủ.

Khoảng dài dừng sớm

Mỗi nguồn trả tối đa 1.000 dòng mỗi lần gọi, nên khoảng nhiều bản phát hành đầy trong khoảng 5 ngày. Chỉ ngày trọn vẹn được trả về, và endpoint cho biết đã dừng ở đâu:

TrườngÝ nghĩa
throughNgày cuối cùng được bao trọn, YYYY-MM-DD. Bằng to trừ khi câu trả lời bị cắt.
truncatedtrue khi các ngày sau through bị cắt.

from=2026-11-01&to=2026-11-14 là quá dài cho một lần gọi:

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
  }
}

Phản hồi đó có 1,011 tựa từ 1 đến 5 tháng 11. Khoảng vừa đủ trả về nguyên vẹn: from=2026-11-01&to=2026-11-03 trả "through": "2026-11-03" và "truncated": false.

Phần còn lại: gọi lại với from là ngày sau through, lặp đến khi truncated là false. Lần gọi thứ hai là 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
  }
}

Vòng lặp tương tự bằng mã:

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);
}

Nếu riêng một ngày vượt giới hạn, ngày đó trả về một phần, through là ngày đó, và vòng lặp sang ngày kế.

Trạng thái: 200, 400, 401, 402, 429.

/discover/tags

API: /discover/tags

Số lượng thẻ trong khoảng gần đây, cao nhất trước. Cho khối "thẻ thịnh hành".

Tham sốKiểuMặc địnhPhạm vi
rangeinteger301–365, số ngày nhìn lại
numinteger301–100

Giá: $1.20 mỗi 1.000 ở num=30; $0.40 khi num ≤ 10.

Số lượng từ facet DMM + FANZA và javdatabase. Thẻ được chuẩn hóa trước khi đếm, nên các cách viết gộp thành một. Giá trị là slug, không phải tên hiển thị.

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
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/studios

API: /discover/studios

Một route, hai dạng. Không có q: danh sách studio xếp theo sản lượng trong range. Có q: danh mục của studio đó, mới nhất trước. kind cho biết dạng: directory hoặc catalogue.

Tham sốKiểuMặc địnhPhạm vi
qstringkhông cóTên studio chính xác; chuyển sang chế độ danh mục
rangeinteger36530–3650, chỉ ở chế độ danh sách
numinteger30 danh sách, 20 danh mụcdanh sách 1–100; danh mục tối đa 50
pageinteger1từ 1 trở lên, chỉ ở chế độ danh mục

Giá: danh sách $1.20 mỗi 1.000 ở num=30; danh mục $0.80 ở num=20. Danh mục giới hạn num ở 50, nên tối đa $2.00.

range bị bỏ qua khi có q, page khi không có. Ở chế độ danh mục, total là số tựa ước tính của studio: phân trang theo đó.

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
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/series

API: /discover/series

Danh mục một series, mới nhất trước. Để liệt kê phần còn lại khi người gọi mở một tựa.

Tham sốKiểuMặc địnhPhạm vi
qstringbắt buộcTên series chính xác
numinteger201–50
pageinteger1từ 1 trở lên

Giá: $0.80 mỗi 1.000 ở num=20 mặc định; $0.40 khi num ≤ 10.

q khớp chính xác tên series trên DMM + FANZA, không phải tìm kiếm. Truyền đúng chuỗi danh mục lưu, đọc được từ series của bất kỳ tựa nào. Tên một phần hoặc cách viết khác trả 200 với count: 0, không phải 404. total là số tựa ước tính trong series.

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
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/genres

API: /discover/genres

Phân loại thể loại kèm số lượng toàn danh mục. Để tạo menu lọc.

Tham sốKiểuMặc địnhPhạm vi
numinteger601–200

Giá: $2.40 mỗi 1.000 ở num=60; $0.40 khi num ≤ 10; $8.00 khi num=200.

Ở đây là nhãn hiển thị (Featured Actress), không phải slug như /discover/tags. Số lượng chỉ từ DMM + FANZA; nguồn khác không cộng vào.

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
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/random

API: /discover/random

Tựa đề ngẫu nhiên khớp bộ lọc tùy chọn. Cho nút "làm tôi bất ngờ".

Tham sốKiểuMặc địnhPhạm vi
genrestringkhông cóTên thể loại chính xác
performerstringkhông cóTên diễn viên chính xác
studiostringkhông cóTên studio chính xác
censoredstringkhông cócensored hoặc uncensored
numinteger101–50

Giá: $0.40 mỗi 1.000 ở num=10; $2.00 khi num=50.

Bộ lọc kết hợp bằng AND. Cách rút không quét đều: handler đọc năm tháng ngẫu nhiên, lấy offset trong mỗi tháng, xáo trộn nhóm và bù khi bộ lọc hẹp làm thiếu. Các lần gọi liên tiếp trả tựa không liên quan.

censored chỉ đổi khi đặt uncensored: lúc đó đọc mục uncensored của javbus thay vì DMM + FANZA. Truyền censored giống như bỏ qua. Không có bộ nhớ đệm, nên mỗi lần gọi lấy mẫu lại. Phản hồi không có meta và 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
    },
    "…"
  ]
}

Và với bộ lọc uncensored:

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"
    },
    "…"
  ]
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/for-you

API: /discover/for-you

Gợi ý từ lịch sử tìm kiếm của tài khoản. Hai khóa cùng tài khoản chia sẻ lịch sử: lịch sử theo người dùng, không theo khóa.

Tham sốKiểuMặc địnhPhạm vi
numinteger201–50
lookbackinteger201–100, số lần tìm kiếm gần đây cần đọc

Giá: $0.80 mỗi 1.000 lần gọi ở mức mặc định num=20; $0.40 khi num ≤ 10.

Chỉ các lần gọi thành công tới /movie, /query và /idols được tính. Handler đọc lookback dòng gần nhất, giữ tối đa năm truy vấn khác nhau, lấy thẻ của kết quả hàng đầu, rồi chọn tựa gần đây chia sẻ các thẻ đó. Điểm thịnh hành của /discover/trending sắp thứ tự.

basis giải thích lựa chọn để hiển thị: truy vấn đã dùng, thẻ rút ra và fallback. Chưa có lịch sử thì fallback là true và câu trả lời là tựa mới nhất trong 30 ngày.

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
  }
}

Trạng thái: 200, 400, 401, 402, 429.

/discover/stats

API: /discover/stats

Tổng theo nguồn, kèm dấu thời gian. Không có tham số.

Giá: $0.40 mỗi 1.000, cố định.

Số lượng là tài liệu chỉ mục: tựa trên hai nguồn được đếm hai lần. asOf là thời điểm đọc. GET /stats công khai không cần khóa và cache một ngày, nhưng báo số theo nhà cung cấp: FANZA và DMM tách riêng, không có tổng.

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"
}

Trạng thái: 200, 401, 402, 429.

Lỗi

Đầu vào được kiểm tra trước handler. Tham số sai là 400 với code: "BAD_REQUEST", message: "Input validation failed" và mảng issues nêu tên tham số. Bề mặt này không bao giờ trả 422: ngoài phạm vi cũng 400, sai kiểu cũng vậy. range là số ngày, nên range=7 chạy còn range=week là 400 với issues[].path ["range"]. Nội dung từ /discover/trending?num=500, vượt tối đa 50:

{
  "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"
      }
    ]
  }
}

Khóa thiếu và khóa bị từ chối khác nội dung. Không có khóa:

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

Khóa mà cổng không chấp nhận:

{ "error": "invalid api key" }

Không đủ tín dụng. Không tính phí; Retry-After một giờ:

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

Vượt giới hạn mỗi phút của tài khoản. Retry-After tính bằng giây:

{ "error": "rate limit exceeded" }

404 chỉ có ở /discover/similar, như trên. Endpoint khám phá khác không trả về nó.

Những gì miễn phí

Chỉ 200 mới bị tính phí. Miễn phí:

  • Trúng bộ nhớ đệm: X-Cache: HIT, không trừ tín dụng. /discover/random không có bộ nhớ đệm.
  • Mọi 4xx. Yêu cầu thất bại không bao giờ bị tính phí.
  • Câu trả lời suy giảm: đọc chỉ mục phía trên thất bại, API phục vụ những gì có, đặt X-Degraded thành số lượt thất bại và không tính phí hay cache. Kiểm tra nếu phản hồi có vẻ mỏng.

X-Balance-Remaining là tín dụng còn lại sau lần gọi.

Trong trang này