Pornhub Video Metadata & Search Scraper avatar

Pornhub Video Metadata & Search Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Pornhub Video Metadata & Search Scraper

Pornhub Video Metadata & Search Scraper

Scrape public Pornhub video listings from search, category, pornstar, model and channel pages: title, views, duration, likes, tags, categories and uploader.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

1

Bookmarked

5

Total users

0

Monthly active users

21 hours ago

Last modified

Share

Pornhub Video Metadata & Search Scraper

Pornhub Video Metadata & Search Scraper

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": "Mi madrastra me pide ayuda con sus redes sociales y me aprovecho para hacerle sentir mi enorme polla.",
"url": "https://www.pornhub.com/view_video.php?viewkey=6a565cffa7e67",
"viewkey": "6a565cffa7e67",
"durationSeconds": 902,
"views": 603760,
"likes": 1552,
"votesUp": 1552,
"uploader": "Kenay Timmy",
"uploaderUrl": "https://www.pornhub.com/model/kenay-timmy",
"uploaderType": "model",
"uploadedAt": "2026-07-14T18:28:03+00:00",
"addedAgo": "56 years ago",
"thumbnail": "https://pix-cdn77.phncdn.com/c6371/videos/202607/14/55505675/original_55505675.mp4/plain/ex:1:no/bg:0:0:0/rs:fit:320:180/vts:868?hash=Ln-s2IASSeNmSjMXKqQvH9qEenk=&validto=1786457292",
"previewVideoUrl": "https://ew.phncdn.com/c6251/videos/202607/14/55505675/180P_225K_55505675.webm?validfrom=1786367292&validto=1786374492&rate=113k&burst=260k&ipa=1&hash=jROIkg%2FhiT5qNXivQGSKlo8QR44%3D",
"description": "Watch Mi madrastra me pide ayuda con sus redes sociales... in Spanish on Pornhub.com [trimmed]",
"pornstars": [
"Kathy Jay"
],
"categories": [
"18-25",
"Amateur",
"Anal",
"Big Ass",
"Big Tits",
"Cumshot",
"HD Porn",
"Latina"
],
"tags": [
"amateur teenagers",
"18 year old latina",
"real couple homemade",
"amateur anal",
"homemade",
"squirting"
],
"observedAt": "2026-08-10T14:16:48.583Z",
"error": null
}

The most complete Pornhub metadata scraper available. It returns every field a public video listing and detail page expose, including exact view and like counts, duration, uploader, upload date, description, pornstars, categories and tags, and lets you scrape by search keyword, category, 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. Order the listing with sort and narrow with period.

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.
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 per video).
durationSecondsintegerVideo duration in seconds.
viewsintegerExact view count. Exact when withDetails is on.
likesintegerLike count. Present when withDetails is on.
votesUpintegerUp votes. Present when withDetails is on.
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", "withDetails": true, "maxVideos": 10}):

{
"title": "Hot german girl needs it so bad she fucks her cars gearstick & creampies all over it🔥",
"url": "https://www.pornhub.com/view_video.php?viewkey=67c487031bfdc",
"viewkey": "67c487031bfdc",
"durationSeconds": 702,
"views": 2476668,
"likes": 10554,
"votesUp": 10554,
"uploader": "EvieEvans1",
"uploaderUrl": "https://www.pornhub.com/model/evieevans1",
"uploaderType": "model",
"uploadedAt": "2025-03-02T16:39:51+00:00",
"addedAgo": "1 year ago",
"pornstars": null,
"categories": [
"60FPS",
"Amateur",
"Female Orgasm",
"German",
"HD Porn"
],
"observedAt": "2026-08-10T14:16:50.698Z",
"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.
  • No charge on failure. If a run errors, the actor writes an item with a populated error field and does not charge for it. 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.

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.