# OnlyFans Profile API (`deepmine/onlyfans-profile-scraper-pro`) Actor

Extract Comprehensive OnlyFans data at high speed. Ultra-efficient, low usage costs. Get stats, pricing, promotions & 100+ fields.

- **URL**: https://apify.com/deepmine/onlyfans-profile-scraper-pro.md
- **Developed by:** [DeepMine](https://apify.com/deepmine) (community)
- **Categories:** Developer tools, Social media, Automation
- **Stats:** 98 total users, 9 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.75 / 1,000 results

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?

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 Profile API – Fast Profile Scraper

**OnlyFans Profile API** lets you look up OnlyFans creators by username or profile URL and collect their public data in bulk. Use this **OnlyFans profile scraper** to retrieve bios, subscription prices, active promotions, bundles, likes, and content counts for your creator database, research workflow, or application. No OnlyFans login or cookies required.

Run a single profile lookup or submit a list of creators in one request. Each successfully scraped profile becomes a structured dataset record that you can retrieve as JSON or export for analysis. Subscriber counts are included when publicly available.

### What you can do with this Actor

- **Monitor pricing & promotions** — track when creators run discounts, free trials, or limited-time offers
- **Aggregate creator stats** — photos, videos, posts, media counts, likes, subscriber counts
- **Enrich creator databases** — look up known usernames in bulk and refresh their profile details
- **Qualify creator leads** — use the returned pricing, content counts, and profile flags to filter your own shortlist
- **Market research** — compare subscription pricing, bundle structures, and promotion strategies across creators

### How to scrape OnlyFans profiles by username or URL

1. Open the actor and click **Try for free**
2. Add profile URLs (`https://onlyfans.com/username`) or plain usernames (one per line) to the **Profile URLs or Usernames** field
3. Click **Start** — results appear in the dataset within seconds

No account, cookies, or authentication required.

#### Bulk profile lookup example

Switch the input editor to JSON and use the following structure, replacing the example usernames with the creators you want to look up:

```json
{
  "startUrls": [
    "https://onlyfans.com/creator_one",
    "@creator_two",
    "creator_three"
  ],
  "concurrency": 5,
  "requestTimeoutSec": 30,
  "includeRaw": false
}
```

For example, an agency with a list of creator usernames can retrieve their current profile details, then use `username` or `id` to match the results to its existing records. Compare `subscribePrice`, `currentSubscribePrice`, and `promotions` to review subscription offers across that list.

Use the same input when calling `deepmine/onlyfans-profile-scraper-pro` through Apify's API. The actor's [API tab](https://apify.com/deepmine/onlyfans-profile-scraper-pro/api) provides request examples for using this OnlyFans data API from your application.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| Profile URLs or Usernames | list | — | OnlyFans profile URLs or plain usernames. Accepts `https://onlyfans.com/username`, `@username`, or `username` |
| Concurrency | integer | 5 | Number of profiles to fetch in parallel (1–20) |
| Request Timeout | integer | 30 | Per-request timeout in seconds (5–120) |
| Include Raw API Response | boolean | false | Attach the complete raw API response to each result |

### Profile data returned by the scraper

Each successfully scraped profile produces one item in the dataset. The **Profiles** output links to these records; the dataset's **Overview** view shows the most useful fields at a glance. The **Run Summary** output contains the successful profile count, error count, and elapsed time. The field reference below describes the profile records.

#### Identity

| Field | Description |
|---|---|
| `profileImage` | Full-resolution avatar URL |
| `profileImageThumbs` | Avatar thumbnails (50px, 144px) |
| `headerImage` | Header/banner image URL |
| `headerThumbs` | Header thumbnails (480px, 760px) |
| `id` | Numeric OnlyFans user ID |
| `name` | Display name |
| `username` | Username (slug) |
| `profileUrl` | Full profile URL |

#### Bio

| Field | Description |
|---|---|
| `about` | Bio text |
| `location` | Listed location |
| `website` | External website link |
| `joinDate` | Date account was created |
| `lastSeen` | Last activity timestamp |
| `firstPublishedPostDate` | Date of first published post |

#### Stats

| Field | Description |
|---|---|
| `subscribersCount` | Subscriber count (null if creator hides it) |
| `showSubscribersCount` | Whether the creator shows their subscriber count publicly |
| `favoritedCount` | Total likes received |
| `photosCount` | Number of photos |
| `videosCount` | Number of videos |
| `audiosCount` | Number of audio posts |
| `mediasCount` | Total media items |
| `postsCount` | Total posts |
| `archivedPostsCount` | Archived post count |
| `hasPinnedPosts` | Whether the profile has pinned posts |

#### Subscription & Pricing

| Field | Description |
|---|---|
| `subscribePrice` | Base monthly subscription price. `null` = subscribing not available for this profile |
| `currentSubscribePrice` | Effective price right now — reflects any active promo or free trial. `null` = subscribing not available |
| `subscriptionBundles` | Multi-month bundle options with durations, prices, and discounts |
| `promotions` | Active promotions including discount percentage, promo price, message, expiry, and claim counts |

#### Tips

| Field | Description |
|---|---|
| `tipsEnabled` | Whether tips are enabled |
| `tipsMin` / `tipsMax` | Minimum and maximum tip amounts |

#### Flags

| Field | Description |
|---|---|
| `isVerified` | Verified account |
| `isPerformer` | Creator/performer account |
| `isActive` | Account is active |
| `isAdultContent` | Marked as adult content |
| `isRestricted` | Geo-restricted or otherwise restricted |
| `canChat` | Whether direct messages are available |
| `hasStories` | Has active stories |
| `hasStream` | Currently streaming |
| `hasLinks` | Has external links listed |
| `isFriend` / `isBlocked` | Relationship state (when authenticated) |

#### Subscription State

Fields like `subscribedBy`, `subscribedOn`, `subscribedByData`, and related fields reflect authenticated subscription state. These are null or false for unauthenticated runs but are included for completeness and authenticated use cases.

### Track subscription prices and promotions

To track OnlyFans subscription prices over time, schedule repeated runs for the same usernames and retain each run's results. Compare records by `id` or `username`, using `scrapedAt` to identify each observation. Each run returns a current snapshot; your saved snapshots provide the history.

`currentSubscribePrice` is the most useful field for pricing intelligence:

- **`null`** — subscribing is not possible on this profile
- **`0`** — free subscription or free trial currently active
- **`> 0`** — current effective price, already discounted if a promotion is running

`subscribePrice` always reflects the base/regular price before any discounts.

### Performance

- Typical run time: under 1 second per profile
- Concurrency up to 20 parallel requests
- Lightweight — no browser, no proxy required for most use cases

### FAQ

**Can I use this as an OnlyFans data API?**
Yes. Call the actor through Apify's API with profile URLs or usernames and retrieve the profile records from the run's dataset. This is an independent scraper for public profile data, not an official OnlyFans API.

**Does this search for creators or look up known profiles?**
It looks up the usernames or profile URLs you supply. If you need to find creators first, use [OnlyFans Discovery Scraper](https://apify.com/deepmine/onlyfans-discovery-scraper), then pass the selected usernames here for profile details and later refreshes.

**Do I need an OnlyFans account to use this?**
No. All data returned is from public profile endpoints. No login or cookies needed.

**Can I input plain usernames instead of full URLs?**
Yes. You can enter `username`, `@username`, or `https://onlyfans.com/username` — all formats are accepted.

**Why is `subscribersCount` null for some profiles?**
Creators can hide their subscriber count. The `showSubscribersCount` field tells you whether the creator has made this public.

**Why is `subscribePrice` null for some profiles?**
Some accounts are not creator accounts or have disabled subscriptions. A null price means there is no subscribe button on the profile.

**What does `currentSubscribePrice` show when there's a promotion?**
It shows the actual price a new subscriber would pay right now — the promotional price, not the base price. For free trials it returns `0`.

**Can I scrape private profile content?**
No. This actor only retrieves public profile metadata. Private posts, messages, and subscriber-only content are not accessible.

**How do I scrape many profiles at once?**
Paste all usernames into the input field (one per line using the bulk edit option) and set concurrency to 10–20 for fastest results.

### Support

If you encounter an issue or have a feature request, use the actor's Issues tab or contact support through the Apify platform.

# Actor input Schema

## `startUrls` (type: `array`):

List of OnlyFans profile URLs (https://onlyfans.com/username) or plain usernames to scrape.

## `concurrency` (type: `integer`):

Number of profiles to scrape in parallel. Higher values are faster but may hit rate limits.

## `requestTimeoutSec` (type: `integer`):

Timeout for each API request in seconds.

## `includeRaw` (type: `boolean`):

Include the complete raw API response in each result for access to all available fields.

## Actor input object example

```json
{
  "startUrls": [
    "https://onlyfans.com/laurenalexisgold"
  ],
  "concurrency": 5,
  "requestTimeoutSec": 30,
  "includeRaw": false
}
```

# Actor output Schema

## `profiles` (type: `string`):

Successfully scraped profiles with identity, profile URLs, subscription pricing, promotions, bundles, content counts, and other available public profile fields. One dataset item per profile.

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

Run statistics: profilesScraped (successful profiles), errors (profiles that could not be fetched), and elapsedMs (run duration in milliseconds).

# 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 = {
    "startUrls": [
        "https://onlyfans.com/laurenalexisgold"
    ]
};

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

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

```

## MCP server setup

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

```

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/VnBiHOLxcn79IU1m1/builds/59AahUibVtEgY1fMq/openapi.json
