Before anyone wires a JAV porn API into a product, somebody asks whether they’re allowed to. It’s the right question, and it has a boring answer: it depends entirely on what you’re moving. Bytes and facts are not the same cargo.
Metadata is not the video
A JAV release has a catalog record — a DVD code, a title in two languages, a release date, a runtime, a maker, a label, a series, a cast list. Those are facts about a published product, the same class of thing an ISBN record is. They are not the product.
javinfo returns that record. It indexes metadata and hosts no library: no video files, no transcodes, no player. For the visual assets you get references — a URL for the cover, a URL for the source page, and on some providers a URL for a stream manifest or a magnet. A reference resolves wherever it points, on somebody else’s server. That is the whole distinction, and it’s the one that decides what you’re actually building.
Check it, don’t take it
Enumerate the hostnames in a real response and see where they land:
curl -s -X POST "https://api.javinfo.dev/movie" \ -H "x-javinfo-key: $JAVINFO_KEY" \ -H "Content-Type: application/json" \ -d '{ "q": "EBOD-391", "providers": "missav" }' \| jq -r '.. | strings | select(startswith("http"))' \| cut -d/ -f3 | sort -ufourhoi.commissav.wssurrit.comThree hostnames, none of them ours. The cover, the page, the manifest — each one is fetched from the source by you, on your infrastructure, under your logs. The title itself is never in the response body, on any provider. The only asset javinfo serves anywhere is the publisher’s own preview clip, proxied so it resolves outside Japan.
Scraping it yourself is the riskier path
The instinct is that self-hosting a scraper is the conservative option: no third party, no dependency, nobody else’s terms to read. It’s the opposite.
Scraping puts you in a direct relationship with each source’s terms, from your own IP, at whatever rate your loop happens to run. You accept the terms by fetching. You eat the rate limit, the Cloudflare challenge, the geo-block, and eventually the ban — and the ban lands on the address your production traffic leaves from. Add a headless browser to get past the challenge and you’re running automated circumvention on your own hardware, which is a materially different posture from calling an endpoint. The technical breakdown of that mess — one call, five sources, one response shape — is the JAV metadata API integration guide. The point here is narrower: the option that looks cheapest concentrates all the exposure on you.
What stays yours
Calling an API doesn’t move your obligations onto it. Four things stay on your side of the line:
- Age-gate your own surface. javinfo is for users of legal age in their jurisdiction. Whatever you put in front of your users is your gate to build, and in a jurisdiction with an age-verification statute it isn’t a checkbox.
- Don’t re-host what you’re handed. Hotlinking a cover and copying it into your own bucket are two different acts with two different owners. Cache for performance if you need to, but know which one you’re doing.
- Treat pointers as pointers. Magnets and stream manifests come out of third-party indexes. javinfo doesn’t vouch for what’s on the far end of one, and your UI shouldn’t either.
- Attribute. Every result carries
sourceandsite. Show them.
None of this is legal advice, and jurisdictions differ wildly on adult material. It’s a description of what crosses the wire — how javinfo handles the rest is in the privacy policy.
Keys and billing live at app.javinfo.dev; the API is also listed on RapidAPI. You pay per successful lookup — $0.0005 a /movie result, $0.0002 a /query, nothing for a miss — so auditing what comes back costs about as much as thinking about it. A new key starts with 100+ lookups on the house, no card.