Scrapes all scenes and metadata from a studio URL. Designed to be easily extended to new sites. Can push scraped metadata into a local Stash instance.
1204 sites across 30+ platforms — full list with URL patterns → · searchable A-Z domain list →
| Platform | Examples |
|---|---|
| Adult Prime | Private, DDF Network, Her Limit, Hands On Hardcore, … |
| Aylo/Juan | Babes, BangBros, Brazzers, Bromo, FakeHub, Men, MileHigh, Reality Kings, Sean Cody, SpiceVids, … |
| Czech AV | Czech Casting, Czech Massage, Czech Streets, Czech Amateurs, Czech Couples, … |
| FTV | FTV Girls, FTV MILFs |
| FYC/PornPros | Passion HD, Tiny4K, POVD, Casting Couch X, Lubed, SpyFam, PORN+, … |
| Full Porn Network | Analized, James Deen, Bad Daddy POV, Porn Force, DTF Sluts, … |
| Gamma/Algolia | Adult Time, Burning Angel, Dogfart Network, Evil Angel, Girlsway, Pure Taboo, Wicked, … |
| Grooby | Grooby Girls, TGirls.xxx, Brazilian Transsexuals, TGirl Japan, Black TGirls, … |
| Jules Jordan Network | Jules Jordan, Manuel Ferrara, The Score, … |
| MetArt Network | MetArt, SexArt, ALS Scan, Viv Thomas, MetArt X, Errotica Archives, … |
| ModelCentro | Penny Barber, The Jerky Girls, Mugur Porn, The Lion XXX, RosellaExtrem, … |
| New Sensations | New Sensations, FamilyXXX, Hot Wife XXX, Girl Girl XXX, … |
| POVR/WankzVR | BrasilVR, MilfVR, TranzVR, WankzVR |
| Score Group | Scoreland, XL Girls, 18Eighteen, Leg Sex, Naughty Mag, 50 Plus MILFs, … |
| SexMex Pro CMS | Exposed Latinas, SexMex, Trans Queens |
| SpiceVids collections | AdamAndEveVOD, Crunchboy, 1111Customs, AdultTime, NewSensations, … |
| Spizoo | Spizoo, Jessica Jaymes, Kelly Madison, Sara Jay, … |
| TeamSkeet/PSM | TeamSkeet, MYLF, Family Strokes, Freeuse, Shoplyfter, SayUncle, Dad Crush, … |
| Teen Mega World | Anal Angels, Beauty Angels, Creampie Angels, Dirty Flix, Nubile Girls HD, … |
| Up-Timely CMS | Attackers, DAS!, Idea Pocket, Madonna, MOODYZ, S1 NO.1 STYLE |
| Vixen MG | Vixen, Blacked, Tushy, Deeper, Slayed, Milfy, … |
| WP video-elements | DaughterSwap, MommysBoy, PervMom, SisLovesMe, … |
| Wank It Now | Wank It Now, Wank It Now VR |
| Wankz | Wankz, Lethal Pass |
| Wow Network | WowGirls, Ultra Films, angels.love, sensual.love |
| Flourish | Flourish, NaughtyNatural, Cherry Pop, … |
| Glamose/UTG | UTG, Glamose, Prestige, … |
| Railway/Express | Smoking Erotica, Smoking Models, Spanking Glamour |
| Real Spankings | Real Spankings, Real Spankings Institute |
| WordPress | Anal Therapy, Family Therapy, Tara Tainton, … |
| Stashbox | StashDB, any stashbox instance (config-driven) |
| Standalone | Anal Vids, APClips, Bare Back Studios, Clips4Sale, Kink, ManyVids, Pornbox, Pornhub, SexLikeReal, … |
Pick one — pre-built binary is easiest, system packages for auto-updates, Docker if you prefer containers, source if you want to hack on it.
Download the archive for your platform from the latest release, extract, and put the binary on your PATH. All binaries are static (no runtime dependencies).
Asset naming: fss-<version>-<os>-<arch>.tar.gz (or .zip for Windows). Available platforms: linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64.
# Resolves to the latest tag (e.g. v1.11.0) by following the GitHub redirect.
VERSION=$(curl -sIL -o /dev/null -w '%{url_effective}' https://github.com/Wasylq/FSS/releases/latest | sed 's|.*/||')
ARCH=amd64 # or arm64 for Raspberry Pi 4/5, ARM cloud instances, etc.
curl -LO https://github.com/Wasylq/FSS/releases/download/${VERSION}/fss-${VERSION}-linux-${ARCH}.tar.gz
tar xzf fss-${VERSION}-linux-${ARCH}.tar.gz
sudo install -m 0755 fss /usr/local/bin/fss
fss versionIf you don't have sudo, drop fss into ~/.local/bin/ (already on your PATH on most distros) instead.
VERSION=$(curl -sIL -o /dev/null -w '%{url_effective}' https://github.com/Wasylq/FSS/releases/latest | sed 's|.*/||')
ARCH=arm64 # Apple Silicon (M1+); use amd64 for Intel Macs
curl -LO https://github.com/Wasylq/FSS/releases/download/${VERSION}/fss-${VERSION}-darwin-${ARCH}.tar.gz
tar xzf fss-${VERSION}-darwin-${ARCH}.tar.gz
sudo install -m 0755 fss /usr/local/bin/fss
# Gatekeeper will block unsigned binaries the first time. Either:
xattr -d com.apple.quarantine /usr/local/bin/fss
# or: System Settings → Privacy & Security → "Open anyway" after the first failed run.
fss version$Version = (Invoke-RestMethod -Uri "https://api.github.com/repos/Wasylq/FSS/releases/latest").tag_name
Invoke-WebRequest -Uri "https://github.com/Wasylq/FSS/releases/download/$Version/fss-$Version-windows-amd64.zip" -OutFile fss.zip
Expand-Archive -Path fss.zip -DestinationPath .
# Move into a folder that's on your PATH, e.g.:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\bin" | Out-Null
Move-Item -Force fss.exe "$env:USERPROFILE\bin\fss.exe"
# Add %USERPROFILE%\bin to your PATH (one-time):
[Environment]::SetEnvironmentVariable("Path", "$env:Path;$env:USERPROFILE\bin", "User")
# Restart your shell, then:
fss versionEach release also publishes .deb and .rpm packages. Download them from the latest release.
TAG=$(curl -sIL -o /dev/null -w '%{url_effective}' https://github.com/Wasylq/FSS/releases/latest | sed 's|.*/||')
VERSION=${TAG#v} # asset filenames drop the leading "v"
ARCH=amd64 # or arm64
# Debian / Ubuntu
curl -LO "https://github.com/Wasylq/FSS/releases/download/${TAG}/fss_${VERSION}_${ARCH}.deb"
sudo dpkg -i "fss_${VERSION}_${ARCH}.deb"
# Fedora / RHEL
curl -LO "https://github.com/Wasylq/FSS/releases/download/${TAG}/fss-${VERSION}-1.x86_64.rpm"
sudo rpm -i "fss-${VERSION}-1.x86_64.rpm"yay -S fssdocker pull ghcr.io/wasylq/fss:latest
docker run --rm ghcr.io/wasylq/fss:latest list-scrapersSee docs/docker.md for volume conventions, the bind-mount UID gotcha, and a docker compose example with Stash.
Requires Go 1.25+ (matches the go directive in go.mod).
git clone https://github.com/Wasylq/FSS
cd FSS
go build -o fss .
./fss versionOr via go install (binary lands in $GOBIN, typically ~/go/bin/):
go install github.com/Wasylq/FSS@latest# Scrape a studio — outputs JSON by default
fss scrape https://www.manyvids.com/Profile/590705/bettie-bondage/Store/Videos
# Incremental mode (default): only fetches new scenes
fss scrape <url>
# Full re-scrape from scratch
fss scrape --full <url>
# Re-fetch all metadata, soft-delete removed scenes
fss scrape --refresh <url>
# Output both JSON and CSV
fss scrape --output json,csv --out-dir ./data <url>
# Use SQLite as the store (default: ~/.local/share/fss/fss.db)
fss scrape --db --name "Bettie Bondage" <url>
# Use SQLite at a custom path
fss scrape --db /path/to/fss.db <url>
# See supported sites
fss list-scrapers
# Check if a URL is supported
fss check <url>
# Debug output (stackable: -d, -dd, -ddd)
fss scrape -d <url># Dry-run: match video files against FSS metadata
fss identify /path/to/videos --dir ./data
# Write .nfo files next to matched videos
fss identify /path/to/videos --dir ./data --apply
# Optional: install ffprobe (FFmpeg) for duration-based disambiguation
sudo apt install ffmpeg # or: brew install ffmpeg# List unmatched scenes in Stash
fss stash unmatched
# Dry-run: show what would be imported
fss stash import --dir ./data
# Apply changes
fss stash import --dir ./data --applyOptional YAML config at the platform-specific path:
| Platform | Path |
|---|---|
| Linux | ~/.config/fss/config.yaml |
| macOS | ~/Library/Application Support/fss/config.yaml |
| Windows | %APPDATA%\fss\config.yaml |
See config.example.yaml for all available options with descriptions. To get started, grab it directly and drop it into place:
# Linux
mkdir -p ~/.config/fss
curl -fsSL https://raw.githubusercontent.com/Wasylq/FSS/master/config.example.yaml \
-o ~/.config/fss/config.yaml
# macOS
mkdir -p ~/Library/Application\ Support/fss
curl -fsSL https://raw.githubusercontent.com/Wasylq/FSS/master/config.example.yaml \
-o ~/Library/Application\ Support/fss/config.yamlOr if you already have the repo cloned: cp config.example.yaml ~/.config/fss/config.yaml
CLI flags always override config values. See docs/usage.md for the full reference.
| Document | Contents |
|---|---|
| docs/scrapers.md | Supported sites, URL patterns, shared packages |
| docs/sites.md | Searchable A-Z list of every covered domain |
| docs/usage.md | CLI reference, data model, output formats, SQLite |
| docs/identify.md | NFO sidecar file generation: matching videos, writing .nfo files |
| docs/stash.md | Stash integration: matching, merging, import workflow |
| docs/docker.md | Running FSS in Docker — image tags, volumes, compose examples |
| docs/library.md | Using FSS as a Go library — 9 public packages: scraper registry, models, matching, output, duration parsing, Stash client, NFO, identify |
| docs/architecture.md | System design, plugin registry, streaming model, store abstraction |
| CONTRIBUTING.md | How to add a new scraper, reference implementations |
| SECURITY.md | Credential handling, network policy, vulnerability reporting |