Si tu veux des métadonnées JAV dans ton app, voici le chemin que tout le monde emprunte. Tu trouves une source, tu écris un scraper, le scraper casse, tu en écris un autre pour une deuxième source afin de combler les manques, et six mois plus tard tu maintiens cinq intégrations fragiles juste pour obtenir un titre, une date de sortie et une image de couverture.
Il n’existe aucune API de métadonnées JAV publique et stable. Il n’y en a jamais eu. javinfo en est une. C’est toute la raison de son existence.
Pourquoi une « API de métadonnées JAV » est si difficile à trouver
Les données sont réelles et bien structurées. C’est l’accès qui pose problème. Chaque source vers laquelle tu te tournerais est un site web avec des défenses, pas une API avec un contrat :
- DMM / FANZA détient l’essentiel du catalogue et géobloque la plus grande partie de la planète. Il y a une API d’affiliation, mais les docs sont en japonais uniquement et se trouvent derrière le même blocage.
- JavDB n’a aucune API officielle, juste des scrapers communautaires portant ce nom, la plupart ayant besoin de FlareSolverr pour passer Cloudflare.
- JavBus, JavLibrary, R18 sont la même histoire : scrapers auto-hébergés et conteneurs Docker, parsers attachés à du HTML qui change sans préavis.
Donc l’« API » que tu trouves sur GitHub est toujours un scraper, et un scraper hérite de chaque problème qu’a le site source. Un renommage de classe casse ton parser sans changelog ni avertissement. Les défis Cloudflare et les blocages de région font que tu fais aussi tourner un contournement par navigateur headless et un proxy. Et comme chaque source renvoie une forme différente, combler les manques signifie normaliser toi-même trois ou quatre schémas.
Tu ne maintiens pas une intégration. Tu maintiens un scraper, un contournement, un proxy et un bipeur pour 2h du matin.
Ce que javinfo fait à la place
Envoie un code à POST /movie, reçois un unique résultat normalisé, la même forme de champs, peu importe la source qui a répondu. Besoin d’une liste ? POST /query renvoie des correspondances candidates pour une recherche large.
curl -X POST "https://api.javinfo.dev/movie" \ -H "x-javinfo-key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "q": "SSIS-001" }'{ "q": "SSIS-001", "source": "r18", "result": { "dvdId": "SSIS-001", "titleEn": "Newcomer NO.1 STYLE ...", "releaseDate": "2020-07-07", "runtimeMins": 120, "makers": ["S1 NO.1 STYLE"], "actresses": ["Example Actress"], "jacketFullUrl": "https://pics.dmm.co.jp/digital/video/ssis00001/ssis00001pl.jpg" }}Chaque fournisseur se mappe sur la même forme de base result : dvdId, titleEn/titleJa, releaseDate, runtimeMins, makers, label, series, actresses, jacketFullUrl, et plus encore. Tu lis result.* de la même manière entre les sources. On gère le scraping, les combats contre Cloudflare et les contournements de géoblocage pour que tu n’aies pas à le faire. C’est le design indépendant des fournisseurs sur lequel tout repose.
Les fournisseurs
Laisse javinfo choisir la première correspondance, ou fixe une source avec providers :
r18renvoie des métadonnées bilingues (titre, casting, producteur, label, série, jaquettes) ainsi que les photos de profil des actrices et des URLs d’extrait/galerie. Disponible à chaque requête.javdbajoute un tableauextra.downloadLinksavec des liens magnet et de téléchargement, ce que les scrapers cherchent à obtenir, ainsi queextra.scoreetextra.voteCount.missavajouteextra.pageUrlet un objetextra.streamsavec une playlist HLSmaster(.m3u8) ainsi que des variantes par résolution.javdatabaseajoute une description, des images d’exemple et une bande-annonce.javlibraryarrive bientôt.
En cas d’échec, tu reçois un 404, ce qui signifie généralement juste que le code n’est pas indexé. Les réponses sont mises en cache côté serveur, donc les recherches répétées sont rapides.
Démarrer
Inscris-toi sur app.javinfo.dev, récupère une clé et passe-la dans l’en-tête x-javinfo-key (également disponible sur RapidAPI). Chaque fournisseur renvoie des données complètes à chaque requête — pas de paliers, pas de gating par fournisseur. La facturation se fait à l’usage : /movie coûte 0,001 $ par résultat réussi et /query coûte 0,0002 $ — les recherches infructueuses ne sont pas facturées — le tout à un débit fixe de 60 requêtes par minute. Tu recharges en USDC, crédité 1:1, et les recharges de 50 $ et plus reçoivent un bonus aléatoire de 5–50 % ; les nouveaux inscrits démarrent avec 1 000+ recherches offertes, sans carte bancaire. Pas de Docker, pas de FlareSolverr, pas de VPN japonais, pas de cookie à rafraîchir. Tu peux être opérationnel en une minute.