Privacy-respecting meta search for adult video content. No tracking, no logging, no analytics. Aggregates results from 43 video sites with bang shortcuts for targeted searches.
Repository: https://github.com/apimgr/vidveil
| Feature | Description |
|---|---|
| Privacy First | No tracking, no logging, no analytics |
| 43 Engines | Aggregates results from 43 adult video sites |
| Bang Search | Use !ph, !xh, !rt to search specific sites |
| Fast APIs | Direct JSON API integration with PornHub, RedTube, Eporner |
| SSE Streaming | Real-time result streaming as engines respond |
| Video Previews | Hover (desktop) and swipe (mobile) preview for 8+ engines |
| Thumbnail Proxy | All thumbnails proxied to prevent engine tracking |
| Autocomplete | Bang shortcuts, performer names, and search terms autocomplete |
| Related Searches | Server-generated related search suggestions |
| Semantic Search | AND-based filtering with synonym expansion across 27 categories |
| Tor Support | Built-in Tor hidden service support |
| Content Restriction | Geographic warnings/blocks for regions with adult content laws |
| Admin Panel | Full web-based administration |
| Single Binary | No external dependencies, embedded assets |
| Docker Ready | Alpine-based container with tini |
docker run -d \
--name vidveil \
-p 64580:80 \
-v ./rootfs/config:/config:z \
-v ./rootfs/data:/data:z \
ghcr.io/apimgr/vidveil:latestcurl -q -LSsfO https://raw.githubusercontent.com/apimgr/vidveil/main/docker/docker-compose.yml
docker compose up -dDownload the latest binary for your platform from Releases.
# Linux (amd64)
curl -q -LSsfO https://github.com/apimgr/vidveil/releases/latest/download/vidveil-linux-amd64
chmod +x vidveil-linux-amd64
./vidveil-linux-amd64A companion CLI client (vidveil-cli) is available for interacting with the server API from the terminal.
# Download latest release
curl -q -LSsfO https://github.com/apimgr/vidveil/releases/latest/download/vidveil-cli-linux-amd64
chmod +x vidveil-cli-linux-amd64
sudo mv vidveil-cli-linux-amd64 /usr/local/bin/vidveil-cli# Connect to server (creates the default cli.yml)
vidveil-cli --server https://x.scour.li --token YOUR_API_TOKEN# Show help
vidveil-cli --help
# Search (launches interactive TUI)
vidveil-cli search "query"
# List engines
vidveil-cli engines
# View bangs
vidveil-cli bangsThe CLI automatically launches an interactive TUI (Terminal User Interface) with keyboard navigation, dark theme, and real-time updates.
Configuration file location (created on first run):
| Platform | Path |
|---|---|
| Linux (root) | /etc/apimgr/vidveil/server.yml |
| Linux (user) | ~/.config/apimgr/vidveil/server.yml |
| macOS | ~/Library/Application Support/apimgr/vidveil/server.yml |
| Windows | %AppData%\apimgr\vidveil\server.yml |
| Docker | /config/vidveil/server.yml |
| Variable | Description | Default |
|---|---|---|
MODE |
production or development |
production |
LISTEN |
Listen address | 0.0.0.0 |
PORT |
Listen port | Random 64xxx (80 in containers) |
CONFIG_DIR |
Config directory | Platform-specific |
DATA_DIR |
Data directory | Platform-specific |
GET https://x.scour.li/api/v1/search?q={query}&page={page}&engines={engines}
Parameters:
q- Search query (supports bangs like!ph amateur)page- Page number (default: 1)engines- Comma-separated engine names, ortier1(top 5),tier12(top 8) (optional)show_ai-1to include AI-generated resultsmin_quality- Minimum result quality score (integer)preview_first-1to prioritise results with video preview URLsmin_duration- Minimum video duration in seconds
Response:
{
"ok": true,
"data": {
"query": "!ph amateur",
"search_query": "amateur",
"has_bang": true,
"bang_engines": ["pornhub"],
"results": [...],
"engines_used": ["pornhub"],
"search_time_ms": 450
}
}GET https://x.scour.li/api/v1/search?q={query}
Accept: text/event-stream
Returns Server-Sent Events with results as each engine responds. The same https://x.scour.li/api/v1/search endpoint switches to SSE mode when the Accept: text/event-stream header is present.
GET https://x.scour.li/api/v1/bangs
GET https://x.scour.li/api/v1/bangs/autocomplete?q={partial}
GET https://x.scour.li/api/v1/engines
GET https://x.scour.li/api/v1/engines/{name}
GET https://x.scour.li/healthz
GET https://x.scour.li/api/v1/healthz
| Endpoint | Description |
|---|---|
https://x.scour.li/openapi |
Swagger UI |
https://x.scour.li/openapi.json |
OpenAPI 3.0 spec (JSON) |
https://x.scour.li/graphql |
GraphQL endpoint |
https://x.scour.li/graphiql |
GraphQL playground |
Use bang shortcuts to search specific engines:
| Bang | Engine | Example |
|---|---|---|
!ph |
PornHub | !ph amateur |
!xh |
xHamster | !xh milf |
!rt |
RedTube | !rt blonde |
!xv |
XVideos | !xv teen |
!ep |
Eporner | !ep hd |
!yp |
YouPorn | !yp pov |
Multiple bangs: !ph !rt amateur searches both PornHub and RedTube.
Full list: See https://x.scour.li/api/v1/bangs for all 43 engine shortcuts.
| Engine | Bang | Method | Preview |
|---|---|---|---|
| PornHub | !ph |
Webmasters API | ✓ |
| RedTube | !rt |
Public API | ✓ |
| Eporner | !ep |
v2 JSON API | ✓ |
| XVideos | !xv |
HTML parsing | ✓ |
| XNXX | !xn |
HTML parsing | |
| xHamster | !xh |
JSON extraction | ✓ |
| Engine | Bang | Preview |
|---|---|---|
| YouPorn | !yp |
✓ |
| PornMD | !pmd |
3Movs (!3m), 4Tube (!4t), AlphaPorno (!ap), AnyPorn (!any), DrTuber (!dt), EMPFlix (!emp), Fux (!fux), GotPorn (!gp), HellPorno (!hp), LoveHomePorn (!lhp), Motherless (!ml), Nuvid (!nv), PornFlip (!pf), PornTube (!pt), SunPorno (!sp), TNAFlix (!tna), TubeGalore (!tg), TXXX (!tx), XXXYMovies (!xxxy), YouJizz (!yj)
FlyFLV (!ff), HQPorner (!hq), NonkTube (!nk), NubilesPorn (!np), PornBox (!pbox), PornerBros (!pb), PornHat (!phat), PornHD (!phd), PornOne (!p1), Pornotube (!pnt), PornTop (!ptop), PornTrex (!ptrex), Tube8 (!t8), VJAV (!vj), XBabe (!xb)
Access at https://x.scour.li/admin (setup token shown on first run).
| Route | Section | Description |
|---|---|---|
https://x.scour.li/admin |
Dashboard | Overview and statistics |
https://x.scour.li/admin/server/settings |
Settings | Server configuration |
https://x.scour.li/admin/server/branding |
Branding | Logo, title, themes |
https://x.scour.li/admin/server/ssl |
SSL/TLS | Let's Encrypt, certificates |
https://x.scour.li/admin/server/email |
SMTP configuration | |
https://x.scour.li/admin/server/scheduler |
Scheduler | Scheduled tasks |
https://x.scour.li/admin/server/logs |
Logs | Access and error logs |
https://x.scour.li/admin/server/database |
Database | Database management (SQLite/PostgreSQL/MySQL/MSSQL) |
https://x.scour.li/admin/server/security/* |
Security | Auth, tokens, rate limiting, firewall |
https://x.scour.li/admin/server/network/* |
Network | Tor, GeoIP, content restriction, blocklists |
https://x.scour.li/admin/server/system/* |
System | Backup, maintenance, updates |
https://x.scour.li/admin/server/users/* |
Users | Admin management |
https://x.scour.li/admin/server/engines |
Engines | Search engine configuration |
vidveil [options]
Options:
--help Show help
--version Show version
--status Show server status
--mode <mode> Set mode (production/development)
--port <port> Set listen port
--address <addr> Set listen address
--config <dir> Set config directory
--data <dir> Set data directory
--service <cmd> Service management (start/stop/restart/install/uninstall)
--maintenance <cmd> Maintenance (backup/restore)
--update [check|yes] Check for or perform updates- Docker (required for builds)
- Make
- Incus or Docker (for testing)
make dev # Quick build to temp directory
make local # Build with version to binaries/
make build # Full cross-platform build
make test # Run unit tests./tests/run_tests.sh # Auto-detects incus/docker
./tests/incus.sh # Full OS test with systemd (PREFERRED)
./tests/docker.sh # Quick Docker test| OS | Architecture |
|---|---|
| Linux | amd64, arm64 |
| macOS | amd64, arm64 |
| Windows | amd64, arm64 |
| FreeBSD | amd64, arm64 |
This software is provided "as is" without warranty of any kind. Use at your own risk.
- No Warranty: The authors are not responsible for any damages, data loss, or issues arising from use of this software
- Legal Compliance: This software is a search aggregator. Users are responsible for ensuring compliance with applicable laws and regulations in their jurisdiction
- Third-Party Services: This software connects to external adult video sites; their terms of service and content policies apply separately
- Content: VidVeil does not host, store, or distribute any content — it only indexes metadata from third-party sites
- Security: While we strive to follow security best practices, no software is guaranteed to be free of vulnerabilities
- Production Use: Evaluate thoroughly before deploying in production environments
By using this software, you acknowledge that you have read and understood this disclaimer.
MIT License - see LICENSE.md