Pornhub Scraper - Video Metadata, Tags & Views avatar

Pornhub Scraper - Video Metadata, Tags & Views

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Pornhub Scraper - Video Metadata, Tags & Views

Pornhub Scraper - Video Metadata, Tags & Views

Scrape public Pornhub video metadata with no API key: title, exact views, likes, rating, duration, upload date, uploader, pornstars, categories and tags. Search by keyword, category, tag, pornstar, model or channel. Export JSON, CSV, Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

1

Bookmarked

6

Total users

0

Monthly active users

15 hours ago

Last modified

Share

Pornhub Video Metadata & Search Scraper

Pornhub Scraper - Video Metadata, Tags, Views & Categories

The most complete Pornhub scraper for public video metadata on Apify, with no API key and no login. Extract titles, exact view counts, ratings, duration, upload date, uploader, pornstars, categories and tags at scale, then export to JSON, CSV or Excel for content trend and metadata analytics. Search by keyword or tag, browse a category, or pull every video from a pornstar, model or channel.

Here is one real result, with every field the actor returns (long description, categories and tags trimmed for readability; the actor returns the full values):

{
"title": "Step Sister Caught Step Brother Jerking Off and Helps Cum Quick",
"url": "https://www.pornhub.com/view_video.php?viewkey=6a631a3a91d2f",
"viewkey": "6a631a3a91d2f",
"videoId": 488461945,
"segment": "straight",
"durationSeconds": 630,
"views": 2187216,
"likes": 3342,
"votesUp": 3342,
"isHD": true,
"isVR": false,
"isPremium": false,
"uploader": "Kitty",
"uploaderUrl": "https://www.pornhub.com/model/kitty",
"uploaderType": "model",
"uploadedAt": "2026-07-24T07:57:00+00:00",
"addedAgo": "56 years ago",
"thumbnail": "https://pix-cdn77.phncdn.com/c6371/videos/202607/24/56566265/original_56566265.mp4/...",
"previewVideoUrl": "https://kw.phncdn.com/c6251/videos/202607/24/56566265/180P_225K_56566265.webm?...",
"description": "Watch Step Sister Caught Step Brother Jerking Off and Helps Cum Quick [trimmed]",
"pornstars": null,
"categories": [
"18-25",
"Amateur",
"Babe",
"Big Ass",
"Big Dick",
"Cumshot",
"HD Porn",
"POV",
"Rough Sex",
"Step Fantasy",
"Verified Amateurs"
],
"tags": [
"step sis",
"stepsister",
"familly therapy",
"prone bone",
"prone bone creampie",
"prone bone pov"
],
"observedAt": "2026-09-04T10:05:12.350Z",
"error": null
}

This actor returns every field a public video listing and detail page expose, including exact view and like counts, rating percentage and vote totals, comment counts, duration, uploader, upload date, description, pornstars, categories and tags, plus HD, VR and premium flags. Scrape by search keyword, category, tag, pornstar, model or channel.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor collects public Pornhub video metadata from one source at a time (a search keyword, a category, a pornstar page, a model page or a channel), paginates the listing, optionally opens each video page for the exact counts and full detail, and writes one normalized record per video to the run's dataset. Each record includes the title, URL and viewkey, duration in seconds, view and like counts, uploader and uploader type, upload date, description, and the pornstars, categories and tags. Missing source values are returned as null, never invented. Only public listing and video-page metadata is read; no media is downloaded.

Pick one source by priority: searchQuery, then category, then pornstar, then model, then channel. The tags input is folded into the search query. Order the listing with sort and narrow with period.

Use cases

  • Content trend analytics. Track which titles, tags and categories gain views over time by re-running a search or category on a schedule.
  • Metadata datasets for research. Build a structured corpus of adult-video metadata (views, ratings, duration, tags, upload dates) without downloading any media.
  • Creator and channel monitoring. Pull a pornstar, model or channel back-catalog with per-video view and like counts, upload dates, categories and tags.
  • Tag and category intelligence. Aggregate the tags and categories attached to top-ranked videos for a keyword to understand how content is labelled.
  • Ranking and SEO research. Compare mostViewed, topRated and mostRecent orderings to see what surfaces for a term.

Why this Pornhub scraper

A strict superset of the common Apify Pornhub scrapers: it accepts every input they do and returns every field they do, plus exact detail-page counts and extra quality and engagement signals.

CapabilityThis actorTypical Pornhub search scraper
Search by keywordYesYes
Browse by categoryYesYes
Tag-based searchYes (tags)Sometimes
Pornstar / model / channel sourceYes (all three)Rarely
Sort (recent, viewed, rated, longest)YesPartial
Time window filterYesSometimes
Numeric videoId + alphanumeric viewkeyBothvideo_id only
Straight / gay / trans segmentYesSometimes
Exact views and likes (detail page)YesListing approximations
Up votes, plus rating % and down votes when exposedYesRating only
Comment count when exposedYesNo
Categories and tags per videoYesYes
Pornstars credited per videoYesSometimes
HD / VR / premium flagsYesNo
Upload date (ISO 8601)YesPartial
Thumbnail + preview clip URLBothThumbnail only
No API key, JSON / CSV / Excel exportYesYes

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 videos matching the search cars, each enriched with full detail.

{
"maxVideos": 10,
"withDetails": true,
"searchQuery": "cars",
"sort": "relevance",
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Leave searchQuery empty and set a category, pornstar, model or channel instead. Turn withDetails off for a faster run that returns only the listing-level fields.

Input reference

FieldTypeRequiredDefaultDescription
maxVideosintegerno10Maximum number of videos to collect.
withDetailsbooleannotrueOpen each video page to add exact views, likes, upload date, description, categories and tags. Turn off for a faster listing-only run.
searchQuerystringnocarsKeyword to search public videos for, for example yoga, gaming. Highest-priority source.
categoryenumno(any)Browse a public category instead of searching (for example Amateur, MILF, Gaming, Podcast). Ignored when a search query is set.
pornstarstringno(empty)Public pornstar page slug, for example riley-reid from pornhub.com/pornstar/riley-reid.
modelstringno(empty)Public model or verified amateur page slug, for example betty-cockup.
channelstringno(empty)Public channel page slug, for example brazzers from pornhub.com/channels/brazzers.
tagsstring[]no(none)One or more tags, for example ["amateur", "pov"]. Added to your search query, or used on their own as the search terms. Ignored when a category, pornstar, model or channel source is set.
sortenumnorelevanceOrder of the listing: relevance, mostRecent, mostViewed, topRated, longest.
periodenumno(all time)Restrict to a recent time window (search and category sources): today, week, month, year.
startPageintegerno1Listing page number to start from. Useful for resuming or skipping ahead.
proxyobjectnoApify RESIDENTIAL, USProxy configuration. Pornhub geo-restricts and rate-limits datacenter IPs, so a residential proxy is required.

When more than one source is filled, the first non-empty in the order above is used.

Output reference

One dataset item per video. Types: string, integer, string[], or null when the source value is absent.

FieldTypeDescription
titlestringVideo title.
urlstringVideo page URL.
viewkeystringPornhub viewkey (unique alphanumeric key per video).
videoIdintegerNumeric internal video id, or null.
segmentstringSite segment: straight, gay or trans, or null.
durationSecondsintegerVideo duration in seconds.
viewsintegerView count. Exact when withDetails is on, approximate from the listing otherwise.
likesintegerLike count. Present when withDetails is on.
votesUpintegerUp votes. Present when withDetails is on.
votesDownintegerDown votes, when the page exposes them (may be null).
ratingPercentintegerThumbs-up rating percentage (0 to 100), when the page exposes it (may be null).
ratingsCountintegerTotal votes (up plus down), when both are exposed (may be null).
commentsCountintegerNumber of comments, when the page exposes it (may be null).
isHDbooleanWhether the video is HD. Resolved from categories when withDetails is on; null if unknown at listing level.
isVRbooleanWhether the video is virtual reality. Resolved when withDetails is on; null if unknown at listing level.
isPremiumbooleanWhether the video is a premium listing.
uploaderstringUploader display name.
uploaderUrlstringUploader page URL.
uploaderTypestringUploader type, for example model, pornstar, channel.
uploadedAtstringUpload date (ISO 8601). Present when withDetails is on.
addedAgostringRelative upload label as shown on the page.
thumbnailstringThumbnail image URL.
previewVideoUrlstringShort preview clip URL, or null.
descriptionstringFull video description. Present when withDetails is on.
pornstarsstring[]Pornstars credited on the video, or null.
categoriesstring[]Categories the video is listed under. Present when withDetails is on.
tagsstring[]Tags on the video. Present when withDetails is on.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, an item with a populated error field is written instead.

Example output record

Real record from a live run (input {"searchQuery": "cars", "sort": "mostViewed", "withDetails": true, "maxVideos": 6}):

{
"title": "When She Can't Stop Shaking - Orgasm Compilation",
"url": "https://www.pornhub.com/view_video.php?viewkey=68986ff31c005",
"viewkey": "68986ff31c005",
"videoId": 472981815,
"segment": "straight",
"durationSeconds": 689,
"views": 18171553,
"likes": 29478,
"votesUp": 29478,
"isHD": true,
"isVR": false,
"isPremium": false,
"uploader": "BootyFrutti Juicy Bits",
"uploaderType": "model",
"uploadedAt": "2025-08-10T10:19:37+00:00",
"pornstars": ["BootyFrutti"],
"categories": [
"Amateur",
"Big Ass",
"Compilation",
"Female Orgasm",
"HD Porn",
"Verified Amateurs"
],
"tags": ["amateur", "homemade", "orgasm", "female orgasm", "big ass"],
"observedAt": "2026-09-04T10:04:50.000Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~pornhub-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"cars","sort":"mostViewed","maxVideos":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~pornhub-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"channel":"brazzers","sort":"topRated","maxVideos":100}'

Apify CLI:

apify call scrapers_lat/pornhub-scraper \
--input '{"category":"131","sort":"mostRecent"}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per video returned (result event). See the pricing tab for the current per-result price.
  • Optional detail add-on. When withDetails is on, each video that is successfully enriched from its detail page also charges a small details add-on on top of the result. Turn withDetails off to pay the listing price only.
  • No charge on failure. If a run errors, the actor writes an item with a populated error field and does not charge for it. A video whose detail page cannot be fetched is returned at listing level and is not charged the detail add-on. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 videos per run. Upgrade for higher maxVideos.
  • Residential proxy required. Pornhub geo-restricts and rate-limits datacenter IPs. Keep the default Apify residential proxy configuration.

FAQ and troubleshooting

A run returned 0 records. Why? The keyword or slug matched nothing, or the proxy could not reach the site. Try a broader searchQuery, confirm the pornstar, model or channel slug, and keep the residential proxy on. Zero-result runs are not charged.

Which source is used when I fill more than one? The first non-empty in this order: searchQuery, category, pornstar, model, channel. The rest are ignored.

Why is addedAgo sometimes an odd value like "56 years ago"? That relative label is taken directly from the page and can be inaccurate at the source. Use uploadedAt (present when withDetails is on) for the exact upload date.

How do I get exact view and like counts? Keep withDetails on. The listing shows approximate values; the detail page provides exact views, likes, uploadedAt, categories and tags.

Why is pornstars null? No pornstar was credited on that video. Missing source values are returned as null, never invented.

Can I filter by tags? Yes. Set tags to one or more tags, for example ["amateur", "pov"]. They are added to your searchQuery, or used on their own as the search terms when no other source is set.

What do isHD, isVR, isPremium and segment mean? isHD, isVR and isPremium are booleans flagging high-definition, virtual-reality and premium listings. segment is the site section the video belongs to (straight, gay or trans).

Do you need an API key? No. The actor needs no Pornhub account, API key or login. Only your Apify token to start a run.

Is this an official Pornhub tool? No. This actor is independent and has no affiliation with Pornhub or Aylo. It reads only public metadata and does not download any media.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Pornhub or Aylo. Accesses only publicly available metadata and downloads no media.