# OnlyFans Profile Scraper — Public Profiles & Social Links (`meka.im/onlyfans-scraper`) Actor

OnlyFans profile URLs or handles → public profile JSON, counts, prices and available social links. No login or cookies. $0.40 per 1,000 delivered profiles.

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

## Pricing

from $0.34 / 1,000 delivered profiles

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

Paste OnlyFans profile URLs or handles to get public profile data and available social links with this OnlyFans profile scraper. Export profile names, verification, public counts, subscription prices and other available metadata to JSON, CSV or Excel—without an OnlyFans login or cookies. Pay **$0.40 per 1,000 successfully delivered profiles** on the FREE tier; platform usage is included.

- **Public profile and social data together:** collect available named social links alongside profile metadata.
- **One or many profiles:** supply a single handle or up to 100 entries in one run.
- **Clean exports:** duplicate URL/handle aliases are processed once, and successful rows follow your input order.
- **Delivered-only pricing:** invalid, duplicate, unavailable and failed profiles have no result event charge.

### Quick start: scrape an OnlyFans public profile

1. Add the public profile URLs or handles you already have.
2. Start the run in Apify.
3. Open the Profiles Dataset view and export your results.

```json
{
  "profileUrls": ["https://onlyfans.com/onlyfans"]
}
```

You can use `"onlyfans"` or `"@onlyfans"` in the same field. Empty API input `{}` finishes with zero results and zero result events. The form's prefill is an example, so check the profiles before starting a run.

### Examples and use cases

#### Export one public brand profile

Use the Quick start input to collect the neutral OnlyFans brand profile. Inspect its public name, verification and content counts before adding more profiles to your workflow.

#### Compare profiles you already know

Collect three previously verified public profiles in a single run:

```json
{
  "profileUrls": [
    "https://onlyfans.com/onlyfans",
    "https://onlyfans.com/oftv",
    "https://onlyfans.com/k1ngkyrg1os"
  ]
}
```

Use the Dataset table to compare the available public metadata. Social links appear only where the profile source supplies them; these example profiles do not promise a particular social platform or a link in every row.

#### Maintain a profile directory or periodic snapshot

Export the profiles in your existing list to a spreadsheet or data warehouse. Use Apify schedules to repeat the same input and compare saved runs for changes in public counts or available links. The Actor starts from the profile URLs or handles you provide; it does not discover accounts through keyword search.

### Output: OnlyFans profile data and social links

One successful Dataset row represents one public profile. The following fields are a useful starting point; additional validated public fields may also appear.

| Fields | Type | What they contain |
| --- | --- | --- |
| `id`, `username`, `name`, `inputUrl` | number and strings | Profile identity, display name and canonical OnlyFans URL |
| `about` | string | Public biography; it may contain source HTML |
| `isVerified` | boolean | Verification flag from the public source |
| `feedUser` | optional boolean | Anonymous public source flag when supplied; true and false are preserved |
| `location`, `website` | string or null | Public profile information where available |
| `postsCount`, `photosCount`, `videosCount`, `mediasCount` | number | Source-reported public content counts; no media is downloaded |
| `subscribersCount` | number or null | Subscriber count if the public source supplies it |
| `subscribePrice` | number | Public subscription price as reported by the source; no currency is inferred |
| `subscriptionBundles`, `promotions` | optional arrays | Public subscription offers when present |
| `instagramUrl`, `xUrl`, `tiktokUrl`, `youtubeUrl` and other supported social URLs | optional strings | Available source-provided social links |
| `avatar`, `header` | string or null | Image URL references, which may expire |

Missing optional fields stay absent. Existing zero, false and null values are preserved. Social destinations are not crawled or independently verified. A displayed public price or anonymous viewer flag does not grant access to paid content or logged-in features.

Selected fields from a real `onlyfans` brand result recorded on October 11, 2026:

```json
{
  "id": 15585607,
  "username": "onlyfans",
  "name": "OnlyFans",
  "inputUrl": "https://onlyfans.com/onlyfans",
  "isVerified": true,
  "subscribePrice": 0,
  "postsCount": 5099,
  "videosCount": 5099
}
```

This is an excerpt, not a full Dataset row. Counts can change after the recorded run. The run's `OUTPUT` summary reports requested, delivered, invalid, failed, duplicate and skipped counts, along with whether the budget stopped collection.

### Input reference

| Field | Type | Default | Meaning |
| --- | --- | --- | --- |
| `profileUrls` | array of strings | empty input | Up to 100 public HTTPS profile URLs, bare handles or @handles |
| `handle` | string | absent | Single-profile alternative, used only when `profileUrls` is absent |

An explicitly empty `profileUrls` takes precedence over `handle`. Uppercase handles, supported `www` URLs and trailing-slash aliases normalize to the same profile. The first occurrence is kept. Invalid entries in a mixed list are skipped; successful rows retain input order. Other domains, URL credentials, query strings, fragments, ports, nested paths and whitespace are not accepted. Arrays over 100 entries and unsupported input controls fail validation.

### Pricing: pay for delivered profiles

One Delivered profile event is charged after a successful profile is written to the Dataset. There is no separate start or default Dataset event. Platform usage is included.

| Apify API tier | USD per 1,000 delivered profiles |
| --- | ---: |
| FREE | $0.40 |
| BRONZE | $0.38 |
| SILVER | $0.36 |
| GOLD, PLATINUM, DIAMOND | $0.34 |

The Store displays the corresponding Free, Starter, Scale and Business prices. At the FREE rate, one delivered profile costs $0.0004, three cost $0.0012, and 100 cost $0.04. Exporting 1,000 profiles requires several runs because each run accepts at most 100 input entries.

Invalid, duplicate, unavailable, restricted and failed profiles have no result charge. Choose a maximum total charge in Apify's run options; collection stops when there is not enough result budget. Previously delivered profiles are skipped after a supported run resurrection.

### Coverage and reliability

The October 11, 2026 acceptance included a 100-profile sample that delivered 100 results, input-order and schema checks, and an actual interrupted run that resumed without repeated rows or result events. These are dated observations, not a throughput or future-success guarantee. Public results were also checked after publication.

Only anonymous public profile metadata and public social buttons are supported. The Actor does not collect private posts, paid content, messages, media files, login sessions or subscriptions. It accepts known profiles rather than keyword/account search. Profile results are not served from a profile cache, but source availability and values can change between runs. Unknown fields and incomplete or inconsistent profile responses are not delivered as successful results.

### API, schedules and integrations

Run the same JSON input from Apify Console or the Actor API. Use Dataset export, schedules, webhooks and integrations for your reporting workflow. Apify MCP access, when available, uses the same input and result pricing. No OnlyFans credentials or additional scraper controls are required.

### FAQ and troubleshooting

#### Does it require an OnlyFans account or cookies?

No. Supply only public profile URLs or handles.

#### Can it find profiles by keyword?

No. Start with profiles you already know; account discovery and search are outside its scope.

#### Why do I receive fewer rows than inputs?

Check `OUTPUT` for invalid, duplicate, unavailable or failed entries and a budget stop. Failed profiles are omitted from the Dataset.

#### Why is a social link missing?

The public profile can omit it. The Actor does not guess a social URL from a username.

#### Does a subscriber count of null mean zero?

No. It means that count is not supplied as a number in the public result; genuine zero values remain zero.

#### Can it download paid posts or media?

No. Profile image URLs are references; private or paid content and media downloads are unsupported.

#### Why can values differ across runs?

Public counts, offers, biography and links can change. The Actor does not promise exact value parity with another scraper captured at another time.

### Responsible use and independence

Use public metadata responsibly and respect profile owners' rights and applicable rules. This independent Actor is not affiliated with or endorsed by OnlyFans. The name identifies the source descriptively.

# Actor input Schema

## `profileUrls` (type: `array`):

Up to 100 public profile URLs or handles. First occurrences are kept. Invalid entries are skipped. Takes precedence over handle, including when empty.

## `handle` (type: `string`):

Compatibility input used only when profileUrls is absent. Accepts a bare handle or @handle.

## Actor input object example

```json
{
  "profileUrls": [
    "https://onlyfans.com/onlyfans"
  ]
}
```

# Actor output Schema

## `profiles` (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 = {
    "profileUrls": [
        "https://onlyfans.com/onlyfans"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("meka.im/onlyfans-scraper").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 = { "profileUrls": ["https://onlyfans.com/onlyfans"] }

# Run the Actor and wait for it to finish
run = client.actor("meka.im/onlyfans-scraper").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 '{
  "profileUrls": [
    "https://onlyfans.com/onlyfans"
  ]
}' |
apify call meka.im/onlyfans-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,meka.im/onlyfans-scraper"
        }
    }
}
```

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/iGpsXa3uuGmgJBfTV/builds/luoO4V0PakGvMct3p/openapi.json
