Skip to content

sinkaroid/jandapress

jandapress

RESTful and experimental API for the doujinboards

Maintainability

Jandapress was originally named JCE (Janda Cheerio Express (legacy name)) and now runs on Bun + Hono.
The motivation behind this project is to provide developers with accessible and actionable data from various doujinshi sources, with a focus on aggregation and ease of integration for applications and services.

PlaygroundContributingReport Issues


The problem

Many developers consume doujin websites as a source of data when building web applications. However, most of these sites — such as pururin, simply-hentai, and others — do not provide official APIs or public resources that can be easily integrated into applications.

As a result, developers often need to implement their own scraping logic, build multiple abstractions, and manually maintain integrations for each site.

Jandapress aims to simplify this process by providing a unified interface for accessing data across multiple doujin sites. Instead of maintaining separate implementations, developers can rely on Jandapress to reduce complexity and development overhead.

The current state of the service is free to use, meaning anonymous usage is allowed. No authentication is required, and CORS is enabled to support browser-based applications.

The solution

Running tests

Some tests may fail in CI environments because certain doujin websites restrict or block automated requests originating from CI infrastructure and shared IP ranges.

Site Status Get Search Random
nhentai Nhentai
pururin Pururin
hentaifox Hentaifox
hentai2read Hentai2read
simply-hentai Simply-hentai
asmhentai Asmhentai
3hentai Asmhentai

Features

  • Aggregates data from multiple doujin sites.
  • Provides a consistent and structured response format across all sources.
  • Extracted objects are normalized and reassembled to support extensibility.
  • Unified interface supporting get, search, and random methods.
  • Planned support for optional JWT authentication in future releases.
  • Primarily based on pure scraping techniques (with limited exceptions where required).

Prerequisites

NOTE: Bun 1.3.13 or higher / or simply just use docker

To handle several requests from each web, You will also need Redis for persistent caching, free tier is available on Redis Labs, You can also choose another provider as we using keyv Key-value storage with support for multiple backends. All data must be stored in <Buffer> here.

Installation

Rename .env.schema to .env and fill the value with your own

# railway, fly.dev, heroku, vercel or any free service
RAILWAY = sinkaroid

# default port
PORT = 3000

# backend storage, default is redis, if not set it will consume memory storage
REDIS_URL = redis://default:somenicepassword@redis-666.c10.us-east-6-6.ec666.cloud.redislabs.com:1337

# ttl expire cache (in X hour)
EXPIRE_CACHE = 1

# optional: API key for nhentai official API
NHENTAI_API_KEY = ""

# optional custom user agent for upstream requests
USER_AGENT = "jandapress/10.0.1-alpha Bun/1.3.13"

Docker

docker pull ghcr.io/sinkaroid/jandapress:latest
docker run -p 3000:3000 -d ghcr.io/sinkaroid/jandapress:latest

Docker (adjust your own)

docker run -d \
  --name=jandapress \
  -p 3025:3000 \
  -e REDIS_URL='redis://default:somenicepassword@redis-666.c10.us-east-6-6.ec666.cloud.redislabs.com:1337' \
  -e EXPIRE_CACHE='1' \
  -e NHENTAI_API_KEY='' \
  -e USER_AGENT='jandapress/10.0.1-alpha Bun/1.3.13' \
  ghcr.io/sinkaroid/jandapress:latest

Manual

git clone https://github.com/sinkaroid/jandapress.git
  • Install dependencies
    • bun install
  • Jandapress production
    • bun run start:prod
  • Jandapress testing and hot reload
    • bun run start:dev

Nhentai Guide

The solution

Jandapress now targets the nhentai official API endpoints (/api/v2) for search, related, and random ID discovery.

  • set NHENTAI_API_KEY in .env (optional but recommended)
  • set USER_AGENT in .env if you need a custom upstream identifier
  • validate upstream with bun run test or bun run test:nhentai
  • if you want to adjust nhentai contracts/mapping, read docs/nhentai-api-contract.md first

Tests

Run the following commands to execute tests for each supported source:

# Check whether all supported sites are available for scraping
bun run test:scrape

# Run tests for individual sources
bun run test:nhentai
bun run test:pururin
bun run test:hentaifox
bun run test:asmhentai
bun run test:hentai2read
bun run test:simply-hentai
bun run test:3hentai

Start the production server

bun run start:prod

Running development server

bun run start:dev

OpenAPI and playground

bun run build then open /doc or /playground

To running other tests, you can see object scripts in file package.json

Playground

https://sinkaroid.github.io/jandapress

March 11, 2026: We have discontinued providing public APIs and playground services due to ongoing abuse and excessive usage. To continue using Jandapress, please deploy and run your own self-hosted instance.

  • These parameter?: means is optional

  • / : index page

Nhentai

The missing piece of nhentai - https://sinkaroid.github.io/jandapress/#GET/nhentai

Pururin

The missing piece of pururin - https://sinkaroid.github.io/jandapress/#GET/pururin

Hentaifox

The missing piece of hentaifox - https://sinkaroid.github.io/jandapress/#GET/hentaifox

Asmhentai

The missing piece of asmhentai - https://sinkaroid.github.io/jandapress/#GET/asmhentai

Hentai2read

The missing piece of hentai2read - https://sinkaroid.github.io/jandapress/#GET/hentai2read

Simply-hentai

The missing piece of simply-hentai - https://sinkaroid.github.io/jandapress/#GET/simply-hentai

3hentai

The missing piece of 3hentai - https://sinkaroid.github.io/jandapress/#GET/3hentai

Status response

"success": true, or "success": false,

HTTP/1.1 200 OK
HTTP/1.1 400 Bad Request
HTTP/1.1 500 Fail to get data

Frequently asked questions

Q: The website response is slow

That's unfortunate, this repository was opensource already, You can host and deploy Jandapress with your own instance. Any fixes and improvements will updating to this repo.

March 11, 2026: We have discontinued providing public APIs and playground services due to ongoing abuse and excessive usage. To continue using Jandapress, please deploy and run your own self-hosted instance.

Pronunciation

id_ID/jan·da/ — Dewasa dan mengikat; (?) /press/ shorthand for expressjs (legacy name); (?)

Client libraries

Seamlessly integrate with the languages you love, simplified the usage, and intelisense definitions on your IDEs

Legal

This tool can be freely copied, modified, altered, distributed without any attribution whatsoever. However, if you feel like this tool deserves an attribution, mention it. It won't hurt anybody.

Licence: WTF.

About

RESTful and experimental API for nhentai and other doujinshi

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

 
 
 

Contributors

Languages