XHamsterLive Downloader avatar

XHamsterLive Downloader

Pricing

$2.65 / 1,000 media links

Go to Apify Store
XHamsterLive Downloader

XHamsterLive Downloader

XHamsterLive downloader for accessible live rooms, model pages, saved videos, and VR-capable media. Export HLS media links, variants, thumbnails, duration, model context, and source URLs.

Pricing

$2.65 / 1,000 media links

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

0

Monthly active users

9 days ago

Last modified

Share

For developers, researchers, and media teams with public XHamsterLive URLs, this Actor finds source-hosted HLS media links and source data in an Apify dataset. Use the links for content review, cataloging, media operations, research, or an API workflow.

📦 XHamsterLive media rows

Each saved row is one successful accessible live stream, saved video, or VR-capable media item with at least one direct source-hosted HLS media link. The row includes the source page, media kind, model context, title, thumbnail, duration, VR signal, and playback details when XHamsterLive exposes them. Live-room and saved-video rows use HLS because that is what XHamsterLive exposes for public playback.

First match only

The first eligible occurrence of a source item is saved as soon as it is found. If another submitted URL or listing later points to that item, that later match is ignored, so the saved row describes the first match.

🚀 Resolve public XHamsterLive media

  1. Open the Actor input.
  2. Add one public XHamsterLive listing, live-room, model-page, saved-video, or VR-capable page URL per row.
  3. Start the Actor.
  4. Open the dataset.
  5. Use mediaVariants[].mediaUrl for a source-hosted HLS link while it is available.

Successful rows can appear as the Actor finds them. The prefilled listing URLs give you a useful first batch, or you can add your own public pages.

You can also submit a public model or saved-video page such as https://xhamsterlive.com/ExampleModel or https://xhamsterlive.com/ExampleModel/videos.

⚙️ Input

Input fields

FieldTypeWhat it does
startUrlsarray of objectsAdds 1 to 100 publicly accessible XHamsterLive listing, live-room, model-page, saved-video, or VR-capable page URLs that expose the media you want.
startUrls[].urlstringHolds one XHamsterLive page URL.

Input example

This is the public default input used for a successful run.

{
"startUrls": [
{
"url": "https://xhamsterlive.com/"
}
]
}

The form's prefilled listing URLs include /girls, /men, /trans, and /couples.

🧾 Output

Dataset link

FieldTypeWhat it does
resultslink stringOpens successful XHamsterLive media rows in the default dataset overview.

Media row

All saved rows use this shape. mediaVariants contains at least one direct source-hosted HLS variant.

FieldTypeWhat it does
mediaIdstring or nullShows the source-visible room, stream, or video identifier when available.
sourceUrlstringLinks to the XHamsterLive page for this media result.
titlestring or nullShows the source-visible media, room, or saved-video title when available.
modelNamestring or nullShows the source-visible model or room name when available.
modelUrlstring or nullLinks to the source-visible model or room page when available.
mediaKindstringClassifies the row as liveStream, savedVideo, vr, or unknown.
durationSecondsinteger or nullShows saved-video duration in seconds when available. Live streams use null.
thumbnailUrlstring or nullLinks to a source-hosted thumbnail or poster when available.
isVrboolean or nullShows whether the source exposes a VR-capable signal. null means no clear VR signal was exposed.
mediaVariantsarray of objectsLists one or more direct source-hosted HLS variants for the row.
mediaVariants[].mediaUrlstringGives the direct source-hosted media URL or HLS playlist for the variant.
mediaVariants[].qualitystring or nullShows the source quality or normalized resolution label when known.
mediaVariants[].widthinteger or nullShows media width in pixels when known.
mediaVariants[].heightinteger or nullShows media height in pixels when known.
mediaVariants[].contentTypestring or nullShows the media content type when known.
mediaVariants[].expiresAtstring or nullShows the parsed expiry time when the source URL exposes one.

Example saved-video row

This complete row is from a successful run of the current beta build.

{
"mediaId": "66604227",
"sourceUrl": "https://xhamsterlive.com/queenryan/videos",
"title": "copy_4DF7444C-B141-4068-8CD2-35B49DA7E54A",
"modelName": "queenryan",
"modelUrl": "https://xhamsterlive.com/queenryan",
"mediaKind": "savedVideo",
"durationSeconds": 13,
"thumbnailUrl": "https://videos.strpst.com/95564285/ac68674ba513d69a047b0929c144840f/thumb/1080p/thumb-0004.jpg",
"isVr": false,
"mediaVariants": [
{
"mediaUrl": "https://videos.strpst.com/95564285/ac68674ba513d69a047b0929c144840f/hls/master.m3u8?md5=IbZB8pPW7ffU71IAQyUlxQ&expires=1790752831",
"quality": "1080p",
"width": 608,
"height": 1080,
"contentType": "application/vnd.apple.mpegurl",
"expiresAt": "2026-09-30T07:20:31.000Z"
}
]
}

💳 Pricing

This Actor uses pay-per-event pricing. You are charged one Media link event for each successful media row with at least one direct source-hosted media URL. A target that produces no qualifying row does not create this event.

🔌 Integrations

Run the Actor in Apify Console or through the Apify API. Export the dataset as JSON, CSV, Excel, XML, RSS, or HTML, schedule repeat runs, or send run events through Apify webhooks.

❓ FAQ

Does this Actor download MP4 files?

No. It returns source-hosted HLS media links and metadata. It does not download, store, transcode, or mirror video files.

Can it find media from listing URLs?

Yes. Add public listing, live-room, model-page, saved-video, or VR-capable page URLs. The Actor saves successful accessible media rows when the source exposes a usable direct link.

Does it need a login, cookies, or a source API key?

No for pages that XHamsterLive exposes publicly. It also does not need a browser extension or local recorder. It cannot retrieve media that requires private, paid, member-only, or account-restricted access.

What happens when a page is offline or has no media?

That target does not create a dataset row. Invalid, inaccessible, offline, and no-media targets are left out of the successful media rows.

What happens when the same media item appears more than once?

The first eligible occurrence is saved as soon as it is found. Later matches of that source item are ignored, and the saved row describes the first match.

How does the Actor mark VR media?

mediaKind can be vr, and isVr shows the VR signal exposed by the source. A null value means the source did not expose a clear VR signal.

No. A link can stop working when the source removes the media, a live room goes offline, or the source rotates a playback URL. Run the Actor again when you need a fresh link.

Can it record a live room or wait for one to come online?

No. It returns a playable source link only when the public source exposes one. It does not create a long-running recording or wait for a room to come online.

📝 Changelog

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 🫡

Made with ❤️ by Maxime Dupré