跳到正文
javinfo

发现端点

无需番号即可浏览目录:热门、相似影片、按天发行、工作室、系列、类型和随机推荐。

十三个 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.20 / $0.80
/discover/series单个系列,最新优先$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 | null仅 javlibrary,1–10;其他来源都是 null
sourcestring提供这张卡片的来源:fanza、javdatabase、javlibrary、javbus 或 missav
urlstring | null来源站点上的页面,来源存了才有

多个索引应答时,卡片按 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 天切片。无评分的先 丢弃;分数偏向更旧、评分更高、更完整的影片。

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

搜索框的输入联想。一次调用返回番号、演员、标签和工作室,去重后混排,番号在前。

参数类型默认值范围
qstring必填至少 1 个字符
numinteger81–20

价格: num=8 时每 1,000 次 $0.40;num=20 时 $0.80。

每个条目说明自己是什么、旁边显示什么:

kindvaluelabelextra
code番号同一个番号英文标题;没有英文标题时用日文标题
idol演员 id姓名图片 URL
tag标签 slug同一个 slug计数
studio工作室名同一个名字计数

extra 可以为空。搜索复用影片索引的前缀匹配,没有单独的 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

“更多类似的”。传入番号,返回排名邻居、种子卡片和分数。适合详情页。

参数类型默认值范围
qstring必填一个番号
numinteger121–50

价格: num=12 时每 1,000 次 $0.48;num ≤ 10 时 $0.40。

种子在各影片索引中解析。候选共享第一位演员或前三个标签之一,再按演员、标签、制作商、厂牌、 系列、时长和发行日期排名。种子不在 results 里;scores 按番号与 results 对齐,范围 0–1, 保留三位小数。

任何索引都不认识的番号是 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 让所有人看到同样的两张卡片。

参数类型默认值范围
seedstring今天的 UTC 日期任意字符串
genrestring无精确的类型名
performerstring无精确的演员名

价格: 每 1,000 次 $0.40,固定。没有页大小可调。

候选池是 DMM + FANZA、javdatabase、javlibrary 各自最新 40 部,按番号去重,只留已发行且有演员 的。genre 和 performer 收窄范围。带种子的 PRNG 挑两部并按番号排序,所有调用者的 a 和 b 都在同一侧。池随新片变化,种子只在该窗口内稳定。候选少于两个时 a 和 b 为空。

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

两个日期之间的发行,按天分组。适合日历。

参数类型默认值范围
fromstring今天YYYY-MM-DD
tostring今天 + 30 天YYYY-MM-DD

价格: 每 1,000 次 $0.40,固定。下面循环的每次调用都单独计费。

两个日期都包含。默认值独立:只设 from 也结束在 30 天后,查过去要两个都传。无发行的日期 省略,分组升序。每部影片都是完整卡片。

长区间会提前停止

每个来源每次最多返回 1,000 行,繁忙区间约 5 天就满。端点只返回完整的天,并说明停在哪里:

字段含义
through完整覆盖的最后一天,YYYY-MM-DD。除非答案被截断,否则等于 to。
truncated当 through 之后的天被截掉时为 true。

from=2026-11-01&to=2026-11-14 对一次调用来说太长了:

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。第二次 调用是 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);
}

如果单日就超过上限,那天部分返回,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 的分面。标签先规范化,拼写变体会合并。值是 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

一个路由,两种形状。无 q 返回按 range 内产量排名的工作室目录;有 q 返回该工作室的作品, 最新优先。kind 指明是哪种:directory 或 catalogue。

参数类型默认值范围
qstring无精确的工作室名;切换到作品模式
rangeinteger36530–3650,仅目录模式
numinteger目录 30,作品 20目录 1–100;作品上限 50
pageinteger1从 1 起,仅作品模式

价格: 目录 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

单个系列的作品,最新优先。调用者打开影片后,用它列出同系列其他条目。

参数类型默认值范围
qstring必填精确的系列名
numinteger201–50
pageinteger1从 1 起

价格: num=20 时每 1,000 次 $0.80;num ≤ 10 时 $0.40。

q 是 DMM + FANZA 索引上系列名的精确匹配,不是搜索。传入目录存储的字符串,可从任意影片的 series 读到。部分名称或不同拼写返回空的 200 和 count: 0,不是 404。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),不像 /discover/tags 返回 slug。计数只来自 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 组合。抽取不是均匀遍历:随机读五个月份,各取一个随机偏移,打乱候选池,筛得过窄 时补足。连续调用返回不相关影片,不是连续番号。

censored 只有设成 uncensored 才生效,此时读 javbus 的无码分区,而非 DMM + FANZA。传 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

按账户的搜索历史推荐。同一账户的两个密钥共享历史,因为历史按用户存储,不按密钥。

参数类型默认值范围
numinteger201–50
lookbackinteger201–100,读取最近多少次搜索

价格: num=20 时每 1,000 次 $0.80;num ≤ 10 时 $0.40。

只有成功的 /movie、/query 和 /idols 调用算历史。处理器读最近 lookback 行,留最多五个 不同查询,取头部命中的标签,再挑共享标签的近期影片。/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,固定。

计数是索引文档数,两个来源上的影片算两次。asOf 是读取时间。公开的 GET /stats 免密钥、缓存一天,但报告提供商计数: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 数组。这个接口从不返回 422:超范围是 400,类型不对也是 400。range 是天数,所以 range=7 可以,range=week 是 400,issues[].path 为 ["range"]。下面是 /discover/trending?num=500 的响应体,500 超过最大值 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"
      }
    ]
  }
}

缺密钥与被拒密钥的响应体不同。没有密钥:

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

网关不接受的密钥:

{ "error": "invalid api key" }

额度不足。不扣费,Retry-After 为一小时:

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

超过账户的每分钟上限。Retry-After 以秒为单位:

{ "error": "rate limit exceeded" }

404 只属于 /discover/similar,上面已展示。其他发现端点不返回它。

哪些是免费的

只有全新的 200 收费。以下免费:

  • 缓存命中。响应带 X-Cache: HIT,不扣额度。/discover/random 无缓存,永不命中。
  • 任何 4xx。失败的请求从不计费。
  • 降级的答案。上游索引读取失败时,API 用手头数据作答,把 X-Degraded 设为失败次数,不收费 也不缓存。响应偏少时检查该响应头。

X-Balance-Remaining 是调用后余额。

本页内容