XVideos Video Downloader
Pricing
$2.65 / 1,000 resolved videos
XVideos Video Downloader
Resolve public XVideos watch-page URLs into direct source-hosted MP4 and HLS links. Export video IDs, titles, uploaders, durations, thumbnails, source URLs, and expiry times when available to an Apify dataset.
Pricing
$2.65 / 1,000 resolved videos
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
38
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
🎬 Public XVideos links for your workflow
Built for developers, researchers, media teams, and anyone who already has public XVideos watch-page URLs. XVideos Downloader turns known pages into structured dataset rows with direct source-hosted MP4 or HLS links, video IDs, titles, uploader names, durations, thumbnails, source URLs, and expiry times when available. This gives you source data to review, catalog, or pass into an API workflow without copying page details by hand.
Use it for these focused tasks:
- Resolve a known public watch-page URL into source media links with Xvideos Video Downloader.
- Pull title, uploader, duration, thumbnail, and format details into a dataset with Xvideos Video Extractor.
- Review source-provided MP4 links and quality details with Xvideos MP4 Downloader.
- Process several known public watch-page URLs in one run with Download Xvideos Videos.
- Check a supported public XVideos page and its direct links with Xvideos Downloader.
📦 Direct XVideos media links and metadata
Each successful row represents one public XVideos video with source-exposed media. The row keeps the stable videoId, source-confirmed sourceUrl, title, uploader, duration, and thumbnail when those values are available. availableFormats lists MP4 or HLS choices with quality, dimensions, content type, direct media URL, and expiresAt when the source provides them. Missing source values stay null instead of being guessed.
The Actor saves the first eligible occurrence of a source video as soon as it is found. If another submitted URL points to the same videoId, it is ignored after that first saved occurrence. The saved row describes the first match, not later aliases.
▶️ Resolve known XVideos watch pages
- Add one or more public XVideos watch-page URLs in XVideos video URLs.
- Start the Actor.
- Open the default dataset and inspect the saved rows.
- Choose a
mediaUrlfromavailableFormatsfor the format your workflow needs.
The Actor supports public watch pages on xvideos.com, xvideos.es, and xvideos2.com. It does not search XVideos, crawl categories or profiles, bypass private access, download files into Apify storage, create ZIP archives, or install a browser extension.
It works with public, reachable pages without XVideos cookies, an XVideos account, a browser extension, or a source API key. Use the prefilled URLs for a small first run, then add your own known targets or schedule repeated runs after you inspect the output. Use the Actor only for content you have the right to access, process, or download.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
videoUrls | array of objects | Required list of public XVideos watch-page URLs, with one URL object per row. |
videoUrls[].url | string | Adds one public watch-page URL. Supported hosts are xvideos.com, xvideos.es, and xvideos2.com; invalid or unsupported URLs are skipped while the run continues. |
Example input
This is the public input from a successful current-beta default-input run.
{"videoUrls": [{"url": "https://www.xvideos.com/video.oufvclb3b56/my_therapist_made_my_fantasy_come_true_-_lexis_star"},{"url": "https://www.xvideos.com/video.opkiitu533e/alanna_s_bitty_bikini_comes_right_off_alanna_pow_brazzers_enter_xvpromo_on_official_site_for_discount"},{"url": "https://www.xvideos.com/video.optlktt7c95/a_stranger_groped_me_on_a_public_bus_he_inserted_a_shaft_into_my_virgin_asshole_ai_"},{"url": "https://www.xvideos.com/video.oofavpl9a3f/i_took_my_hot_stepmom_on_a_secret_vacation_and_filled_her_tight_pussy_-_cory_chase"},{"url": "https://www.xvideos.com/video.oofpkpv3d79/gf_s_sister_no_penetration_just_rubbing_my_pussy_oops..._i_creampied_her"}]}
🧾 Output
Run output
| Field | Type | What it does |
|---|---|---|
results | string | Opens the default dataset overview with successful public video rows. |
Dataset row
| Field | Type | What it does |
|---|---|---|
videoId | string | Stable XVideos video identifier for repeatable identification. |
sourceUrl | string | Source-confirmed XVideos watch-page URL for the video. |
title | string or null | Video title shown by XVideos, when available. |
uploader | string or null | Uploader or author name shown by XVideos, when available. |
durationSeconds | integer or null | Video duration in seconds, when available. |
thumbnailUrl | string or null | Thumbnail or poster URL shown by XVideos, when available. |
availableFormats | array of objects | Direct MP4, HLS, or other playable formats exposed by XVideos for the video. |
availableFormats[].quality | string or null | Source quality label or normalized resolution label, when known. |
availableFormats[].width | integer or null | Format width in pixels, when known. |
availableFormats[].height | integer or null | Format height in pixels, when known. |
availableFormats[].contentType | string or null | Media content type, when known. |
availableFormats[].mediaUrl | string | Direct source-hosted media URL for the format. |
availableFormats[].expiresAt | string or null | Expiry timestamp for the media URL, when XVideos exposes or implies one. |
Genuine dataset row
This complete row is copied from a successful run of the current beta build. Its source URLs are shown as returned.
{"videoId": "oufvclb3b56","sourceUrl": "https://www.xvideos.com/video.oufvclb3b56/my_therapist_made_my_fantasy_come_true_-_lexis_star","title": "My Therapist Made My Fantasy Come True - LEXIS STAR","uploader": "lexis_star","durationSeconds": 1045,"thumbnailUrl": "https://thumb-cdn77.xvideos-cdn.com/6ae96fc7-c6cc-4563-8178-7fa3567d4fbd/3/xv_26_t.jpg","availableFormats": [{"quality": "low","width": null,"height": null,"contentType": "video/mp4","mediaUrl": "https://mp4-cdn77.xvideos-cdn.com/6ae96fc7-c6cc-4563-8178-7fa3567d4fbd/3/mp4_sd.mp4?secure=rnaqTXFctUNWKnq3kBw_Qw==,1789949389","expiresAt": "2026-09-21T00:09:49.000Z"},{"quality": "hls","width": null,"height": null,"contentType": "application/vnd.apple.mpegurl","mediaUrl": "https://hls-cdn77.xvideos-cdn.com/hkM0wzhFcbutyfxM--VIFQ==,1789949389/6ae96fc7-c6cc-4563-8178-7fa3567d4fbd/3/hls.m3u8","expiresAt": "2026-09-21T00:09:49.000Z"}]}
💳 Pricing
This Actor uses pay-per-event pricing. The Resolved video event is charged once for each successfully resolved public video saved to the dataset. Invalid, duplicate, unsupported, private, unavailable, and no-media targets do not create this video-result event.
🔌 Integrations
Read the dataset in Apify or through the Apify API. Export rows as JSON, CSV, Excel, XML, RSS, or HTML, or schedule runs for known public targets.
❓ FAQ
What happens if a URL uses an unsupported host?
Hosts outside xvideos.com, xvideos.es, and xvideos2.com are skipped. They do not create a video-result charge, and the Actor does not add support for other hosts.
What warning is shown for an invalid or unsupported URL?
The run gives one concise warning for the submitted value, with a safe host and video ID representation when available, then continues. Query tokens and internal details are not exposed.
What happens when the same video appears more than once?
The Actor saves the first eligible occurrence and ignores later URLs for the same source video. The saved row describes the first match and does not merge later matches into it.
What happens when a target has no usable media?
The Actor saves no video row for that target. Invalid, private, removed, blocked, unavailable, duplicate, or no-media targets do not become failure rows.
Can this XVideos downloader save MP4 files into Apify storage?
No. It returns direct source-hosted MP4 or HLS links and metadata in the dataset. It does not mirror files, create ZIP archives, or store video copies.
Do direct media links expire?
Some source links are signed or time-limited. Check expiresAt when it is present and run the same source URL again when you need a fresh link.
Can I search XVideos by keyword?
No. Add known public watch-page URLs. The Actor does not search XVideos or crawl categories, profiles, or other listing pages.
Do I need XVideos cookies, an account, or a source API key?
No. The Actor is built for public, reachable watch pages and does not ask for those credentials.
📝 Changelog
v1.0 (20-09-2026)
- Invalid or unsupported submitted URLs get one safe warning, and processing continues without a dataset row or charge.
- Output rows no longer include
fetchedAt; direct media formats and source details remain available.
v0.1
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- XNXX Video Downloader - Resolve public XNXX watch pages into direct MP4 or HLS links and metadata.
- Pornhub Video Data Downloader - Collect public Pornhub video metadata and source-visible media links from direct pages or searches.
- RedGifs Bulk Video Downloader - Process public RedGifs links or IDs in bulk and collect direct MP4 links with metadata.
- Facebook Media Downloader - Resolve known public Facebook videos, reels, or photos into source-hosted media links and details.
- Reddit Media Downloader - Get source-hosted links and post context for public Reddit videos, images, GIFs, and galleries.
Made with ❤️ by Maxime Dupré