XFree Video Downloader
Pricing
from $6.80 / 1,000 video file saveds
XFree Video Downloader
Downloads the video files (.mp4) of xfree.com searches, profiles, tags and video pages into your Apify storage, named creator_video-id.mp4, with the creator and OnlyFans link in the row. Optional ZIP of all files and optional full details (tags, views, likes).
Pricing
from $6.80 / 1,000 video file saveds
Rating
0.0
(0)
Developer
DataWatcher
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Scrape video data from xfree.com by search, account, tag or video URL and save each .mp4 file in your run's Key-Value Store. Files are named <creator>_video-<id>.mp4 (for example creatorname_video-12345.mp4), so you sort them by creator at once. Every row has the link to the saved file and the creator's OnlyFans link. Get the rows as JSON, CSV or Excel, or through the API.
- Saved file:
storedFile(key, public link, size in bytes, type, status). - File names:
<creator>_video-<id>.mp4, no folders, the same names insidevideos.zip. A video without a creator is saved asunknown_video-<id>.mp4. - Short rows by default (files first). Set
extractDetailstotruefor the full row. - Optional
videos.zipwith all saved files of the run (createZip).
Need only links and data, without files? Use the XFree Video Scraper.
⭐ 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, XFree Video Scraper, Erome Video Downloader, RedGIFs Video Downloader) take the same input and return the same fields, so adding a site means changing the actor name, not your code.
- Low price, no start fee. You pay $0.008 per saved file ($8.00 per 1,000). For comparison, the busiest RedGifs downloader charges $0.009 per video and gives links only. Here you get the real files.
- Real
.mp4files, named for sorting. Every video is saved as<creator>_video-<id>.mp4in your Key-Value Store, so a folder of downloads sorts by creator at once. - One ZIP when you want it. Set
createZipand getvideos.zipwith all files of the run under the same names. - OnlyFans link on every row.
creator.onlyfansUrlsits next to the file link, ready for your lead or creator lists. - Skipped and failed files are free. The row is still returned, and you pay only for files that are saved.
- Files first, lean rows. Short rows by default; set
extractDetailsfor views, likes, tags and links. - Honest runs.
OUTPUTcounts saved, skipped and failed files, andRUN_HEALTHtells you if a run is notok.
🔎 What it extracts
One row per unique video, with its file saved. The page types it reads:
| Page type | Example URL | Input to use |
|---|---|---|
| Search | https://www.xfree.com/search?q=teen | searchQueries or startUrls |
| Profile (account) | https://www.xfree.com/creatorname | usernames or startUrls |
| Tag, including language tags | https://www.xfree.com/tag/Teen, https://www.xfree.com/tag/pl-Amatorzy | tags or startUrls |
| Video page | https://www.xfree.com/video?id=12345&user=creatorname | videoUrls or startUrls |
- Tag names are kept exactly as the site writes them (
pl-Amatorzy). - Search tabs:
all(default),postandtag.
🚀 How to scrape XFree videos and save the files
- Open the actor on Apify and click Try for free.
- Fill in a search, usernames or tags, or paste xfree.com URLs into
startUrlsorvideoUrls. - Click Start.
- Open the Output tab: Files links to your
.mp4files in the Key-Value Store, Saved files lists the rows. Download the rows as JSON, CSV or Excel, or fetch them with the Apify API.
Example inputs:
{ "videoUrls": ["https://www.xfree.com/video?id=12345&user=creatorname"] }
{ "usernames": ["creatorname"], "maxResults": 20, "createZip": true }
{ "tags": ["Teen"], "tagSort": "latest", "maxResults": 10, "videoQuality": "preview" }
{ "searchQueries": [{ "query": "teen" }], "maxResults": 10, "extractDetails": true }
🔌 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
- On the Output tab, the Files link opens the run's default Key-Value Store. Each file is there as
<creator>_video-<id>.mp4.storedFile.urlis its public link. - With
createZipset totrue, the store also holdsvideos.zip(keyvideos.zip) with all saved files, under the same names. TheOUTPUTrecord haszipUrl(the signed link to the ZIP) andfileCount(files saved). - Links are signed. A store that is not named is deleted by Apify after about 7 days. Download the files you need before that, or copy them to a named store.
- The storage is billed by Apify to your account, like any run.
storedFile.status says what happened to the file:
| Status | Meaning | Charged |
|---|---|---|
saved | The file is in the store. | Yes, video-file-saved. |
skipped | Not downloaded: the file is over maxFileSizeMb, the run reached maxTotalDownloadMb, the video has no file link, or the free plan limit of 50 files per run is reached. storedFile.error says which. | No |
failed | The download failed (for example HTTP 404). One retry is made first. storedFile.error says why. | No |
The row of a skipped or failed file is still returned, free.
⚖️ Rights
Saved videos belong to their creators. You are responsible for having the right to save, keep and use them, and for following the law and xfree.com terms.
🎬 Quality
videoQuality picks the file to save: best is the full-quality .mp4 (videoFileUrl), preview is the smaller copy (previewVideoUrl).
🔗 OnlyFans link
creator.onlyfansUrl is the creator's OnlyFans link, e.g. https://onlyfans.com/creatorname. It is the link button the site shows with the video. On a profile, a video without a button gets the profile's own OnlyFans link.
⚙️ Input
| Input | Type | Default | Range | Meaning |
|---|---|---|---|---|
startUrls | list of URLs | none | xfree.com URLs | Search, profile, tag or video page URLs. The kind is found from the URL. |
searchQueries | list | none | – | Items {"query": "...", "filter": "all" | "post" | "tag"}. filter is optional (default all). |
usernames | list of text | none | – | Account handles, with or without @, or profile URLs. Every video of each account. |
tags | list of text | none | – | Tag names exactly as the site writes them (e.g. pl-Amatorzy), or tag page URLs. |
tagSort | text | empty (site default order) | latest or popular | Order of tag pages. |
videoUrls | list of URLs | none | – | Video page URLs. One row per video. |
extractDetails | yes/no | false | – | false: a short row, files first. true: the full row (views, likes, tags, tagged accounts, links) plus storedFile. |
videoQuality | text | best | best or preview | Which file to save. |
maxFileSizeMb | integer | 250 | 1 to 2,000 | A bigger file is skipped. |
maxTotalDownloadMb | integer | 1024 | 1 to 20,000 | Files stop being saved when the saved files of the run together reach this size. |
createZip | yes/no | false | – | Also save videos.zip. |
maxResults | integer | 100 | 1 to 1,000 | Maximum videos returned over all inputs. The free Apify plan returns up to 1,000 results per run. |
maxRequests | integer | 200 | 1 to 1,000 | Maximum page requests of the run: listing pages, load-more steps and video pages. |
maxPagesPerSource | integer | 100 | 1 to 100 | Maximum listing pages for one search, profile or tag. |
maxScrollsPerPage | integer | 100 | 1 to 100 | Maximum "load more" steps on one listing page. |
maxRequestRetries | integer | 2 | 0 to 5 | Retries after a network error or a server error (page requests). |
requestTimeoutSecs | integer | 30 | 5 to 120 | Time limit of one request, in seconds. |
Use at least one of startUrls, searchQueries, usernames, tags or videoUrls.
📦 Output: XFree video data
The short row (default) has id, url, mediaType (always video on XFree), title, creator with onlyfansUrl, durationSeconds, width, height, imageUrl (empty for videos), storedFile and dates. With extractDetails set to true, it also has taggedAccounts, views, likes, thumbnailUrl, tags, videoFileUrl and previewVideoUrl. A missing text, number or object is null. A missing list is [].
| Field | Type | Meaning |
|---|---|---|
storedFile.key | text or null | The store key of the saved file, e.g. creatorname_video-12345.mp4. |
storedFile.url | text or null | The public link to the saved file. |
storedFile.sizeBytes | integer or null | The saved file's size in bytes. |
storedFile.mimeType | text or null | The file's content type, e.g. video/mp4. |
storedFile.quality | text or null | best or preview: the copy that was saved. |
storedFile.status | text | saved, skipped or failed. |
storedFile.error | text or null | Why the file was skipped or failed; null when saved. |
Example: a row
An example row (videoUrls input, short row).
{"recordType": "video","source": "xfree","id": "12345","url": "https://www.xfree.com/video?id=12345","title": "Example video title","creator": { "username": "creatorname", "displayName": "Creator Name", "profileUrl": "https://www.xfree.com/creatorname", "onlyfansUrl": "https://onlyfans.com/creatorname" },"durationSeconds": 25.067,"width": 1080,"height": 1920,"storedFile": {"key": "creatorname_video-12345.mp4","url": "https://api.apify.com/v2/key-value-stores/EXAMPLEID/records/creatorname_video-12345.mp4","sizeBytes": 3706343,"mimeType": "video/mp4","quality": "best","status": "saved"},"dates": { "posted": "2025-01-01T12:00:00Z", "scraped": "2025-01-02T12:00:00Z" }}
📊 Run stats
Each run saves two records in the key-value store. OUTPUT has the run counters and these for the files:
| Key | Meaning |
|---|---|
filesSaved, filesSkipped, filesFailed | Files by status. |
fileCount | Files saved. |
bytesSaved | Total size of the saved files. |
zipUrl | The signed link to videos.zip; null without a ZIP. |
stopReason | The cap that ended the run: maxResults, maxRequests, maxPagesPerSource, maxScrollsPerPage or chargeLimit; else null. |
RUN_HEALTH: {"status": "ok" | "degraded" | "failed", "reason": ...}. reason says why a run is not ok, for example that some files failed.
💰 Pricing
Pay per event, one event: $0.008 per saved file ($8.00 per 1,000 files). There is no start fee. The row alone is free, and so are skipped and failed files and duplicate videos.
| Event | Price | When it is charged |
|---|---|---|
video-file-saved | $0.008 ($8.00 per 1,000) | Each video file saved in your store. |
- Free plan: up to 1,000 results per run with full details, and up to 50 files saved per run. Paying plans have no cap per run.
- For comparison, the busiest RedGifs downloader charges $0.009 per video and gives links only. This actor saves the real files.
🎯 Use cases
- Archive a creator's videos: put the username in
usernamesand save every video as a named.mp4. - Build a creator and lead list: export rows with
creator.onlyfansUrlto Excel or CSV. - Collect a niche by tag or search: run
tagsorsearchQueriesand keep the files sorted by creator. - Feed a pipeline: call the actor from the API and read
storedFile.urlfor each file.
❓ FAQ
How do I download XFree videos in bulk?
Add usernames, tags, searches or video URLs, set maxResults and click Start. Each video is saved as <creator>_video-<id>.mp4, and createZip adds one videos.zip.
Can I get the data through an API?
Yes. Start the actor and fetch the rows with the Apify API or its Python and JavaScript clients. storedFile.url in each row is the link to the file.
How much does it cost?
$0.008 per saved file. Skipped and failed files, and the rows alone, are free.
Can I use it with other video sites?
Yes. Our video actors share one schema, so the same code reads the rows of all of them. See the list below.
Where is the video data and where are the downloaded files?
Open the Files link on the Output tab of the run. Each file is there as <creator>_video-<id>.mp4, and storedFile.url in every row links to it.
How do I download all videos of one creator?
Put the username in usernames, set maxResults, and turn on createZip to get one videos.zip.
How do I export XFree 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)
XFree (this site)
- XFree Video Scraper: links and data
Erome
- Erome Video Scraper: links and data
- Erome Video Downloader: saves the video files (.mp4)
RedGIFs
- Redgifs Video Scraper: links and data
- RedGIFs Video Downloader: saves the video files (.mp4)
💬 Feedback and custom work
Need another portal, a field or a custom feed? Open an issue on the Issues tab.