XFree Video Scraper avatar

XFree Video Scraper

Pricing

$1.00 / 1,000 video results

Go to Apify Store
XFree Video Scraper

XFree Video Scraper

Scrapes public video data from xfree.com searches, profiles, tags and video pages: creator with OnlyFans link, tagged accounts, tags, views, likes, date, duration, thumbnail and the direct .mp4 video file URLs. Or just the video page and file URLs.

Pricing

$1.00 / 1,000 video results

Rating

0.0

(0)

Developer

DataWatcher

DataWatcher

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

Scrape video data from xfree.com by search, account, tag or video URL, as JSON, CSV or Excel, or through the API. Every row has the direct link to the video file (.mp4): open it to play the video, or save it to download it. You also get the creator's OnlyFans link, title, creator, tagged accounts, views, likes, date, duration, tags and thumbnail.

  • Direct video links: videoFileUrl (full quality) and previewVideoUrl (smaller copy).
  • OnlyFans link: creator.onlyfansUrl.
  • Searches, profiles and tags are read page by page until your maxResults or another cap in the input is reached.

The actor reads public data and returns the links to the videos.

🔎 What it extracts

One row per unique video. The page types it reads:

Page typeExample URLInput to use
Searchhttps://www.xfree.com/search?q=examplecreatorsearchQueries or startUrls
Profile (account)https://www.xfree.com/examplecreatorusernames or startUrls
Tag, including language tagshttps://www.xfree.com/tag/Solo, https://www.xfree.com/tag/pl-Amatorzytags or startUrls
Video pagehttps://www.xfree.com/video?id=123456789&user=examplecreatorvideoUrls or startUrls
  • Tag names are kept exactly as the site writes them (pl-Amatorzy).
  • Search tabs: all (default), post and tag.
  • Account data (followers, total videos, bio and more) is saved once per profile in the run stats (accountProfiles).

🚀 How to scrape XFree videos

  1. Open the actor on Apify and click Try for free.
  2. Fill in a search, usernames or tags, or paste xfree.com URLs into startUrls or videoUrls.
  3. Click Start.
  4. Download the XFree video data as JSON, CSV or Excel from the Output tab, or fetch it with the Apify API.

Example inputs:

{ "searchQueries": [{ "query": "examplecreator", "filter": "all" }], "maxResults": 50 }
{ "usernames": ["examplecreator"], "maxResults": 100 }
{ "tags": ["pl-Amatorzy"], "tagSort": "latest", "maxResults": 100 }

🤖 Use with AI agents (MCP)

AI assistants (Claude, ChatGPT, Cursor…) can run this actor through Apify's MCP server. Connect the server in your assistant, then ask, for example:

Use the XFree Video Scraper to get the 20 newest videos of examplecreator with their direct .mp4 links and OnlyFans link.

🔌 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.
  • Ask an AI agent to run it: see Use with AI agents (MCP).

🔀 Mixing inputs and duplicates

You can use all five source inputs in one run: startUrls, searchQueries, usernames, tags, videoUrls.

RuleWhat happens
One row per videoMatched by id over the whole run: a video found by a search and by its profile is written once.
First input keptsourceType and sourceUrl keep the first input that found it.
Same input twiceRead once.
maxResultsOne cap for the run, split fairly over the inputs still to read.
Input checkEvery input is checked: valid ones run, others get a clear message.

videoFileUrl is the direct link to the video file, e.g. https://cdn.example/xfree-prod/1/2/3/12345678-aaaa-bbbb-cccc-123456789abc/full.mp4. Open it in a browser to play the video, or save it to download it. It is the full-quality file the site's player plays.

previewVideoUrl is the smaller copy the site plays in its lists, e.g. https://cdn.example/xfree-prod/1/2/3/12345678-aaaa-bbbb-cccc-123456789abc/listing7.mp4?1.

  • Both links come with every row in every mode at no extra request. mediaUrlsFound and mediaUrlsMissing in the run stats count the rows with and without a file link.
  • url is the video's page on xfree.com, not the file.

creator.onlyfansUrl is the creator's OnlyFans link, e.g. https://onlyfans.com/examplecreator. 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.

With onlyVideoUrls set to true, each row has only the video page and the two direct links (see the links-only row under Output). It is the fastest run. The price per video is the same as for a full row.

⚙️ Input

InputTypeDefaultRangeMeaning
startUrlslist of URLsnonexfree.com URLsSearch, profile, tag or video page URLs. The kind is found from the URL.
searchQuerieslistnone–Items {"query": "...", "filter": "all" | "post" | "tag"}. filter is optional (default all). A plain text line means {"query": text, "filter": "all"}.
usernameslist of textnone–Account handles, with or without @, or profile URLs. Every video of each account.
tagslist of textnone–Tag names exactly as the site writes them (e.g. pl-Amatorzy), or tag page URLs.
tagSorttextempty (site default order)latest or popularOrder of tag pages.
videoUrlslist of URLsnone–Video page URLs. One row per video.
onlyVideoUrlsyes/nofalse–Rows are only url, videoFileUrl, previewVideoUrl.
maxResultsinteger1001 to 1,000Maximum videos returned over all inputs.
maxRequestsinteger2001 to 1,000Maximum page requests of the run (listing pages, load-more steps, video pages).
maxPagesPerSourceinteger1001 to 100Maximum listing pages for one search, profile or tag.
maxScrollsPerPageinteger1001 to 100Maximum "load more" steps on one listing page.
maxRequestRetriesinteger20 to 5Retries after a network error or a server error.
requestTimeoutSecsinteger305 to 120Time limit of one page request, in seconds.

Use at least one of startUrls, searchQueries, usernames, tags or videoUrls. When a cap ends the run, stopReason says which (see Run stats).

📦 Output: XFree video data

Every full row has all of these fields. A missing text, number or object is null. A missing list is [].

FieldTypeMeaning
recordType, schemaVersion, sourcetextAlways video; the output schema version; the site (xfree).
idtextThe site's id of the video.
urltextThe video's page on xfree.com (the HTML page, not the file).
sourceTypetextsearch, profile, tag or direct_video.
sourceUrltextThe input that first found the video.
titletext or nullVisible title, when the site shows one.
creatorobject or nullusername, displayName, profileUrl, onlyfansUrl of the account that posted it.
taggedAccountslistOther accounts shown on the video page, without the creator. Each has name and profileUrl.
viewsinteger or nullViews as a number.
likesinteger or nullLikes.
durationSecondsnumber or nullLength in seconds.
thumbnailUrltext or nullPreview image URL.
tagslistTags without #, in the site's order, no repeats. Hashtags only.
videoFileUrltext or nullDirect link to the video file (.mp4, full quality). Play or download it.
previewVideoUrltext or nullDirect link to the smaller .mp4 copy the site plays in its lists.
datesobjectposted (when the video was posted) and scraped (when the row was made), ISO 8601 UTC.

Example: a full row

An example row (videoUrls input). The tag list is shortened.

{
"recordType": "video",
"schemaVersion": "4.0.0",
"source": "xfree",
"id": "123456789",
"url": "https://www.xfree.com/video?id=123456789",
"sourceType": "direct_video",
"sourceUrl": "https://www.xfree.com/video?id=123456789&user=examplecreator",
"title": "Example video title",
"creator": { "username": "examplecreator", "displayName": "Example Creator", "profileUrl": "https://www.xfree.com/examplecreator", "onlyfansUrl": "https://onlyfans.com/examplecreator" },
"taggedAccounts": [
{ "name": "exampletagged1", "profileUrl": "https://www.xfree.com/tag/exampletagged1" },
{ "name": "exampletagged2", "profileUrl": "https://www.xfree.com/tag/exampletagged2" }
],
"views": 123456,
"likes": 1234,
"durationSeconds": 25.067,
"thumbnailUrl": "https://thumbs.xfree.com/listing/medium_retina/12345678-aaaa-bbbb-cccc-123456789abc_3.jpg",
"tags": ["Amateurs", "Teen", "Tits", "Brunette", "Blonde", "SmallTits", "Latina", "Solo"],
"videoFileUrl": "https://cdn.example/xfree-prod/1/2/3/12345678-aaaa-bbbb-cccc-123456789abc/full.mp4",
"previewVideoUrl": "https://cdn.example/xfree-prod/1/2/3/12345678-aaaa-bbbb-cccc-123456789abc/listing7.mp4?3",
"dates": { "posted": "2025-01-01T12:00:00Z", "scraped": "2025-01-02T12:00:00Z" }
}
{
"url": "https://www.xfree.com/video?id=123456789",
"videoFileUrl": "https://cdn.example/xfree-prod/1/2/3/12345678-aaaa-bbbb-cccc-123456789abc/full.mp4",
"previewVideoUrl": "https://cdn.example/xfree-prod/1/2/3/12345678-aaaa-bbbb-cccc-123456789abc/listing7.mp4?1"
}

📊 Run stats

Each run saves two records in the key-value store. OUTPUT:

KeyMeaning
statussuccess, partial (some inputs failed, rows kept) or failed.
sourcesProcessedInputs read.
listingPagesVisited, loadMoreStepsListing pages read; "load more" steps made.
videoCardsFoundVideo cards seen, before dedupe.
uniqueVideosEmittedRows written.
duplicatesSkippedVideos already written.
mediaUrlsFound, mediaUrlsMissingRows with / without a videoFileUrl.
requestsUsedPage requests made.
stoppedEarlytrue when a cap ended the run.
stopReasonThe cap: maxResults, maxRequests, maxPagesPerSource, maxScrollsPerPage or chargeLimit; else null.
sourceErrorsList of inputs that failed, with the message.
sourcesOne entry per input: type, URL, status, pages, videos.
accountProfilesThe profile data, once per profile read.
chargedEventsHow many times each billing event was charged.

RUN_HEALTH: {"status": "ok" | "degraded" | "failed", "reason": ...}. reason says why a run is not ok.

💰 Pricing

Pay per event. There is no start fee.

EventPriceWhen it is charged
video-scraped$0.0010 ($1.00 per 1,000)Each unique video row written, with its direct video links. Links-only rows too.
  • 1,000 videos, each with its direct .mp4 link: $1.00.
  • Duplicate videos are free. The links are included in the video price.

❓ FAQ

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.

Every row has videoFileUrl (full quality) and previewVideoUrl. Turn on onlyVideoUrls for rows with only the links, the fastest run.

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.

💬 Feedback and custom work

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