AdultDataLink (ADL) is gone. In October its author posted a shutdown notice on r/SaaS and published the code as an archived, MIT-licensed repo. By the author’s own account the hosted API had been down since the end of April.
We read that code and rebuilt its best analytics and discovery ideas for JAV, on javinfo’s own data. ADL scraped about 20 western tube and media sites. javinfo is JAV only, so it’s a different product, and if your app needs data from those sites you won’t find it here. The ADL repo is the place to start for that.
If you liked ADL’s performer analytics, trending and recommendations and you work with JAV, most of those ideas now have an endpoint here. 0.7.0 also adds /resolve and a javbus source, which have nothing to do with ADL. Both are covered below.
What we took from ADL, and where it lives now
We read ADL’s code and re-implemented the ideas on our data. We did not copy code. Every ADL row in this table comes from its public repo; the right column is what we shipped.
ADL (services/engine) |
javinfo |
|---|---|
Performer OHLC “stock” candles (/pornstar-calculation/fetch-pornstar-ohlc-data) |
GET /analytics/idols/ohlc |
Top 50 daily and weekly gainers (/fetch-top-50-daily-gain, /fetch-top-50-weekly-gain) |
GET /analytics/leaderboard, metric=momentum |
| Performer information | GET /analytics/idols/stats and /idols |
Keyword trends (/keywords) |
Closest match: /discover/tags and /analytics/market |
Personalized search (/machine-learning/search) |
GET /discover/for-you |
The matches are by idea, not by output. ADL’s candles came from data it scraped off tube sites. Ours are built from release counts, because that is what a JAV catalog can measure. ADL tracked keyword performance. Ours counts tags and genre movers over a time window. ADL keyed personalization off the visitor’s IP and headers; /discover/for-you uses your account’s own search history.
Not planned: the tube-site scrapers, scraping projects, video tools, YOLO annotation and the Reddit routes.
Discovery
The /discover/* endpoints help you find titles when you don’t have a code.
/discover/trendingranks recent releases./discover/underratedreturns well-rated older titles./discover/similartakes one code and returns titles like it./discover/suggestionis typeahead across codes, performers, tags and studios./discover/for-youpicks from your account’s recent searches./discover/duelreturns a seeded A/B pair./discover/calendarbuckets releases by day./discover/tags,/studios,/seriesand/genresare the browse and count endpoints./discover/randomand/discover/statsround it out.
The calendar is the one with a wrinkle. Big windows come back in complete-day pages. Ask for 2026-11-01 to 2026-11-14 and you get:
curl "https://api.javinfo.dev/discover/calendar?from=2026-11-01&to=2026-11-14" \ -H "x-javinfo-key: YOUR_KEY"{ "through": "2026-11-05", "truncated": true}through is the last complete day included. Ask again from 2026-11-06 and you get the rest. Repeat until truncated is false. Each page is a separate call.
Performer analytics
/analytics/* answers questions about one performer or the whole market.
/analytics/idols/stats: career totals, top genres and studios, release cadence./analytics/idols/ohlc: release-count candles by day, week or month./analytics/idols/timeline: release months with debut, latest, peak and longest gap./analytics/idols/costars: the performers an idol works with most, with shared title counts./analytics/leaderboard: idols ranked byreleases,ratingormomentumover a window./analytics/market: genre gainers and losers over rolling weeks.
A real call, for Yua Mikami:
curl "https://api.javinfo.dev/analytics/idols/stats?q=yua-mikami" \ -H "x-javinfo-key: YOUR_KEY"It reports 1,127 titles across 8 studios. The top genre is Big Tits with 765 titles, and the top studio is S1 NO.1 STYLE with 991. works counts each title once, even when several sources list it.
The same performer through /ohlc with bucket=month. Each candle is the cumulative release count for that month, and the bars show releases per month. The chart shows the last three years of the 131 monthly candles the call returns.

Resolve
Metadata for one title comes from many sources, and they don’t always agree. /resolve/* takes one code and checks all of them.
GET /resolvereturns the canonical code, its variants, every source that has it, a link to/movie, and a rendered title card as PNG, JPG or SVG.POST /resolve/batchchecks up to 100 codes in one call and tells you which exist.GET /resolve/compareputs two titles side by side with a similarity score.GET /resolve/provenanceshows which source said what, field by field.GET /resolve/streamsreports whether a title has a stream, sample, trailer, gallery or magnets.
For EBOD-391:
curl "https://api.javinfo.dev/resolve?q=EBOD-391&format=jpg" \ -H "x-javinfo-key: YOUR_KEY"The code is found in FANZA, javdatabase, javlibrary, javbus and missav. The response includes link: "/movie?q=EBOD-391" for the full record. The card comes back inline and is about 100 KB as a JPG. It shows a rating of 8.1/10, a runtime of 119 minutes, 45 magnets, and that the title is streamable.

Provenance is why the field-level view exists. For the same code, the release date is 2014-08-13 on FANZA and 2014-08-09 on javbus. That is a plain disagreement between sources, and it happens across a catalog this size. /resolve/provenance reports both values and a confidence score for the one it picked, so you can decide what to trust.
javbus joined as a source in this release. It feeds /resolve and provenance, and /discover/random routes to it when you ask for censored=uncensored.
What it costs
You are billed only for successful 200 responses.
| Call | Price |
|---|---|
/discover/* |
$0.0004 |
/resolve/compare, /provenance, /streams |
$0.0004 |
/resolve with title card |
$0.0012 |
/resolve/batch |
$0.0004 per 10 codes, max 100 |
/analytics/idols/stats, /ohlc, /timeline, /market |
$0.0006 |
/analytics/idols/costars |
$0.0006 up to 10 results, $0.0009 at the default 15 |
/analytics/leaderboard |
$0.0006 up to 10 results, $0.0012 at the default 20 |
The base price covers up to 10 results. List endpoints scale above that: 20 results cost twice as much as 10, and several defaults sit above 10 (trending returns 20, so it costs $0.0008 out of the box). Cache hits, errors and degraded answers are free.
New accounts get $0.02 of free credit. The rate limit is 10 requests a minute until your first top-up, and 60 after any purchase.
Migrating from ADL
Three things differ from what you may have written against ADL.
- Auth header. Send
x-javinfo-key, notx-api-key. rangeis days. Everyrangeparameter means a number of days.- Idols are identified by id. The idol analytics endpoints take a javdatabase slug such as
yua-mikami, not a name. Find it withGET /idols?q=, then pass the id asq. A Japanese name passed straight to an analytics endpoint returns 404.
Thanks
Building and running that much mostly solo for two years is hard, and publishing the code instead of letting it rot is generous. Thank you to ADL’s author for that, and for the ideas we got to build on.
Read the docs for discovery, analytics and resolve, then sign up at app.javinfo.dev for a key.