Pornhub Videos Scraper | Search, Tags and Stream Links avatar

Pornhub Videos Scraper | Search, Tags and Stream Links

Pricing

from $6.76 / 1,000 videos

Go to Apify Store
Pornhub Videos Scraper | Search, Tags and Stream Links

Pornhub Videos Scraper | Search, Tags and Stream Links

Pornhub scraper for videos: search by keyword or paste channel, model or pornstar links and get 20 videos in 24 seconds, 28 fields each. Titles, categories, tags, performers, uploader, views, likes, duration, upload date, thumbnails, preview clips, embed and stream links. No account needed.

Pricing

from $6.76 / 1,000 videos

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

16 hours ago

Last modified

Features

Limited permissions

Share

Pornhub videos, 28 fields each, from any search.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for โ€œjd scraperโ€ in Apify Store search), with 940,000+ combined lifetime runs.

Type a keyword or paste a channel, model or pornstar link, and get every Pornhub video behind it as one clean row: categories, tags, performers, uploader, views, likes, length, upload time and stream links in every quality. 20 videos in 15 seconds from one keyword.

Why choose this actor?

Collecting video links by hand before you can scrape anything? Copying a channel's catalog page by page? Guessing when a video went online from "4 months ago"?

  • Search Pornhub by keyword, no URL list needed. Type what you would type in the Pornhub search bar (searchQueries), one keyword per line, and every result becomes a row, page after page, up to your cap. The keyword massage gave 20 videos in 15 seconds in our run, from 12 different channels, models and pornstars, each one read from its own video page. You start from a question, not from a spreadsheet of links collected by hand.
  • Pornhub's own sort and filters on every keyword. Order the results by newest, most viewed, top rated or longest (sort), limit most viewed and top rated to this week, month or year (period), and keep only videos above or under 10, 20 or 30 minutes (minDuration, maxDuration), from studios or amateurs (production). In our run, asmr sorted by newest with maxDuration: 10 returned 15 videos in 9 seconds, every one under 10 minutes (the longest 9 min 53 s), led by a video uploaded on 2026-11-06, three days before the run.
  • The performers and the exact upload time on every video. Each row lists the performers credited on the video (performers) and the moment it was uploaded, to the second (publishedAt, RFC 3339). In our default run, 10 of the 20 videos named their performers (13 different people) and all 20 carried their upload time, from 2026-05-20 to 2026-11-04. Sort by date, group by performer, and stop guessing from "4 months ago".

Try Pornhub Videos Scraper free

Try your first 20 videos

Paste this input in the Input tab, or keep the prefilled form, and press Start:

{
"searchQueries": ["massage"],
"maxItems": 20
}

You get the first 20 Pornhub videos for massage, in Pornhub's own order, each read from its video page: title, categories, tags, performers, orientation, the uploader's name, type, verified badge, subscribers and video count, the length in seconds, views, likes, the upload date and time, a thumbnail, a short preview clip, the embed link and the stream links in every available quality. That is 20 rows in 15 seconds in our run, 18 of them available in 1080p or more. Swap the keyword for your niche, or paste a channel link instead.

The Apify Free plan is enough to try it: no credit card, no Pornhub account, nothing to install.

How it works

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the Pornhub Videos Scraper on Apify: silentflow/pornhub-videos-scraper
It reads public Pornhub video data (pornhub.com) without any Pornhub account.
Every row is one video. Rows are de-duplicated across keywords and links.
Input (no field is required; give at least one keyword or one Pornhub link):
- searchQueries (array of strings): keywords, as typed in the Pornhub search bar (massage, asmr)
- startUrls (array of strings): Pornhub links, one per line, any mix of
a video page (view_video.php?viewkey=...), an embed link, a bare viewkey,
a channel (/channels/<name>), a model (/model/<name>), a pornstar (/pornstar/<name>),
a user (/users/<name>), a search page, a category page or a playlist
- maxItems (integer, default 50): videos taken from each keyword and each list link;
video links are always read in full
- sort (string, default relevance): relevance, newest, most_viewed, top_rated, longest (keywords only)
- period (string, default all): all, week, month, year (with most_viewed and top_rated)
- minDuration (string, default any): any, 10, 20, 30 (minutes)
- maxDuration (string, default any): any, 10, 20, 30 (minutes)
- production (string, default all): all, professional, homemade
- includeDetails (boolean, default true): open each video page for categories, tags,
performers, likes, uploader stats and stream links; false = listing fields only
Output, one row per video (29 fields), null when Pornhub shows no value:
- id (viewkey), url, title, videoId
- categories (array), tags (array), performers (array), orientation (straight, gay, transgender)
- uploaderName, uploaderUrl, uploaderType (channel, model, pornstar, user), isUploaderVerified,
uploaderVideosCount, uploaderSubscribers
- durationSeconds, views (as displayed, 4.8K = 4800), likes
- publishedAt (upload time, RFC 3339 UTC)
- thumbnailUrl, previewUrl (short webm clip), embedUrl, videoUrl (best quality HLS stream),
maxQuality (pixels), videoStreams (array of {quality, format, url}), isHD, isVR, isVertical
- source (the keyword or link that found the video), scrapedAt
Stream and preview links expire after about an hour; url, embedUrl and uploaderUrl are permanent.
Use apify-client for Python or JavaScript, or call the actor through the Apify API.

How to scrape Pornhub videos

Get the 20 most relevant videos for a keyword

{
"searchQueries": ["massage"],
"maxItems": 20
}

The simplest run: one keyword, Pornhub's default order, every video read in full.

Pull the newest homemade videos under 10 minutes

{
"searchQueries": ["asmr"],
"sort": "newest",
"maxDuration": "10",
"production": "homemade",
"maxItems": 100
}

Filters stack exactly as on the site: newest first, short videos only, amateur uploads only.

Combine keywords, a channel and the most viewed videos of the month

{
"searchQueries": ["cosplay", "yoga"],
"startUrls": [
"https://www.pornhub.com/channels/holly-randall"
],
"sort": "most_viewed",
"period": "month",
"minDuration": "10",
"maxItems": 50
}

Each keyword gets its own 50 videos, sorted by views over the last month and at least 10 minutes long; the channel link gives its own 50, in the channel's order. A video found twice appears once.

Input parameters

ParameterTypeDefaultWhat it does
searchQueriesarray of strings["massage"] (prefill)Keywords, one per line, as typed in the Pornhub search bar.
startUrlsarray of linksnoneVideos, embeds, viewkeys, channels, models, pornstars, users, searches, categories, playlists.
maxItemsinteger50Videos taken from each keyword and each list link. Video links are always read.
sortselectrelevanceMost relevant, Newest, Most viewed, Top rated, Longest. Keywords only.
periodselectallAll time, This week, This month, This year. Used with Most viewed and Top rated.
minDurationselectanyAny length, 10+, 20+ or 30+ minutes.
maxDurationselectanyAny length, under 10, under 20 or under 30 minutes.
productionselectallAll, Professional (studio) or Homemade (amateur).
includeDetailsbooleantrueOpen each video page for the full row. Off: listing fields only, faster.

Accepted links. Any pornhub.com address, including regional subdomains (fr.pornhub.com) and the .org and .net mirrors:

  • a video: https://www.pornhub.com/view_video.php?viewkey=6a32fe74187f2, its embed https://www.pornhub.com/embed/6a32fe74187f2, or the bare viewkey 6a32fe74187f2
  • a channel: https://www.pornhub.com/channels/holly-randall (the actor opens its video list)
  • a model, pornstar or user: /model/<name>, /pornstar/<name>, /users/<name>
  • a search page with its own filters: https://www.pornhub.com/video/search?search=massage&o=mr
  • a category or playlist page: /video?c=<id>, /playlist/<id>

A link that is not a Pornhub address is skipped with a note in the log; the rest of the run goes on.

What data can you extract from Pornhub?

29 fields per video, in seven groups:

GroupFields
Identityid (the viewkey), url, title, videoId
Contentcategories, tags, performers, orientation
UploaderuploaderName, uploaderUrl, uploaderType, isUploaderVerified, uploaderVideosCount, uploaderSubscribers
MeasuresdurationSeconds, views, likes
TimepublishedAt
MediathumbnailUrl, previewUrl, embedUrl, videoUrl, maxQuality, videoStreams, isHD, isVR, isVertical
Metasource, scrapedAt

Good to know about the data.

  • id is Pornhub's viewkey, stable for the life of the video; url, embedUrl and uploaderUrl are permanent links.
  • publishedAt is the upload time to the second, in UTC (RFC 3339), on every row, including rows read from listing pages only.
  • views and the uploader's counters are the numbers Pornhub displays, turned into numbers: 302K becomes 302000, 1M becomes 1000000. likes is the exact count.
  • videoStreams lists one HLS stream per quality (1080, 720, 480, 240...), best first; videoUrl is the best one. maxQuality is the best quality Pornhub offers for the video, 2160 for 4K videos, which can be above the best stream (the example below streams up to 1080). Stream and preview links expire after about an hour: re-run the actor to get fresh ones.
  • categories, tags and performers are lists, empty when the video has none; orientation is straight, gay or transgender.
  • source tells which keyword or link found the video, so a run with several inputs stays easy to split.
  • With includeDetails off, a row keeps the listing fields: id, url, title, videoId, orientation, uploader name, link and type, length, views, upload time, thumbnail, preview clip and embed link.

Output example

One row of the default run (massage), as it comes out:

{
"id": "6a918e10f09b4",
"url": "https://www.pornhub.com/view_video.php?viewkey=6a918e10f09b4",
"title": "Luna Lovely and Nikki Zee Join Ariel On Locker Room Talk",
"videoId": 490252775,
"categories": ["HD Porn", "Pornstar", "SFW"],
"tags": ["talkshow", "podcast", "interview", "q&a", "questions", "answers", "conversation", "industry secrets", "liuna lovely", "nikki zee", "evolved fights", "locker room talk", "behind the scenes"],
"performers": ["Ariel X", "Luna Lovely", "Nikki Zee"],
"orientation": "straight",
"uploaderName": "Evolved Fights",
"uploaderUrl": "https://www.pornhub.com/channels/evolved-fights",
"uploaderType": "channel",
"isUploaderVerified": true,
"uploaderVideosCount": 415,
"uploaderSubscribers": 231000,
"durationSeconds": 1029,
"views": 24900,
"likes": 6,
"publishedAt": "2026-08-28T13:33:04Z",
"thumbnailUrl": "https://pix-cdn77.phncdn.com/c6371/videos/202608/28/60502585/original_60502585.mp4/plain/ex:1:no/bg:0:0:0/rs:fit:640:360/vts:736?hash=QuqP2uvO7y0wMuPOUGwyK55y8w4=&validto=1794329858",
"previewUrl": "https://ew.phncdn.com/c6251/videos/202608/28/60502585/180P_225K_60502585.webm?validfrom=1794239326&validto=1794246526&rate=48k&burst=150k&ipa=1&hash=6cNL41LK%2BjNzsfuKyhlvj8C8gjs%3D",
"embedUrl": "https://www.pornhub.com/embed/6a918e10f09b4",
"videoUrl": "https://hv-h.phncdn.com/hls/c6251/videos/202608/28/60502585/1080P_4000K_60502585.mp4/master.m3u8?h=HTOitCxu1USuux7c7KeVUcT%2BbYY%3D&e=1794247059&f=1",
"maxQuality": 2160,
"videoStreams": [
{ "quality": 1080, "format": "hls", "url": "https://hv-h.phncdn.com/hls/c6251/videos/202608/28/60502585/1080P_4000K_60502585.mp4/master.m3u8?h=HTOitCxu1USuux7c7KeVUcT%2BbYY%3D&e=1794247059&f=1" },
{ "quality": 720, "format": "hls", "url": "https://hv-h.phncdn.com/hls/c6251/videos/202608/28/60502585/720P_4000K_60502585.mp4/master.m3u8?h=SQk0k6BnhClrCOoqT2ZZ%2BXFqskI%3D&e=1794247059&f=1" },
{ "quality": 480, "format": "hls", "url": "https://hv-h.phncdn.com/hls/c6251/videos/202608/28/60502585/480P_2000K_60502585.mp4/master.m3u8?h=GjVFppfPcMsjpT6TjIQtDfRqtVw%3D&e=1794247059&f=1" },
{ "quality": 240, "format": "hls", "url": "https://hv-h.phncdn.com/hls/c6251/videos/202608/28/60502585/240P_1000K_60502585.mp4/master.m3u8?h=U4lOdGjLFfwq1X%2BQwoFfDnO5h6I%3D&e=1794247059&f=1" }
],
"isHD": true,
"isVR": false,
"isVertical": false,
"source": "massage",
"scrapedAt": "2026-11-09T16:57:27Z"
}

Advanced usage

Get the newest videos for your niche every morning

{
"searchQueries": ["massage"],
"sort": "newest",
"maxItems": 50
}

Schedule this run daily in Apify (Schedules tab). Newest first, 50 videos a day, each with its exact upload time: keep the rows whose publishedAt is after your last run and you have a clean daily feed for an aggregator or a watch list.

Find the most viewed long videos of the month

{
"searchQueries": ["cosplay"],
"sort": "most_viewed",
"period": "month",
"minDuration": "20",
"maxItems": 100
}

The month's most watched videos of 20 minutes or more, with views, likes and uploader subscribers on each row: a quick read of what performs in a niche before you produce or promote.

List every video a performer appears in

{
"startUrls": [
"https://www.pornhub.com/pornstar/raven-lane"
],
"maxItems": 500
}

A pornstar page lists the videos credited to that performer across all channels. Each row names the uploader, so you see who publishes them, how many views each one gets and when it went online. Useful for performer research and for spotting re-uploads.

{
"startUrls": [
"https://www.pornhub.com/view_video.php?viewkey=6a32fe74187f2",
"https://www.pornhub.com/embed/6a3966c25a310",
"6a11531ab8c21"
]
}

Paste video pages, embed links or bare viewkeys, as many as you have: each one comes back as a full row with categories, tags, performers, uploader stats and fresh stream links. Videos that were removed are reported in the log and skipped, never returned as empty rows.

Crawl a big channel fast, listing fields only

{
"startUrls": [
"https://www.pornhub.com/channels/holly-randall"
],
"includeDetails": false,
"maxItems": 1000
}

With includeDetails off the actor reads only the channel's list pages: title, length, views, upload time, thumbnail, preview clip and embed link for each video, at a fraction of the time. Run the full version later on the videos you keep.

FAQ

What is Pornhub? Pornhub is one of the largest adult video sites in the world, run by Aylo. Studios (channels), verified amateurs (models) and individual users upload videos there, and each video page shows its categories, tags, performers, views and likes.

Do I need a Pornhub account? No. The actor reads the pages Pornhub shows to any visitor. No login, no API key, nothing to install.

Does it download the video files? No. It returns the stream links (HLS, one per quality) and the embed link of each video. You can play the streams or save them with your own tool while the links are fresh, about an hour.

How many videos can one keyword return? As many as Pornhub lists for it, page after page, up to maxItems per keyword. Set maxItems to what you need: the run time and cost grow with the number of rows.

Are the view counts exact? They are the numbers Pornhub displays, rounded by the site (24.9K becomes 24900). Likes, length and upload time are exact.

Can I run several keywords and links at once? Yes. Every keyword and every list link gets its own maxItems videos, and a video found by two of them appears only once; source tells which one found it.

Can I combine the filters? Yes, they stack as on the site. sort: most_viewed with period: week, maxDuration: 10 and production: homemade returns this week's most viewed amateur videos under 10 minutes. The filters apply to keywords; a pasted search or channel link keeps its own.

Why do some rows have no performers or no tags? Because the video has none on Pornhub: many uploads credit no performer, and some carry no tags. Those fields are then empty lists, never invented.

Does it work from every country? Pornhub restricts its catalog in some countries and US states that require age verification, where it shows a reduced, safe-for-work selection. The actor reads the full catalog wherever Pornhub serves it, and when only the restricted selection was available, the run's final status says so.

Are Premium or private videos included? No. Only public videos that Pornhub shows to visitors without an account.

How fresh is the data? Live: every run reads Pornhub at that moment. Views, likes and stream links are those of the run time; scrapedAt records it.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐ŸŽฌ Video

๐Ÿ“ฐ News

๐Ÿงฐ More tools

Support

Need something this scraper doesn't do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This Actor extracts publicly available data from Pornhub, as shown to visitors who are not logged in. It does not bypass any login, paywall, age verification or CAPTCHA and never uses a Pornhub account. The source is an adult website: by running this Actor you confirm that you are 18 or older and allowed to access adult content where you are. Users are responsible for complying with Pornhub's terms of service, copyright law and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). Performer names and uploader profiles are personal data: handle them accordingly, keep only what you need, and honor removal requests. The data returned is informational; verify accuracy before any regulated use.

Pornhub Videos Scraper by SilentFlow: every Pornhub video behind a keyword, a channel, a model or a pornstar, with its categories, tags, performers, uploader, upload time and stream links, in one run.