# OnlyFans Free Trial Checker (`cliqtomedia/onlyfans-free-trial-checker`) Actor

Check OnlyFans free trial links and see the offered trial period. Paste a session JSON, add links, and get up to 100 results per run.

- **URL**: https://apify.com/cliqtomedia/onlyfans-free-trial-checker.md
- **Developed by:** [Cliqto Media](https://apify.com/cliqtomedia) (community)
- **Categories:**
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 trial link checkeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## OnlyFans Free Trial Checker

Check OnlyFans free trial links and see the offered trial period. Add your links, paste a session JSON, and start the Actor.

The Actor saves one result for each different valid trial link. You pay only for saved confirmed trial or profile results. The Actor accepts **1 to 100 links per run**.

**Unofficial Actor.** This tool is not made by or linked to OnlyFans. It does not activate trials, confirm subscriptions, or change your account.

### What you get

Each accepted link gets one result. The result shows trial status, profile status, check time, and duration when the source is clear.

For active offers, the result also shows the profile username and numeric profile ID when the structured read-only response provides safe values.

A result can show an active offer, an expired or used offer, an unavailable profile, or a failed check. If the source is unclear, the Actor returns an unknown result. It does not guess.

Use the results to review trial links you already have. The Actor does not find new trial links or download content.

### How to run the Actor

1. Install [OF-DL Auth Helper](https://github.com/whimsical-c4lic0/OF-DL-Auth-Helper/releases/tag/v0.0.11) in Chrome.
2. Sign in to OnlyFans in your normal Chrome window.
3. Open the extension and click **Copy auth.json**.
4. Open the Actor's **Input** tab.
5. Paste the whole JSON into **OnlyFans session JSON (secret)**.
6. Add your links to **Trial links (max 100)**.
7. Leave **Advanced session setup** empty.
8. Click **Start**. The default run settings already use 1,024 MB of memory and a 3,600-second timeout.
9. Open **Output** when the run finishes.

Paste the JSON as text. You do not need to upload a file to Apify. Do not paste your password or a login code.

#### Install OF-DL Auth Helper in Chrome

1. Download `OF-DL_Auth_Helper-chrome-0.0.11.zip` from the release page above.
2. Unzip the file.
3. Open `chrome://extensions` in Chrome.
4. Turn on **Developer mode**.
5. Click **Load unpacked** and select the unzipped extension folder.

Only the auth copy feature is needed. Leave optional chat features and user scripts off. The extension can read your OnlyFans session, so install it only from the linked project.

#### Advanced session setup

Use this section if you already have the session values.

1. Clear **OnlyFans session JSON (secret)**.
2. Expand **Advanced session setup**.
3. In **Cookies**, enter only `auth_id` and `sess` in cookie-header form.
4. Enter **X-BC token** and the exact **Browser User-Agent**.
5. Use values from the same Chrome session for all three fields.

Fill all three fields. If you switch back to session JSON, clear all three Advanced fields first.

The Actor checks the format before opening OnlyFans. If `USER_ID` is present in the JSON, it must match `auth_id`. If `USER_ID` is missing, the Actor reads it from `auth_id`.

### Save the setup for later

You can save the input as an Apify Task and reuse the session.

1. Open the configured Actor and click **Save as a new task**.
2. Give the Task a name.
3. Keep its access private and do not share it.
4. Open the Task's **Input** tab.
5. Check the links and login method.
6. Click **Save**, then **Start**.
7. Next time, open **Tasks**, select this Task, and click **Start** again.

Apify keeps the Task's secret fields encrypted. You do not need to paste the JSON before every run while OnlyFans accepts that session. If the session ends, copy a new JSON and replace the saved value.

The Actor removes the input copy from each run after reading it. To reuse your setup, start the saved Task. The Actor does not delete the Task's saved input.

### Supported links

These are URL shapes. Replace the placeholders with your own values.

```text
https://onlyfans.com/<profile>/trial/<trial-code>
https://onlyfans.com/action/trial/<trial-code>
```

Links must use HTTPS. Extra query strings, fragments, and other websites are not accepted.

### Read the results

| Field           | Meaning                                                      |
| --------------- | ------------------------------------------------------------ |
| `inputUrl`      | The exact first link you entered for this result.            |
| `trialStatus`   | Trial state, or `UNKNOWN` if the check could not confirm it. |
| `duration`      | Offered trial period, or empty if it is not known.           |
| `profileStatus` | Profile availability for this session.                       |
| `username`      | Profile username when it can be identified.                  |
| `id`            | Numeric OnlyFans profile ID returned for this trial link. It can be empty when the source does not provide a profile. |
| `terminalCode`  | Exact reason for the result.                                 |
| `checkedAt`     | Time of the check in UTC.                                    |
| `recordKey`     | Result ID used to match the same link across runs.           |

Profile ID helps you match the same profile across results. A username can change, but the profile ID is usually more stable. OnlyFans controls this value, so the Actor does not promise that it will never change.

ID is mainly available for successful active results. It can be empty for used, expired, or unavailable links. It is the target profile ID from the trial link, not the account ID from your session. The Actor does not make a separate request to get it.

Known periods include 1, 3, 7, or 14 days, and 1, 3, 6, or 12 months. New clear number periods also work, such as `21_DAYS` or `24_MONTHS`. Years are changed to exact months.

**Trial duration is the offered access period. It is not the link's expiration date.** The Actor does not return an expiration date or the number of claims left.

`ACTIVE` means the source clearly showed an active offer and a supported period. `ACTIVE_DURATION_UNKNOWN` means the offer was shown, but its period was not clear.

Neither result guarantees that a later attempt to claim the trial will succeed. `INACTIVE_AMBIGUOUS` means the offer is no longer available, but the source does not give a clear reason.

Open the run's storage and read `RUN_SUMMARY` for totals and the stop reason. A successful Apify run can still contain failed checks.

#### Example result

This shortened example uses invented data. The full JSON export includes extra fields that explain the result.

```json
{
  "inputUrl": "https://onlyfans.com/action/trial/<trial-code>",
  "trialStatus": "ACTIVE",
  "duration": "14_DAYS",
  "profileStatus": "AVAILABLE",
  "id": 123456789,
  "username": "synthetic_profile",
  "terminalCode": "TRIAL_ACTIVE_DURATION_CONFIRMED",
  "checkedAt": "2026-09-05T00:00:00.000Z"
}
```

The table returns the exact link you entered first. A working trial link can be sensitive. Keep Dataset access private and do not share the link in support messages.

### Pricing

See the **Pricing** tab for the current price. A result charge applies when the Actor saves a confirmed trial or profile result.

An unavailable profile can be a paid result. It is paid only when the Actor confirms the profile result from the source.

Technical errors have no result charge. This includes CAPTCHA, 403, 429, timeout, a bad session, a wrong link, and a repeated link.

When the maximum charge is reached, the Actor stops checking more links. It saves the remaining accepted links as unchecked results.

Apify may mark a run stopped by this limit as **Aborted**. Check Output for the saved results and report.

For example, 100 accepted links may produce 95 confirmed results and 5 failed checks. In that case, only the 95 confirmed results receive a result charge.

### Limits

The Actor accepts **up to 100 links per run**. It checks different valid trial codes one at a time.

The Actor waits 10 seconds between links. A reviewed temporary error can get one retry. For a 429 rate limit, it waits longer before retrying. An isolated rate limit does not stop the remaining links; repeated rate limits can stop the run to protect the session.

Wrong links and repeated links are not charged. Repeated links are checked once.

The default Apify timeout is 60 minutes. The Actor also stops at 10,000 requests or 150 MiB of received data. A custom Apify timeout or maximum charge can stop it earlier.

OnlyFans login checks, limits, or page changes can also stop a run. Results can differ between sessions, locations, and check times.

An unavailable profile does not prove that the profile is deleted everywhere. The Actor cannot avoid OnlyFans account checks or keep a session active forever.

### Privacy

Your session gives access to your OnlyFans account. Use a session you own and links you are allowed to check.

Keep session JSON and Advanced values out of chat, email, screenshots, and support tickets. A working trial link can also be sensitive.

Apify encrypts secret input fields. The Actor uses them in a temporary browser and closes that browser when the run ends.

The Actor does not write session values to logs or results. It also removes the run's input copy after reading it.

A saved Task keeps its encrypted input so you can run it again. Complete erasure from browser and system memory cannot be guaranteed.

### Troubleshooting

#### The session is not accepted

The session may have ended. Open OnlyFans in Chrome and confirm that you are signed in. Create a new session JSON by following **How to run the Actor**.

#### The Actor asks you to keep one login method

Both login methods have values. Keep session JSON and clear all Advanced fields, or clear session JSON and fill all three Advanced fields.

#### A result shows `PARSER_SOURCE_DRIFT`

The page did not give a result the Actor could read. This is a failed check and has no result charge.

Check the same link manually in Chrome. Send the run ID to support if the problem continues.

#### OnlyFans asks for a browser check or limits requests

Open OnlyFans in Chrome and follow the site's instructions yourself. Wait before starting another run.

The Actor does not solve CAPTCHA or switch accounts.

#### Fewer links were checked

Open `RUN_SUMMARY` and read the stop reason. Check the session, timeout, maximum charge, and number of valid different links.

Split larger lists into batches of up to 100.

### FAQ

**Does this activate a free trial?** No. The Actor reads the offer before confirmation and never presses Confirm.

**Can I run it without an OnlyFans account?** No. You need an active session from your own account.

**Can I keep using the same login?** Yes, while OnlyFans accepts it. Save the setup as a private Task.

**Does an unknown result mean the link is inactive?** No. An unknown result means the Actor could not confirm the state.

### Support

Use the Actor's **Issues** tab. Include the run ID, `terminalCode`, and whether you used session JSON or Advanced setup.

Do not include session values, real trial links, or account screenshots. For failed checks, tell us the number of affected links and the stop reason.

The supported maximum is 100 submitted links per run. This is enough to begin a review without exposing your login or trial links.

# Actor input Schema

## `trialUrls` (type: `array`):

Add 1 to 100 links. The same trial link is checked once. Wrong links are skipped. The Actor does not activate a trial.

## `sessionExport` (type: `string`):

Paste the whole session JSON here. No file upload is needed. If you still need to create it, follow How to run the Actor. Leave Advanced session setup empty.

## `sessionCookies` (type: `string`):

Paste only auth\_id and sess from the same browser session.

## `sessionXbc` (type: `string`):

Paste X-BC from the same browser session.

## `sessionUserAgent` (type: `string`):

Paste the exact User-Agent from that browser. Do not change it.

## `session` (type: `object`):

For existing developer tools. Leave this field empty when using session JSON or Advanced session setup.

## `proxyConfiguration` (type: `object`):

This Actor uses a direct connection.

## Actor input object example

```json
{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Open one result for each different valid trial link.

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

See counts for checked, repeated, wrong, and charged links.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("cliqtomedia/onlyfans-free-trial-checker").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("cliqtomedia/onlyfans-free-trial-checker").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 '{}' |
apify call cliqtomedia/onlyfans-free-trial-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cliqtomedia/onlyfans-free-trial-checker"
        }
    }
}

```

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/abD1xjC30EyOaMdOo/builds/W2LteBl7WmmqY0R8R/openapi.json
