# OnlyFans Public Profile & Stats Scraper (`scrapers_lat/onlyfans-profile-scraper`) Actor

Look up any public OnlyFans creator by username and extract the public profile: display name, bio, subscription price, free trial, post, photo and video counts, likes, subscriber count, avatar, banner, verification and join date. Export to JSON, CSV or Excel. No login.

- **URL**: https://apify.com/scrapers\_lat/onlyfans-profile-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

<!-- actor-banner -->
[![OnlyFans Public Profile & Stats Scraper](https://scrapers.lat/banners/onlyfans-profile-scraper.png)](https://console.apify.com/actors/tKbxwlZWngKgsS9HR/input)
<!-- /actor-banner -->

## OnlyFans Public Profile & Stats Scraper

> Extract public OnlyFans creator profiles by username: display name, bio, subscription price, free trial, post, photo and video counts, likes, subscribers, avatar and banner

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Global-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>30 fields</strong><br>per profile</td>
<td align="center"><strong>Global</strong><br>coverage</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
<td align="center"><strong>Updated</strong><br>2026-07-03</td>
</tr></table>

<br>

### What you get

Give it one or more OnlyFans usernames and get back the public profile that any logged-out visitor sees on the creator page, structured as clean JSON. Each record contains:

- **avatarUrl**: profile picture image URL
- **bannerUrl**: profile header or banner image URL
- **displayName**: the creator's public display name
- **username**: the OnlyFans handle
- **profileUrl**: canonical link to the public profile
- **id**: the numeric account ID
- **isVerified**: whether the account is verified
- **subscribePrice**: monthly subscription price in USD (0 means free)
- **hasFreeTrial**: whether the account is free or offers a free promotion
- **promotions**: public subscription offers with price, discount percent, duration and message
- **about**: the public bio or about text
- **location**: location shown on the profile, when set
- **website**: external website link, when set
- **joinDate**: the date the account joined OnlyFans
- **lastSeen**: last seen timestamp, when the creator makes it public
- **firstPublishedPostDate**: date of the first public post
- **postsCount**: number of posts
- **photosCount**: number of photos
- **videosCount**: number of videos
- **audiosCount**: number of audio posts
- **mediasCount**: total media items
- **likesCount**: total likes the creator has received
- **subscribersCount**: subscriber count, when the creator shows it
- **isAdultContent**: whether the account is flagged as adult content
- **hasStories**: whether the account currently has stories
- **hasStream**: whether the account is live streaming
- **tipsEnabled**: whether tipping is enabled
- **tipsMin**: minimum tip amount
- **tipsMax**: maximum tip amount
- **observedAt**: when this profile was last seen by the scraper

Every field comes from the public creator page. The scraper never logs in and never reads subscriber-only posts, media or messages.

### Who is it for

| Use case | Who benefits |
|---|---|
| Track creator pricing and promotions | Agencies and creator managers |
| Build creator discovery and ranking lists | Marketplaces and directories |
| Monitor follower, post and likes growth | Analysts and researchers |
| Verify a handle, price and stats at scale | Brand and influencer teams |
| Enrich a CRM with public creator profiles | Sales and partnerships teams |

### Frequently Asked Questions

**Does this scraper work for any OnlyFans creator?**
It works for any public creator page that a logged-out visitor can open at onlyfans.com/username. Pass the username, an @handle or the full profile URL. Private or deactivated accounts return a not found record.

**Can it read posts, photos or messages behind the paywall?**
No. It only reads the public profile fields that OnlyFans shows to logged-out visitors, such as name, bio, price, counts and avatar. It never logs in and never accesses subscriber-only content.

**How many profiles can I scrape in one run?**
As many usernames as you pass. Use Max Items to cap the run. Profiles are fetched a few at a time and streamed to the dataset as they complete.

**Why is a residential proxy required?**
OnlyFans blocks datacenter IP ranges, so the actor uses Apify residential proxies by default to reach the public page. Residential traffic is metered per GB on your Apify plan.

**What happens when a username does not exist?**
The record is returned with the username, the profile URL and an error note of Profile not found, so you can tell missing handles apart from live profiles in the same dataset.

<!-- example-tasks -->
<!-- /example-tasks -->

<!-- x402 -->
### Export, API and AI agents (x402 + MCP)

Export the scraped data to **JSON, CSV or Excel**, pull it as a **dataset** through the Apify **API**, or wire it into your app with **no code**. This web scraper and data extractor also works for bulk data extraction and scheduled runs.

For AI agents: this Actor is available on **x402**, Apify's agentic payment standard built with Coinbase. An AI agent can discover, pay for and run it on its own with a funded wallet and a single HTTP request: no account, no subscription, no API key and no human in the loop. It also runs as an **MCP** tool inside Claude, Cursor and other AI clients out of the box. Learn more about [x402 agentic payments on Apify](https://docs.apify.com/platform/integrations/x402).
<!-- /x402 -->

<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [X (Twitter) Profile & Tweets Scraper](https://apify.com/scrapers_lat/x-profile-scraper): look up any public X account and get profile plus recent tweets
- [Instagram Profile & Posts Scraper](https://apify.com/scrapers_lat/instagram-scraper): pull public Instagram profiles, follower counts and recent posts
- [Instagram Reels Scraper](https://apify.com/scrapers_lat/instagram-reels-scraper): collect Reels with views, likes and audio details
- [Reddit User Profile, Posts & Comments Scraper](https://apify.com/scrapers_lat/reddit-user-scraper): extract public Reddit user profiles with their posts and comments
- [X (Twitter) Tweets & Profiles Scraper](https://apify.com/scrapers_lat/x-twitter-scraper): search and scrape tweets with engagement and author profiles
- [TikTok Creative Center Top Ads Scraper](https://apify.com/scrapers_lat/tiktok-creative-center-scraper): find top performing TikTok ads and creative trends
<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for Latin American and US public platforms: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with OnlyFans. It only accesses data that is publicly available on the platform. Use it in accordance with OnlyFans's terms of service.

# Actor input Schema

## `maxItems` (type: `integer`):

Maximum number of profiles to collect. Optional.
## `usernames` (type: `array`):

Public OnlyFans usernames to scrape, one record per username. Accepts a bare username such as onlyfans, an @name, or a full profile URL such as https://onlyfans.com/onlyfans. Add one or more.
## `proxyConfiguration` (type: `object`):

Proxy used to reach OnlyFans. RESIDENTIAL is required and used by default. OnlyFans blocks datacenter IPs, so residential is mandatory. Residential traffic is metered per GB on your Apify plan.

## Actor input object example

```json
{
  "maxItems": 10,
  "usernames": [
    "onlyfans",
    "angela"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
````

# Actor output Schema

## `results` (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 = {
    "maxItems": 10,
    "usernames": [
        "onlyfans",
        "angela"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/onlyfans-profile-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 = {
    "maxItems": 10,
    "usernames": [
        "onlyfans",
        "angela",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/onlyfans-profile-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "usernames": [
    "onlyfans",
    "angela"
  ]
}' |
apify call scrapers_lat/onlyfans-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapers_lat/onlyfans-profile-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "OnlyFans Public Profile & Stats Scraper",
        "description": "Look up any public OnlyFans creator by username and extract the public profile: display name, bio, subscription price, free trial, post, photo and video counts, likes, subscriber count, avatar, banner, verification and join date. Export to JSON, CSV or Excel. No login.",
        "version": "0.1",
        "x-build-id": "ywfcCRUlLFPGSn4Ru"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~onlyfans-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-onlyfans-profile-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapers_lat~onlyfans-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-onlyfans-profile-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapers_lat~onlyfans-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-onlyfans-profile-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "usernames",
                    "proxyConfiguration"
                ],
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Maximum number of profiles to collect. Optional."
                    },
                    "usernames": {
                        "title": "Usernames",
                        "type": "array",
                        "description": "Public OnlyFans usernames to scrape, one record per username. Accepts a bare username such as onlyfans, an @name, or a full profile URL such as https://onlyfans.com/onlyfans. Add one or more.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy used to reach OnlyFans. RESIDENTIAL is required and used by default. OnlyFans blocks datacenter IPs, so residential is mandatory. Residential traffic is metered per GB on your Apify plan.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
