XVideos Video Metadata & Search Scraper avatar

XVideos Video Metadata & Search Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
XVideos Video Metadata & Search Scraper

XVideos Video Metadata & Search Scraper

Scrape public XVideos video listings from search, tag, category and channel pages: title, views, duration, rating, tags and uploader.

Pricing

from $6.15 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

21

Total users

2

Monthly active users

21 hours ago

Last modified

Share

XVideos Video Metadata & Search Scraper

XVideos Video Metadata & Search Scraper

Here is one real result, with every field the actor returns when withDetails is on:

{
"thumbnail": "https://thumb-cdn77.xvideos-cdn.com/c30fc53d-3ac8-4d9c-bd16-d8af36905037/5/xv_10_t.jpg",
"title": "Yoga Whore Needs Big Cock To Stretch And Open Her Cunt",
"url": "https://www.xvideos.com/video.opmvtmk282b/yoga_whore_needs_big_cock_to_stretch_and_open_her_cunt",
"videoId": "opmvtmk282b",
"durationSeconds": 1044,
"views": 419668,
"ratingPercent": 100,
"previewVideoUrl": "https://thumb-cdn77.xvideos-cdn.com/c30fc53d-3ac8-4d9c-bd16-d8af36905037/5/preview.mp4",
"uploader": "POVD",
"uploaderUrl": "https://www.xvideos.com/povd",
"uploaderType": "profile",
"observedAt": "2026-08-15T14:03:05.759Z",
"error": null,
"uploadedAt": "2026-07-07T22:00:00+00:00",
"description": "Yoga Whore Needs Big Cock To Stretch And Open Her Cunt",
"videoFileUrl": "https://mp4-cdn77.xvideos-cdn.com/c30fc53d-3ac8-4d9c-bd16-d8af36905037/5/mp4_sd.mp4?secure=gbNGJ-E0zKAyH3qrH-3SoA==,1786813385",
"votes": 1518,
"pornstars": ["David Lee Xxx27k", "Thea Summers10k"],
"tags": ["blonde", "sexy", "petite", "blowjob", "riding", "slut", "doggystyle", "skinny", "POV", "yoga", "spinner", "facial-cumshot", "small-tits", "wet-pussy", "tight-pussy", "slim-body", "fun-sex", "girl-enjoying-sex"]
}

The most complete XVideos scraper available. It returns every field the XVideos listing exposes for each video, plus detail-page fields (exact views, rating percent, vote count, upload date, description, direct preview and video-file URLs) and structured pornstars and tags, and lets you scrape by search, tag/category or channel/profile.

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

Apify Coverage Output Billing

Table of contents

What it does

The actor loads an XVideos search, tag/category or channel/profile listing, paginates through it, and writes one normalized record per video to the run's dataset. When withDetails is on, it also opens each video page to add the exact view count, rating percent, vote count, upload date, description, direct preview and video-file URLs, and the structured pornstars and tags lists.

Dates are normalized to ISO 8601 and missing source values are returned as null, never invented. XVideos rate limits per IP, so a rotating proxy is recommended for large runs. This is an adult site; only public listing and video-page metadata is collected.

Quickstart

Open the actor, paste this into the input, and press Run. It searches for yoga and fetches video details.

{
"searchQuery": "yoga",
"maxVideos": 10,
"withDetails": true
}

Pick exactly one source: searchQuery, tag, or channel. If more than one is filled, the first non-empty in that order is used.

Input reference

FieldTypeRequiredDefaultDescription
maxVideosintegerno10Maximum number of videos to collect. Free Apify plans are capped at 10 per run.
withDetailsbooleannotrueWhen on, each video page is opened to add exact views, rating percent, vote count, upload date, description and tags. Off returns listing-level fields only (faster).
searchQuerystringno(empty)Keyword to search public videos, for example yoga, cars.
tagstringno(empty)Public tag/category slug, for example milf from /tags/milf. Ignored when a search query is set.
channelstringno(empty)Channel, studio, model or pornstar profile slug, for example brazzers from /channels/brazzers. Ignored when a higher-priority source is set.
sortenumnorelevancerelevance, uploadDate, rating, views, or longest. Applies to search and channel sources.
proxyobjectnoApify proxyStandard Apify proxy configuration. XVideos rate limits per IP, so a rotating proxy helps on large runs.

Provide exactly one source. Sources do not combine.

Output reference

One dataset item per video. Listing-level fields are always present; the rest are added when withDetails is on. Types: string, integer, string[], or null when the source value is absent.

FieldTypeDescription
thumbnailstringThumbnail image URL.
titlestringVideo title.
urlstringVideo page URL.
videoIdstringXVideos video ID.
durationSecondsintegerDuration in seconds.
viewsintegerView count (exact when detail is on).
ratingPercentintegerPositive-rating percentage.
previewVideoUrlstringAnimated preview clip URL.
uploaderstringUploader/channel name.
uploaderUrlstringUploader profile URL.
uploaderTypestringUploader type, for example profile, channel.
uploadedAtstringUpload date/time in ISO 8601 (detail only).
descriptionstringVideo description (detail only).
videoFileUrlstringDirect MP4 file URL from the video page (detail only).
votesintegerTotal vote count (detail only).
pornstarsstring[]Tagged pornstars/models (detail only).
tagsstring[]Tags/keywords for the video (detail only).
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. If a single video's detail page fails, the listing-level record is still returned with a short error note.

Example output record

Real record from a live run (input {"searchQuery":"yoga","maxVideos":8,"withDetails":true}; the tags list is trimmed for readability, the actor returned 26 tags for this video):

{
"thumbnail": "https://thumb-cdn77.xvideos-cdn.com/f4041f1d-0dc6-48cb-a3cf-07727c8997d5/0/xv_28_t.jpg",
"title": "Hot Mature Housewife Fucks Her Huge Cock Yoga Instructor",
"url": "https://www.xvideos.com/video.oiooehhafd3/hot_mature_housewife_fucks_her_huge_cock_yoga_instructor",
"videoId": "oiooehhafd3",
"durationSeconds": 1135,
"views": 6958568,
"ratingPercent": 100,
"previewVideoUrl": "https://thumb-cdn77.xvideos-cdn.com/f4041f1d-0dc6-48cb-a3cf-07727c8997d5/0/preview.mp4",
"uploader": "Camsoda",
"uploaderUrl": "https://www.xvideos.com/camsoda",
"uploaderType": "profile",
"observedAt": "2026-08-15T14:03:05.957Z",
"error": null,
"uploadedAt": "2025-08-20T22:00:00+00:00",
"description": "Hot Mature Housewife Fucks Her Huge Cock Yoga Instructor",
"videoFileUrl": "https://mp4-gcore.xvideos-cdn.com/f4041f1d-0dc6-48cb-a3cf-07727c8997d5/0/video_360p.mp4?secure=hMVLj7BfR4c5xrE3ujuTRQ==,1786813385",
"votes": 16765,
"pornstars": ["Derek Savage19k", "Bonnie Nix10k"],
"tags": ["ass", "riding", "slut", "homemade", "busty", "solo", "huge-tits", "beauty", "gym", "big-tits"]
}

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~xvideos-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQuery":"yoga","maxVideos":25,"withDetails":true}'

Start a run asynchronously:

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

Apify CLI:

apify call scrapers_lat/xvideos-scraper \
--input '{"channel":"brazzers","maxVideos":50}'

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 record returned (result event). When withDetails is on and a detail page is fetched successfully, an additive details event is also charged. See the pricing tab for current prices.
  • 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 records per run. Upgrade for higher maxVideos.
  • Rate limits. XVideos rate limits per IP. Keep the default Apify proxy on for large runs.

FAQ and troubleshooting

A run returned 0 records. Why? The search, tag or channel matched nothing, or the source rate-limited the run. Keep the proxy on, lower maxVideos, or try a different keyword. Zero-result runs are not charged.

Some records have an error note but still have data. Why? When a single video's detail page fails to load, the listing-level record is still returned with a short error note so you keep the row. The base listing fields are always present.

Can I get the direct video file URL? Yes. With withDetails on, each record carries videoFileUrl and previewVideoUrl parsed from the video page. These are time-signed CDN URLs and expire.

Which sources can I combine? None; pick exactly one of searchQuery, tag, or channel. If more than one is set, the first non-empty in that order is used.

Is this an official XVideos tool? No. This actor is independent and has no affiliation with XVideos. It reads only publicly available listing and video-page metadata.

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 XVideos. Accesses only publicly available data.