Ultrathots Video Downloader · Apify
Ultrathots Video Downloader avatar

Ultrathots Video Downloader

Pricing

$8.00 / 1,000 video file saveds

Go to Apify Store
Ultrathots Video Downloader

Ultrathots Video Downloader

ultrathots.com: Saves the video file itself (.mp4) into the run's Key-Value Store. The row is short (files first) unless `extractDetails` is true.

Pricing

$8.00 / 1,000 video file saveds

Rating

0.0

(0)

Developer

DataWatcher

DataWatcher

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Features

Limited permissions

Share

Scrape ultrathots.com video data and save the video files in one run, then read the results as a table or through the Apify API. Build a searchable catalogue for media discovery, uploader research and trend analysis.

  • Reads search results, member pages, tag and category pages, the latest-updates page and single video pages.
  • Saves the full-quality .mp4 or the smaller preview copy in the run's Key-Value Store.
  • Returns title, creator, views, duration and tags for each video.

⭐ Why this one

1️⃣ One schema across video sites. All our video actors share one output schema and one input schema. Build your pipeline once: our other video actors (Erome Video Scraper, Redgifs Video Scraper, Ultrathots Video Scraper, XFree Video Scraper, Erome Video Downloader, RedGIFs Video Downloader, XFree Video Downloader) take the same input and return the same fields, so adding a site means changing the actor name, not your code.

  • Files and data in one run. Each row holds the video details and a link to the saved file.
  • You choose the quality. Save the full-quality .mp4 or the smaller preview copy.
  • Size limits you control. Set a limit per file and a limit for the whole run.
  • You pay only for saved files. Skipped and failed files are free, and the row alone is free.
  • One ZIP if you want it. Switch on createZip to get all saved files in videos.zip.

🔎 What it extracts

Paste a link from ultrathots.com into startUrls, or use the dedicated inputs. The kind of page is found from the URL.

Page typeExample URLInput to use
Latest updateshttps://ultrathots.com/latest-updates/startUrls
Searchhttps://ultrathots.com/search/your-term/startUrls or searchQueries
Member pagehttps://ultrathots.com/members/123456/startUrls or usernames
Tag or categoryhttps://ultrathots.com/tags/your-tag/startUrls or tags
One videohttps://ultrathots.com/videos/12345/video-name/startUrls or videoUrls
  • The site has no usernames. For a member, use the numeric member id or the member URL.
  • Albums are skipped. Only videos become rows.
  • maxResults is shared fairly over all your inputs.

🚀 How to scrape Ultrathots videos and save the files

  1. Open the actor on Apify and click Try for free.
  2. Add one or more Ultrathots links to startUrls, or fill searchQueries, usernames, tags or videoUrls. Set maxResults and pick the video quality.
  3. Click Start.
  4. Open the Output tab for the rows. Open the run's Key-Value Store for the saved files.

Example inputs:

Latest videos with full rows, saving the smaller preview copies:

{
"startUrls": ["https://ultrathots.com/latest-updates/"],
"maxResults": 10,
"extractDetails": true,
"videoQuality": "preview",
"maxTotalDownloadMb": 200
}

A search:

{
"searchQueries": [{"query": "your search term"}],
"maxResults": 20,
"extractDetails": true
}

One video page, full quality:

{
"videoUrls": ["https://ultrathots.com/videos/12345/video-name/"],
"extractDetails": true,
"videoQuality": "best"
}

🔌 Run it your way

  • Schedule it with Apify schedules.
  • Call it from the Apify API and its clients (Python, JavaScript).
  • Connect it to Make, n8n, Zapier, webhooks or Google Sheets.

💾 Where the files are

Each saved file goes into the run's Key-Value Store. The file is named creatorname_video-12345.mp4: the creator, then _video- and the video id. The creator is the username, or the display name when the site has no username, for example Ultrathots_Team_video-12345.mp4. An image is named creatorname_image-12345.jpg. The name starts with unknown only when there is no creator at all.

Each row has a storedFile object with the key, the public link, the size in bytes, the content type and the quality. Its status is saved, skipped or failed, and error says why a file was skipped or failed.

A file is skipped when it is bigger than maxFileSizeMb, when the run reached maxTotalDownloadMb, or when the video has no file link. The row is still written.

With createZip on, all saved files are also put into one videos.zip in the Key-Value Store.

⚖️ Rights

The videos belong to their creators and to the site. Saving a file does not give you the right to reuse it. Check the rights and the site's terms before you publish, resell or re-upload anything.

🎬 Quality

videoQuality picks the file to save. best is the full-quality .mp4 from videoFileUrl. preview is the smaller copy from previewVideoUrl. The default is best. The row reports the saved copy in storedFile.quality.

⚙️ Input

InputTypeDefaultRangeMeaning
startUrlslist of textemptyUltrathots links: search, member, tag, category, latest updates or video page.
searchQuerieslistemptySearches, each {"query": "...", "filter": "all"}. A plain text line is read as a search with filter all.
usernameslist of textemptyNumeric member ids or member URLs.
tagslist of textemptyTag names as the site writes them, or tag page URLs.
tagSortchoiceemptylatest, popularIgnored. Tag pages come in the site's own order, newest first.
videoUrlslist of textemptyVideo page URLs. One row per video.
maxResultsnumber1001 to 1,000Maximum number of videos returned in total, shared fairly over the inputs.
maxRequestsnumber2001 to 1,000Maximum number of page requests in total.
maxPagesPerSourcenumber1001 to 100Maximum listing pages read for one search, member or tag.
maxScrollsPerPagenumber1001 to 100Maximum load-more steps on one listing page.
maxRequestRetriesnumber20 to 5Retries after a network or server error. A block is not retried.
requestTimeoutSecsnumber305 to 120Time limit of one page request, in seconds.
proxyConfigurationproxyno proxyProxy settings.
extractDetailsyes/nonoNo gives a short row with the file first. Yes gives the full row: views, likes, tags, tagged accounts and links, plus storedFile.
videoQualitychoicebestbest, previewWhich copy to save.
maxFileSizeMbnumber2501 to 2,000A video bigger than this is not saved. Its row is still written.
maxTotalDownloadMbnumber1,0241 to 20,000Stops saving files when the files of the run reach this size.
createZipyes/nonoAlso saves all files as videos.zip.

Set extractDetails to yes to get views, tags and the other full fields. In searchQueries, the filter post gives the same result as all, because the search lists videos only. The filter tag opens the tag page. tagSort is ignored. On the free plan a run returns at most 1,000 videos, whatever maxResults says.

📦 Output: Ultrathots video data

One row per video. Missing values are null.

FieldTypeMeaning
recordTypetextThe row kind: video.
schemaVersiontextThe version of the output format.
sourcetextThe site the row comes from.
idtextThe site's own id of the video.
urltextThe video page on the site.
mediaTypetextvideo or image.
sourceTypetextWhat found the video: search, profile, tag or direct_video.
sourceUrltextThe search, member, tag or video URL that found the video.
titletextThe video's title.
creatorobjectThe account that posted the video: displayName, profileUrl, username, onlyfansUrl.
taggedAccountslistPerformers tagged in the video, with name and profileUrl.
viewsnumberViews of the video.
likesnumberLikes of the video.
durationSecondsnumberThe video's length in seconds.
widthnumberFile width in pixels.
heightnumberFile height in pixels.
hasAudioyes/noWhether the file has sound.
thumbnailUrltextThe preview image.
posterUrltextThe larger poster image.
tagslistThe video's tags, in the site's order.
videoFileUrltextDirect link to the full-quality .mp4.
previewVideoUrltextDirect link to the smaller copy.
imageUrltextDirect link to the image when mediaType is image.
storedFileobjectThe saved file: key, url, sizeBytes, mimeType, quality, status, error.
datesobjectposted (when the video was posted) and scraped (when the run read it).

In the approved sample, width, height, hasAudio, imageUrl and creator.username were empty, and so was creator.onlyfansUrl. The site gave no value.

Example: a row

A row from a member page with extractDetails on and videoQuality set to preview. Long lists are shortened.

{
"recordType": "video",
"schemaVersion": "4.4.1",
"source": "ultrathots",
"id": "94094",
"url": "https://ultrathots.com/videos/94094/bonnie-blue-orgy-with-blowjobs-doggystyle-and-facials/",
"mediaType": "video",
"sourceType": "profile",
"sourceUrl": "https://ultrathots.com/members/341877/",
"title": "Bonnie Blue Orgy With Blowjobs, Doggystyle and Facials",
"creator": {
"displayName": "Ultrathots Team",
"profileUrl": "https://ultrathots.com/members/341877/"
},
"views": 3100,
"likes": 0,
"durationSeconds": 3055.0,
"thumbnailUrl": "https://ultrathots.com/contents/videos_screenshots/94000/94094/506x285/6.jpg",
"posterUrl": "https://ultrathots.com/contents/videos_screenshots/94000/94094/preview.jpg",
"tags": ["OnlyFans", "Sextape", "Blowjob", "Blonde"],
"previewVideoUrl": "https://ultrathots.com/get_file/3/3c5f5f2fb7e404a64805c68c374a7a7c/94000/94094/94094_preview.mp4/",
"storedFile": {
"key": "Ultrathots_Team_video-94094.mp4",
"url": "https://api.apify.com/v2/key-value-stores/default/records/Ultrathots_Team_video-94094.mp4",
"sizeBytes": 446267,
"mimeType": "video/mp4",
"quality": "preview",
"status": "saved"
},
"dates": {
"posted": "2026-11-12T01:49:36Z",
"scraped": "2026-11-13T23:58:10Z"
}
}

📊 Run stats

The approved sample had 4 cases: a list page, a search, a member page and one video page. Together they gave 10 rows.

💰 Pricing

You pay per saved file. The row alone is free.

EventPriceWhen it is charged
video-file-saved (Video file saved)$8.00 per 1,000 eventsOne file (.mp4 video or image) is saved in the run's Key-Value Store.
  • Skipped and failed files are free.
  • There is no start fee.
  • Free plan: each run returns up to 1,000 results.

🎯 Use cases

  • Media discovery. Build a searchable catalogue of publicly listed videos.
  • Uploader research. See what a creator account posts and how many views it gets.
  • Trend analysis. Compare tags, views and durations over time.
  • Archiving. Keep the files you have the right to keep, with their titles and tags.

🩺 If a run fails

The run health (the RUN_HEALTH record, RUN_SUMMARY and the last line of the log) names the cause, for example site down: list request answered 500 x3. Find that start of the message in the table.

Error in the log / run healthWhat it meansWhat you do
site down: <request> answered 500, 502-504, 520-526The site is offline or has a fault. The actor waits longer between tries, then stops the run.Try again later.
blocked: <request> answered 401, 403, 1020 or a captcha pageThe site refused the request or showed a captcha page.The actor already retries once through the Apify proxy. If it still fails, turn on the Apify proxy in the input (use the RESIDENTIAL group if it is already on).
rate limited: <request> answered 429The site asks for fewer requests. The actor waits and slows down by itself.Try again later.
gone: <request> answered 404, 410The page or offer was removed. The actor skips it and it is not charged.Nothing; this is normal.
network error: <request> failed with timeout (or connection error, DNS error)A timeout or a broken connection. The actor retries with a pause.Try again later.
wrong answer: <request> returned HTML instead of JSON (or an empty body)The site answered with a page that is not data (HTML instead of JSON, an empty body). The site has probably changed.Report it in the Issues tab; we fix it.

❓ FAQ

How do I scrape many Ultrathots videos at once?

Add several links or terms to the inputs and set maxResults. The limit is shared fairly over the inputs. The free plan returns up to 1,000 videos per run.

Can I call the Ultrathots video downloader from the API?

Yes. Start the actor with the Apify API or its Python and JavaScript clients, then read the rows from the run's dataset and the files from its Key-Value Store.

How much does it cost to save the files?

It costs $8.00 per 1,000 saved files. Skipped and failed files are free, and so is the row alone.

Which inputs are ignored?

tagSort is ignored, because tag pages have no plain sort link. The search filter post gives the same result as all.

How do I export Ultrathots videos to Excel or CSV?

Run the actor, open the Output tab and pick Excel or CSV in the export options. JSON, XML and HTML are there too, and the Apify API returns the same data.

Data notice

This actor returns only what the site shows publicly at run time. We don't store or keep that data and are not its controller — you decide how you use it.

🔗 Other video scrapers (same schema)

Ultrathots (this site)

Erome

RedGIFs

XFree

💬 Feedback and custom work

Need another portal, a field or a custom feed? Open an issue on the Issues tab.