diff --git a/seeds/01_networks.js b/seeds/01_networks.js
index 6ebf9ab1..88c8f2bb 100755
--- a/seeds/01_networks.js
+++ b/seeds/01_networks.js
@@ -617,6 +617,15 @@ const networks = [
 		description: 'Watch the best HD exclusive movies and videos on Porn Pros. All the hottest new Pornstar and amateur girls in High Definition updated daily.',
 		parent: 'whalemember',
 	},
+	{
+		slug: 'pornplus',
+		name: 'Porn+',
+		url: 'https://pornplus.com',
+		parent: 'whalemember',
+		parameters: {
+			layout: 'plus',
+		},
+	},
 	{
 		slug: 'private',
 		name: 'Private',
diff --git a/seeds/02_sites.js b/seeds/02_sites.js
index cc11798f..151e5117 100755
--- a/seeds/02_sites.js
+++ b/seeds/02_sites.js
@@ -13788,6 +13788,7 @@ const sites = [
 			id: 'shag-street',
 		},
 	},
+	/*
 	{
 		slug: 'stayhomemilf',
 		name: 'StayHomeMilf',
@@ -13797,6 +13798,7 @@ const sites = [
 			id: 'stay-home-milf',
 		},
 	},
+	*/
 	// MYLF cross-over
 	{
 		slug: 'mylfxadultprime',
@@ -15859,6 +15861,164 @@ const sites = [
 		parent: 'pornpros',
 		hasLogo: false,
 	},
+	// PORN PLUS PORN+
+	{
+		name: 'Passion Fuck',
+		slug: 'passionfuck',
+		url: 'https://pornplus.com/series/passion-fuck',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Creepy Pa',
+		slug: 'creepypa',
+		url: 'https://pornplus.com/series/creepy-pa',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Property Exploits',
+		slug: 'propertyexploits',
+		url: 'https://pornplus.com/series/property-exploits',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Asians Exploited',
+		slug: 'asiansexploited',
+		url: 'https://pornplus.com/series/asians-exploited',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Shower 4K',
+		slug: 'shower4k',
+		url: 'https://pornplus.com/series/shower-4k',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Squirt Bomb',
+		slug: 'squirtbomb',
+		url: 'https://pornplus.com/series/squirt-bomb',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Kinky Sluts 4K',
+		slug: 'kinkysluts4k',
+		url: 'https://pornplus.com/series/kinky-sluts-4k',
+		parent: 'pornplus',
+	},
+	{
+		name: 'School of Cock',
+		slug: 'schoolofcock',
+		url: 'https://pornplus.com/series/school-of-cock',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Facials Galore',
+		slug: 'facialsgalore',
+		url: 'https://pornplus.com/series/facials-galore',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Game On',
+		slug: 'gameon',
+		url: 'https://pornplus.com/series/game-on',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Waxxxed',
+		slug: 'waxxxed',
+		url: 'https://pornplus.com/series/waxxxed',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Double Trouble',
+		slug: 'doubletrouble',
+		url: 'https://pornplus.com/series/double-trouble',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Boobs 4K',
+		slug: 'boobs4k',
+		url: 'https://pornplus.com/series/boobs4k',
+		parent: 'pornplus',
+	},
+	{
+		name: 'BBC POVD',
+		slug: 'bbcpovd',
+		url: 'https://pornplus.com/series/bbc-povd',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Sexercise',
+		slug: 'sexercise',
+		url: 'https://pornplus.com/series/sexercise',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Strip Club Tryouts',
+		slug: 'stripclubtryouts',
+		url: 'https://pornplus.com/series/strip-club-tryouts',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Pornstars in Cars',
+		slug: 'pornstarsincars',
+		url: 'https://pornplus.com/series/pornstars-in-cars',
+		parent: 'pornplus',
+	},
+	{
+		name: 'RV Adventures',
+		slug: 'rvadventures',
+		url: 'https://pornplus.com/series/rv-adventures',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Bikini Smash',
+		slug: 'bikinismash',
+		alias: ['bikini splash'],
+		url: 'https://pornplus.com/series/bikini-splash',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Momcum',
+		slug: 'momcum',
+		url: 'https://pornplus.com/series/momcum',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Caged Sex',
+		slug: 'cagedsex',
+		url: 'https://pornplus.com/series/caged-sex',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Glory Hole 4K',
+		slug: 'gloryhole4k',
+		url: 'https://pornplus.com/series/glory-hole-4k',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Facials4K',
+		slug: 'facials4kpro',
+		url: 'https://pornplus.com/series/facials4k',
+		parent: 'pornplus',
+	},
+	{
+		name: 'My Very First Time',
+		slug: 'myveryfirsttimepro',
+		url: 'https://pornplus.com/series/my-very-first-time',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Mom 4K',
+		slug: 'mom4k',
+		url: 'https://pornplus.com/series/mom-4k',
+		parent: 'pornplus',
+	},
+	{
+		name: 'Nanny Spy',
+		slug: 'nannyspypro',
+		url: 'https://pornplus.com/series/nannyspy',
+		parent: 'pornplus',
+	},
 	// PRIVATE
 	{
 		slug: 'analintroductions',
@@ -21020,7 +21180,6 @@ const sites = [
 	},
 ];
 
-/*
 sites.reduce((acc, site) => {
 	if (acc.has(site.slug)) {
 		console.log('DUPLICATE!', site.slug);
@@ -21030,7 +21189,6 @@ sites.reduce((acc, site) => {
 
 	return acc;
 }, new Set());
-*/
 
 /* eslint-disable max-len */
 exports.seed = (knex) => Promise.resolve()
diff --git a/src/scrapers/scrapers.js b/src/scrapers/scrapers.js
index 5ecc9c82..77f9d261 100755
--- a/src/scrapers/scrapers.js
+++ b/src/scrapers/scrapers.js
@@ -160,6 +160,7 @@ const scrapers = {
 		pinkyxxx,
 		porncz,
 		pornpros: whalemember,
+		pornplus: whalemember,
 		private: privateNetwork,
 		purgatoryx,
 		radical,
diff --git a/src/scrapers/whalemember.js b/src/scrapers/whalemember.js
index 33186a02..93305ee8 100755
--- a/src/scrapers/whalemember.js
+++ b/src/scrapers/whalemember.js
@@ -44,6 +44,40 @@ function scrapeLatest(scenes, channel) {
 	});
 }
 
+function scrapeLatestPlus(scenes, channel) {
+	return scenes.map(({ query, _element }) => {
+		const release = {};
+
+		release.title = query.content('.title');
+		release.date = query.date('.video-thumbnail-footer', 'MM/DD/YYYY');
+
+		const slug = slugify(release.title);
+
+		release.url = `${new URL(channel.url).origin}/video/${slug}`;
+		release.entryId = slug;
+
+		release.actors = query.all('.actor-list a').map((actorEl) => ({
+			name: unprint.query.content(actorEl),
+			url: unprint.query.url(actorEl, null, { origin: channel.url }),
+		}));
+
+		const poster = query.poster() || query.img('a[data-video-thumbnail-single-image-target] img');
+
+		if (poster) {
+			release.poster = [
+				stripQuery(poster),
+				poster,
+			];
+		}
+
+		release.teaser = query.video('source', { attribute: 'data-src' });
+
+		release.channel = slugify(query.attribute('.series-link img', 'alt'), '');
+
+		return release;
+	});
+}
+
 function scrapeScene({ query }, { url, entity }) {
 	const release = {};
 
@@ -70,6 +104,8 @@ function scrapeScene({ query }, { url, entity }) {
 	release.teaser = query.video('#player-wrapper source');
 	release.qualities = query.contents('#trailer_player .resolution').map((resolution) => Number(resolution.split('x')[1])).filter(Boolean);
 
+	console.log(release);
+
 	return release;
 }
 
@@ -84,7 +120,22 @@ async function fetchLatest(channel, page = 1) {
 	return res.status;
 }
 
+async function fetchLatestPlus(channel, page = 1) {
+	const url = `${channel.url}?page=${page}`;
+	const res = await unprint.get(url, { selectAll: '.video-thumbnail' });
+
+	if (res.status === 200) {
+		return scrapeLatestPlus(res.context, channel);
+	}
+
+	return res.status;
+}
+
 module.exports = {
 	fetchLatest,
 	scrapeScene,
+	plus: {
+		fetchLatest: fetchLatestPlus,
+		scrapeScene,
+	},
 };