CarnalPlus Network Scraper
Summary
A comprehensive Python scraper for the CarnalPlus network, supporting 17+ gay adult sites including Gaycest, Fun Size Boys, Scout Boys, Masonic Boys, Boy For Sale, Twink Top, and more.
Note: If someone could please add this to the community sources for scrapers I would much appreciate it.
Source URL
Features
- Scene scraping by URL - Scrape any CarnalPlus video URL
- Scene scraping by name - Search scenes by title using the CarnalPlus search API
- Scene scraping by fragment - Auto-detect scenes from filenames
- Performer scraping by URL - Full performer details with auto-population on scene creation
- Title normalization - Cleans up messy API titles (e.g., " troop time | Chapter 9: Hands-On Scouting " → “Hands-On Scouting - Troop Time - Chapter 9”)
- 17 studio mappings - Automatically maps sub-sites to proper studio names
- Full metadata - Extracts title, description, date, cover image, performers, tags, and studio
What It Does
The CarnalPlus scraper extracts metadata from the CarnalPlus network (server-rendered HTML platform). It:
- Scrapes scene metadata from any carnalplus.com video URL
- Searches for scenes by title via the CarnalPlus search API
- Fetches complete performer data inline so clicking “+” on a performer auto-fills all their details
- Normalizes titles from the broken API format into clean, readable titles
- Maps sub-sites to proper studio names (e.g., “scoutboys” → “Scout Boys”)
Example scene URL:
https://carnalplus.com/videos/hands-on-scouting-troop-time-chapter-9.html
Extracts:
- Title: Hands-On Scouting - TROOP TIME - Chapter 9
- Studio: Scout Boys
- Description: Full scene description
- Date: Release date
- Performers: Full cast with images and details
- Tags: Scene tags
- Cover: High-quality poster image
Supported Studios
The scraper supports all CarnalPlus network sites:
- Gaycest
- Fun Size Boys
- Scout Boys
- Masonic Boys
- Baptist Boys
- Catholic Boys
- Boy For Sale
- Twink Top (within CarnalPlus)
- Bareback Plus
- Bang Bang Boys
- Carnal Originals
- American Muscle Hunks
- Jalif Studio
- Next Door Studios
- Teens And Twinks
- Stag Homme
- Twinks
Installation (Docker)
Files required:
CarnalPlus.yml(attached)CarnalPlus.py(attached)
Folder Structure
docker/
└── docker-compose.yml
└── scrapers/
└── CarnalPlus/
├── CarnalPlus.yml
└── CarnalPlus.py
Docker Compose Configuration
Add the following under volumes in your docker-compose.yml:
- ./scrapers/CarnalPlus:/root/.stash/scrapers/CarnalPlus
Restart the Stash container:
docker compose up -d
The scraper will appear in Stash’s scraper list.
Usage
Scraping by URL
- Edit a scene in Stash
- Enter a carnalplus.com URL in the URL field
- Click “Scrape with… > CarnalPlus”
Scraping by Search
- Edit a scene in Stash
- Click the search icon next to “Scrape with…”
- Search for the scene title
- Select the correct scene from results
Auto-scraping from Filenames
- If your scene has a carnalplus.com URL stored, the scraper will use it automatically
- Click “Scrape with… > CarnalPlus” and it will fetch updated metadata
Technical Details
- Language: Python 3
- Dependencies: requests, beautifulsoup4 (auto-installed via py_common)
- Platform: Server-rendered HTML (not React SPA)
- Search API:
https://carnalplus.com/process_searchAjax.php
Notes
- Performer images are automatically fetched when scraping scenes
- The scraper handles the CarnalPlus API’s messy title format and normalizes it
- Scene codes are not available for lookup (no code-based search endpoint)
- Uses the page
<title>tag for clean titles instead of the broken H1 element
Attachments:
-
CarnalPlus.py (10.9 KB)
-
CarnalPlus.yml (536 Bytes)
Enjoy!