XVideos Video Metadata & Search Scraper
Pricing
from $6.15 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
21
Total users
2
Monthly active users
21 hours ago
Last modified
Categories
Share
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
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
maxVideos | integer | no | 10 | Maximum number of videos to collect. Free Apify plans are capped at 10 per run. |
withDetails | boolean | no | true | When 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). |
searchQuery | string | no | (empty) | Keyword to search public videos, for example yoga, cars. |
tag | string | no | (empty) | Public tag/category slug, for example milf from /tags/milf. Ignored when a search query is set. |
channel | string | no | (empty) | Channel, studio, model or pornstar profile slug, for example brazzers from /channels/brazzers. Ignored when a higher-priority source is set. |
sort | enum | no | relevance | relevance, uploadDate, rating, views, or longest. Applies to search and channel sources. |
proxy | object | no | Apify proxy | Standard 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.
| Field | Type | Description |
|---|---|---|
thumbnail | string | Thumbnail image URL. |
title | string | Video title. |
url | string | Video page URL. |
videoId | string | XVideos video ID. |
durationSeconds | integer | Duration in seconds. |
views | integer | View count (exact when detail is on). |
ratingPercent | integer | Positive-rating percentage. |
previewVideoUrl | string | Animated preview clip URL. |
uploader | string | Uploader/channel name. |
uploaderUrl | string | Uploader profile URL. |
uploaderType | string | Uploader type, for example profile, channel. |
uploadedAt | string | Upload date/time in ISO 8601 (detail only). |
description | string | Video description (detail only). |
videoFileUrl | string | Direct MP4 file URL from the video page (detail only). |
votes | integer | Total vote count (detail only). |
pornstars | string[] | Tagged pornstars/models (detail only). |
tags | string[] | Tags/keywords for the video (detail only). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null 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:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "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 (
resultevent). WhenwithDetailsis on and a detail page is fetched successfully, an additivedetailsevent 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
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon 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.
Related scrapers
- xHamster Video Metadata & Search Scraper: search and video metadata from xHamster.
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.
