# OnlyFans Viral Content Finder: TikTok & Reels Trends (`deepmine/onlyfans-viral-content-finder`) Actor

Find the TikToks and Instagram Reels of OnlyFans creators that are going viral right now, by niche or for your own list: outlier score, plays per hour, velocity since your last run, breakout flag, trending sounds and hashtags. Pay per result, no subscription, no login.

- **URL**: https://apify.com/deepmine/onlyfans-viral-content-finder.md
- **Developed by:** [DeepMine](https://apify.com/deepmine) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 viral videos

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## OnlyFans Viral Content Finder: TikTok & Reels Trends 🔥

Type a niche like `cosplay`, `fitness` or `goth`, or paste your own creator list, and **OnlyFans Viral Content Finder** returns the TikToks and Instagram Reels of OnlyFans creators that are going viral right now. Each video is scored against the creator's own usual views: outlier score, plays per hour, velocity since your last run, and a breakout flag, with the reason spelled out. No account, login or cookies. Pay per result, no subscription: **$4.99 per 1,000 viral videos** on Apify's Starter plan ($5.99 Free, $3.99 Scale, $2.99 Business), plus **$1.29 per 1,000 accounts scanned** and **$5.00 per 1,000 creators added** to a niche's watch list (charged once per creator per 7 days). The prefilled run (`cosplay`, 50 creators) costs about $0.36, and the same run the next day about $0.11.

Real rows from a first run of the prefilled input (`cosplay`, 50 creators, 44 accounts read, first row after 10.7 s), fastest-growing first (velocity fills in from the second run of the same input):

| platform | username | plays | plays/hour | velocity | outlier | breakout | posted | sound | OnlyFans | why viral |
|---|---|---|---|---|---|---|---|---|---|---|
| Instagram | momycarterx | 22,376 | 6,679 |  | 0.92 | yes | 2026-10-19 | Original audio | mommycarter | Breakout: 0.9x the creator's median plays (24,442); averaging 6,679 plays/h, 19.7x the creator's usual pace at this age |
| Instagram | oxdessyxo | 111,661 | 3,818 |  | 1.47 | yes | 2026-10-18 | Original audio | dessyyc | Breakout: 1.5x the creator's median plays (76,132); averaging 3,818 plays/h, 3.6x the creator's usual pace at this age |
| TikTok | momycarterx | 11,800 | 3,520 |  | 0.46 | yes | 2026-10-19 | original sound | mommycarter | Breakout: 0.5x the creator's median plays (25,400); averaging 3,520 plays/h, 10.0x the creator's usual pace at this age |
| Instagram | oxdessyxo | 76,132 | 3,284 |  | 1 | yes | 2026-10-18 | Original audio | dessyyc | Breakout: 1.0x the creator's median plays (76,132); averaging 3,284 plays/h, 3.1x the creator's usual pace at this age |

<sub>Collected 2026-10-19. Plays change by the hour; that is the point.</sub>

Every run also gives you three free tables: **Accounts** (each TikTok and Instagram account scanned, with its median plays, posts in your window, best video and whether it could be read), **Sounds** (the TikTok sounds these creators use, how often and how many plays) and **Hashtags**.

OFM agencies use it as an OnlyFans trend finder: the viral TikTok and Reels ideas of their niche, every morning, ready to hand to their own creators. It replaces the viral-video feed of SpyFans, OnlyTrends and OFM Pro's Trend Finder for a fraction of a monthly subscription.

> **Unofficial product:** This Actor is independently developed and is not affiliated with, endorsed by, or sponsored by OnlyFans, TikTok or Instagram.

### How it works 💡

1. **Creators.** For each niche it finds OnlyFans creators whose profile matches (the same search as our OnlyFans Discovery Scraper) and the TikTok and Instagram accounts they link. A niche's creator list is kept for 7 days. Or give it your own list: OnlyFans usernames (it looks up their TikTok and Instagram), or TikTok and Instagram profile links.
   **Grow the list** (optional, `expandSimilar`): Instagram suggests similar accounts next to each creator's account, and on TikTok the accounts several of the creators follow are the niche's other creators (co-follows: ranked by how many creators follow them against their own size, so niche creators come first and celebrities everyone follows don't; at least 10k followers; then accounts one creator follows whose bio says "yes I have one", VIP or 18+). The Actor checks them and adds the ones that are an OnlyFans creator's own account: an onlyfans.com link in the bio or on its link page, or a sure name match that a linking signal confirms (the OnlyFans profile links that very account, or links none and the handles are nearly the same; the same full name alone isn't enough, and a name match whose OnlyFans profile links someone else's account is dropped). Each is confirmed by OnlyFans. They're scanned in the same run and kept, so the next run expands from them too: the list grows run after run, past what any keyword search finds (live, 3 runs of `cosplay` x 50 with 10 accounts expanded per run: 50 → 109 creators).
2. **Scan.** It reads each account's newest posts: one page of 30 TikToks, 12 Reels on Instagram.
3. **Score.** Every post is compared with the same creator's other posts, and with what the last run of the same input saw.
4. **Deliver.** Only the posts that stand out: posted within your window (3 days by default, up to 30), with at least your minimum plays, and an outlier or a breakout. The first accounts are read one by one, side by side, and each one's rows go out as soon as it is scored, so the first rows arrive within about 10 seconds of the start (live median on a first run, 2026-10-19).

### What "viral" means 📈

All numbers compare a creator with themselves, so a 20,000-play Reel can be viral for a small creator and a 200,000-play one ordinary for a big one.

| Field | Formula |
|---|---|
| `creatorMedianPlays` | median plays of the creator's newest 30 non-pinned posts (this scan plus the posts kept from earlier runs) |
| `outlierScore` | `plays / creatorMedianPlays` |
| `playsPerHour` | `plays / hours since posted` (under an hour counts as one hour) |
| `velocity` | `(plays now - plays at the last run) / hours between the two runs`: the plays it is gaining right now |
| usual pace at this age | `creatorMedianPlays / max(hours since posted, 72)`: a typical post of this creator gathers its median plays over its first ~3 days |
| `isBreakout` | its pace right now is at least **3x** the usual pace at its age. Pace = `velocity`, or `playsPerHour` for a post under 72 hours old that the last run didn't see. An older post without a velocity is judged by its outlier score only. |
| `engagementRate` | `(likes + comments + shares + saves) / plays`, in percent |

A post is delivered when it was posted in the last `lookbackDays` (3), has at least `minPlays` plays (5,000), and has `outlierScore >= minOutlierScore` (2) or `isBreakout`. Each batch of rows is sorted by velocity (plays per hour where there is no velocity yet), fastest first.

**First run = baseline.** The first run of an input has no earlier snapshot, so `velocity`, `playsSinceLastRun` and the change columns (`followersChange`, `usesChange`, `isRising`) are empty and the status message says so. From the second run of the same input on, they're filled. Schedule it daily (or every few hours) to catch videos while they take off.

**Repeat runs refresh what you already have.** A viral video an earlier run of the same input delivered comes again while it is still in your window and still viral, with its plays now and the change since: `isRepeat` is true, `previousPlays` and `lastSeenAt` are the last run's reading, `playsSinceLastRun` is the difference (0 when nothing changed) and `velocity` the plays per hour (runs at least 15 minutes apart). Each delivered video is a result, refreshes included, and a video is charged once per run whichever account found it. Want new videos only? Turn on **Only new videos**: videos this input already got (kept 30 days) are left out and not charged.

### Input ⚙️

| Field | Default | What it does |
|---|---|---|
| Niches | `cosplay` (prefill) | Keywords; each finds up to Max creators per niche OnlyFans creators |
| Creators to watch | – | Your list: OnlyFans usernames or links, `instagram.com/name`, `tiktok.com/@name`, `ig:name`, `tt:name` |
| Platforms | TikTok, Instagram | Which accounts to scan |
| Max creators per niche | 100 (prefill 50) | Up to 5,000 |
| Posted in the last (days) | 3 | 1-30 |
| Min plays | 5,000 | Never deliver smaller posts |
| Min outlier score | 2 | 2 = twice the creator's median |
| Only new videos (skip refreshes) | off | On: skip videos this input already got (kept 30 days). Off: they come again with their plays now and the change since |
| Grow the creator list from similar accounts | 0 (off) | How many creators' accounts to expand per run on each platform (Instagram suggestions, TikTok co-follows; each once a week); new creators are charged like any other |
| History store name | automatic | The named key-value store that keeps the history (Advanced) |

The history lives in a named key-value store in your own Apify account (`of-radar-<id of your input>`), one per input: the niche's creators, each account's last snapshot (30 days), the videos already delivered and the accounts that can't be read. Changing the thresholds keeps the history; changing the niches, creators or platforms starts a new one. Give two tasks the same History store name to share one.

### Output 📦

#### 🔥 Viral videos (default dataset, charged per row)

`cover`, `platform`, `caption`, `captionSnippet`, `username`, `videoUrl`, `viralReason`, `isBreakout`, `plays`, `playsPerHour`, `velocity`, `playsSinceLastRun`, `previousPlays`, `lastSeenAt`, `isRepeat`, `lastDeliveredAt`, `outlierScore`, `creatorMedianPlays`, `likes`, `comments`, `shares` (TikTok), `saves` (TikTok), `engagementRate`, `postedAt`, `ageHours`, `hashtags`, `soundTitle`, `soundAuthor`, `isOriginalSound`, `soundUrl` (TikTok), `followers`, `profileUrl`, `ofUsername`, `ofUrl`, `ofName`, `ofPrice`, `ofIsFree`, `ofLikes`, `niches`, `input`, `durationSeconds`, `videoId`, `soundId`, `scrapedAt`.

Views: 🔥 Viral Videos, 📈 Stats, 🎵 Sound & Tags. Cover links from TikTok and Instagram are signed and stop working after a few days: download what you keep.

#### 👥 Accounts (free)

One row per TikTok or Instagram account (photo and name: TikTok): `avatar`, `platform`, `username`, `name`, `profileUrl`, `status`, `statusReason`, `followers`, `followersChange`, `postsInWindow`, `viralVideos`, `medianPlays`, `outlierCount`, `bestVideoUrl`, `bestVideoPlays`, `bestVideoOutlierScore`, `lastPostedAt`, `ofUsername`, `ofUrl`, `niches`, `input`, `isCachedStatus`, `lastCheckedAt`, `scrapedAt`.

`status` is `OK`, `Not found`, `Age-restricted`, `Private`, `Hidden`, `Error` or `Skipped`.

#### 🎵 Sounds (free, TikTok)

The non-original TikTok sounds used in the window: `cover`, `soundTitle`, `soundAuthor`, `soundUrl`, `uses`, `creators`, `totalPlays`, `medianPlays`, `usesChange`, `isRising`, `exampleVideoUrls` (3 most played), `creatorUsernames`, `niches`, `soundId`, `scrapedAt`.

#### #️⃣ Hashtags (free)

`hashtag`, `hashtagUrl`, `uses`, `creators`, `totalPlays`, `medianPlays`, `usesChange`, `isRising`, `platforms`, `exampleVideoUrls`, `niches`, `scrapedAt`.

The run summary (OUTPUT) has the counts per platform and status, the niches' creator counts and every account's status.

### Which accounts can't be read logged out 🔒

- **Age-restricted Instagram accounts.** Instagram shows them only to logged-in visitors, and this Actor never logs in. On the 2026-10-19 runs, 18 of 63 Instagram handles OnlyFans creators list (29%) were age-restricted, 5 (8%) didn't exist any more and 1 was private. Banned accounts can look the same as age-restricted ones from outside. They're listed in Accounts with the reason, aren't charged, and aren't read again for 7 days.
- **Hidden Instagram accounts.** Instagram showed no profile, and its check of the reason was rate-limited ("Please wait a few minutes"), even on a second check from another network at the end of the scan. Almost all of them are age-restricted (10 of 10 such handles checked on 2026-10-19). Free, and asked again on the next run.
- **Private accounts** (both platforms): no posts to read; free, cached 7 days.
- TikTok: 39 of 39 handles read on the same runs.

### Pricing 💵

| Event | Free | Starter | Scale | Business |
|---|---:|---:|---:|---:|
| Viral video (row) | $5.99 / 1k | $4.99 / 1k | $3.99 / 1k | $2.99 / 1k |
| Account scanned (once per account per run; accounts that can't be read or have no public posts are free) | $1.29 / 1k | $1.29 / 1k | $1.29 / 1k | $1.29 / 1k |
| Creator added (once per creator per 7 days per input) | $5.00 / 1k | $5.00 / 1k | $5.00 / 1k | $5.00 / 1k |

No start fee. Accounts, Sounds and Hashtags rows are free. Examples at Starter, from the 2026-10-19 runs:

- `cosplay`, 50 creators, first run: 49 creators added + 46 accounts + 12 viral videos = **$0.36**. The same input the next day: about **$0.11** (accounts + videos; the creators stay on the list for 7 days).
- Your own list of 10 TikTok/Instagram accounts: 10 accounts + 8 viral videos = **$0.06** a run.
- The same input a minute later (2026-10-23, `cosplay` x 50): 45 accounts + the same 8 viral videos, refreshed with their plays now = **$0.10**.
- Daily for a month, 1 niche x 100 creators (about 92 accounts and 20 new viral videos a day, the creator list renewed weekly): about **$9** with Only new videos on; up to about **$15** with refreshes, when each viral video comes again on each of the 3 days it stays in the window (arithmetic at Starter prices). A fraction of a $49/month trend tool.

Set a maximum cost per run in the run options and the Actor stops there: it adds fewer creators and scans fewer accounts so that what it does scan still fits.

### FAQ ❓

**Why did the first run show no velocity?** Velocity needs two snapshots of the same video. Run the same input again (schedule it) and the next run fills it.

**Do I get (and pay for) a video again on the next run?** Yes, while it is still viral and in your window: it comes with `isRepeat` true and its plays now, so a scheduled run tracks how your niche's videos keep growing. Turn on Only new videos to get each video once.

**Can I track my own roster or competitors?** Yes: put their OnlyFans usernames or TikTok/Instagram links in Creators to watch, with or without niches.

**Why fewer viral videos than accounts?** Most creators post a few times a week, and only the posts that beat their own usual views are delivered. Lower Min outlier score or Min plays to see more.

**Does it download the videos?** No, it gives the links. Use our TikTok or Instagram video downloaders for the files.

# Actor input Schema

## `niches` (type: `array`):

Keywords that describe the creators to watch, one per line (cosplay, fitness, goth, latina, gamer girl...). Each finds up to Max creators per niche OnlyFans creators whose profile matches, then scans their TikTok and Instagram accounts.

## `creators` (type: `array`):

Your own list (roster, competitors), one per line: an OnlyFans username or link (its TikTok and Instagram are looked up), or an Instagram or TikTok profile link (instagram.com/name, tiktok.com/@name, or ig:name / tt:name). Use it with or instead of niches.

## `platforms` (type: `array`):

Which of the creators' accounts to scan.

## `maxCreatorsPerNiche` (type: `integer`):

OnlyFans creators to watch per niche. Each one's TikTok and Instagram are scanned (most creators list one or both). The niche's creator list is kept for 7 days, so daily runs only pay for new creators.

## `lookbackDays` (type: `integer`):

Only videos posted this recently are delivered. The creators' older posts still set their usual (median) plays. 3 days keeps the feed fresh; up to 30 for a slower look back.

## `minPlays` (type: `integer`):

Videos with fewer plays are never delivered, however fast they grow.

## `minOutlierScore` (type: `number`):

Outlier score = the video's plays divided by the creator's median plays. 2 = twice their usual. A video is delivered when it reaches this score, or when it breaks out (gains plays at least 3x faster than the creator's usual pace at its age).

## `onlyNew` (type: `boolean`):

Off (default): every viral video in the window is delivered on each run, also one an earlier run of the same input delivered, with its plays now and the change since (isRepeat, previousPlays, playsSinceLastRun, velocity); each delivered video is a result. On: leave out the videos an earlier run of the same input already delivered (kept 30 days).

## `expandSimilar` (type: `integer`):

How many of the creators' accounts to expand this run, per platform: on Instagram the accounts Instagram suggests next to each one, on TikTok the accounts several of the creators follow (co-follows, ranked by how many follow them against their size, at least 10k followers). They are checked, and those that are an OnlyFans creator's own account (an onlyfans.com link in the bio or on its link page, confirmed by OnlyFans) join the creator list, are scanned in the same run and are kept for the next runs, which expand from them in turn. Each account is expanded once a week. 0 = off. New creators are charged like any other creator added to the list.

## `historyStore` (type: `string`):

Optional. The named key-value store in your account that keeps what the next run compares with (plays per video, the creator list, unreadable handles). Empty: one store per input, created by the Actor (of-radar-...). Use the same name in two tasks to share one history.

## Actor input object example

```json
{
  "niches": [
    "cosplay"
  ],
  "platforms": [
    "tiktok",
    "instagram"
  ],
  "maxCreatorsPerNiche": 50,
  "lookbackDays": 3,
  "minPlays": 5000,
  "minOutlierScore": 2,
  "onlyNew": false,
  "expandSimilar": 0
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `accounts` (type: `string`):

No description

## `sounds` (type: `string`):

No description

## `hashtags` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "niches": [
        "cosplay"
    ],
    "maxCreatorsPerNiche": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/onlyfans-viral-content-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "niches": ["cosplay"],
    "maxCreatorsPerNiche": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("deepmine/onlyfans-viral-content-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "niches": [
    "cosplay"
  ],
  "maxCreatorsPerNiche": 50
}' |
apify call deepmine/onlyfans-viral-content-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deepmine/onlyfans-viral-content-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/P0qyeOPMVhXV4l53X/builds/T12vSYTBJ2YTjRcmD/openapi.json
