nhplayer Extractor API

Minimal API-only service. No frontend.

GET /api/extract?id=<video_id_or_url>

Solves the player challenge and returns the playable stream URL (with ?verify= token), title, expiry, signature, subtitle and thumbnail. Direct connection first; your Webshare proxy is used only when a request is blocked.

curl "http://localhost:3000/api/extract?id=TrJtixK9fkwWjQn"

{
  "success": true,
  "title": "Pure x Holic ... Episode 1",
  "stream_url": "https://r2.1hanime.com/....mp4?verify=...",
  "expires_at": 1789737275,
  "expires_at_iso": "2026-09-18T13:14:35.000Z",
  "signature": "2fcd9e14e2aac9d6",
  "subtitle_url": "https://cdn.htstreaming.com/...ENG.srt",
  "thumbnail_url": "https://nhplayer.com/content/previews/....jpg"
}

GET /api/stream?id=<video_id>

Pipes the video through this server with Range/seek support (plays in any player).

Options

&debug=true       add diagnostics (attempt trace, PoW info)
&validate=true    playback probe (debug mode only)
&force_proxy=true route every request through the proxy immediately
&proxy_url=...    per-request proxy override (or X-Proxy-Url header)
&verify=false     skip challenge solving (returns the bare signed URL)

Proxy

Configured via the WEBSHARE_PROXY_URL environment variable in .env — used only as a fallback when the direct connection is blocked (403/429/503/Cloudflare/timeout).