ph-scraper-api
v1.0.2
Published
A lightweight Node.js scraper for searching and extracting HLS download links from PornHub.
Maintainers
Readme
🚀 PornHub Scraper API
A high-performance, lightweight Node.js library to search videos and extract direct HLS (m3u8) streaming links and metadata from PornHub.
✨ Features
- 🔍 Smart Search: Search videos with customizable result limits.
- 📊 Deep Metadata: Extract titles, views, duration, and high-quality thumbnails.
- ⚡ Stream Extractor: Get direct HLS links for all available qualities (1080p, 720p, 480p, etc.).
- 📥 Buffer Downloader: Built-in support to process HLS streams into Buffers using FFmpeg.
⚙️ Prerequisites
To use the downloadBuffer() feature, you must have FFmpeg installed on your system.
- Termux:
pkg install ffmpeg - Linux:
sudo apt install ffmpeg - Windows: Install via ffmpeg.org
🛠️ Installation
Install the package via npm:
npm install ph-scraper-api🚀 Usage Guide After installing, you can import and use the scraper in your project:
const ph = require('ph-scraper-api');
(async () => {
try {
// 1. Search for videos
const results = await ph.search('funny', 2);
console.log(results);
// 2. Extract Metadata & HLS Links
if (results.length > 0) {
const videoData = await ph.download(results[0].vkey);
console.log(videoData);
}
} catch (err) {
console.error("Scraper Error:", err.message);
}
})();
📊 Example Outputs 🔍 Search Result Example (.search()) The search function returns an Array of Objects:
[
{
"title": "Funny Prank Video",
"vkey": "ph64xxxxxxxx",
"duration": "10:05",
"views": "1.2M",
"url": "[https://www.pornhub.com/view_video.php?viewkey=ph64xxxxxxxx](https://www.pornhub.com/view_video.php?viewkey=ph64xxxxxxxx)",
"thumb": "[https://ei.phncdn.com/videos/.../original/1.jpg](https://ei.phncdn.com/videos/.../original/1.jpg)"
},
{
"title": "Another Funny Clip",
"vkey": "ph65yyyyyyyy",
"duration": "05:20",
"views": "500K",
"url": "[https://www.pornhub.com/view_video.php?viewkey=ph65yyyyyyyy](https://www.pornhub.com/view_video.php?viewkey=ph65yyyyyyyy)",
"thumb": "[https://ei.phncdn.com/videos/.../original/2.jpg](https://ei.phncdn.com/videos/.../original/2.jpg)"
}
]⚡ Download Info Example The download function returns a Single Object with all available stream qualities:
{
"title": "Funny Prank Video",
"thumb": "[https://ei.phncdn.com/videos/.../original/1.jpg](https://ei.phncdn.com/videos/.../original/1.jpg)",
"duration": "10:05",
"hls": {
"1080p": "[https://km-h.phncdn.com/hls/.../1080P_4000K.m3u8?token=](https://km-h.phncdn.com/hls/.../1080P_4000K.m3u8?token=)...",
"720p": "[https://km-h.phncdn.com/hls/.../720P_2000K.m3u8?token=](https://km-h.phncdn.com/hls/.../720P_2000K.m3u8?token=)...",
"480p": "[https://km-h.phncdn.com/hls/.../480P_1000K.m3u8?token=](https://km-h.phncdn.com/hls/.../480P_1000K.m3u8?token=)...",
"240p": "[https://km-h.phncdn.com/hls/.../240P_400K.m3u8?token=](https://km-h.phncdn.com/hls/.../240P_400K.m3u8?token=)..."
}
}📊 API Reference
.search(query, limit) query (String): Search keyword. limit (Number): Max results (default is 10).
.download(vkey_or_url) vkey_or_url (String): The video vkey or the full PornHub URL. Returns: Metadata object with HLS links.
.downloadBuffer(vkey, quality) vkey (String): The video identifier. quality (String): Video quality (e.g., '1080', '720', '480').
👨💻 Author Keshara Liyanaarachchi
📜 License MIT License. For educational purposes only.
