OnlyFans Public Profile & Stats Scraper
Pricing
from $6.15 / 1,000 results
OnlyFans Public Profile & Stats Scraper
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.
Pricing
from $6.15 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
10
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
OnlyFans Public Profile & Stats Scraper
Here is one real result, with every field the actor returns (the curly apostrophe in about is rendered here as a straight quote and the text is trimmed with a note; all values are real):
{"avatarUrl": "https://public.onlyfans.com/files/o/o6/o63/o63vofufdwcnyweevm8lxtnqjx0cijmo1615932746/avatar.jpg","bannerUrl": "https://public.onlyfans.com/files/v/vf/vfi/vfimavq5kjgv3qicoksxwj9cjwiocvld1615932530/header.jpg","displayName": "Angela White","username": "angela","profileUrl": "https://onlyfans.com/angela","id": 115073010,"isVerified": true,"subscribePrice": 0,"hasFreeTrial": true,"promotions": [],"about": "All the naughty things I can't post on Instagram. Check out my VIP page onlyfans.com/angelawhite to see all my nastiest XXX content.","location": "Los Angeles","website": "https://onlyfans.com/angelawhite","joinDate": "2021-02-07T00:00:00+00:00","lastSeen": null,"firstPublishedPostDate": "2021-02-07T00:00:00+00:00","postsCount": 892,"photosCount": 216,"videosCount": 1575,"audiosCount": 0,"mediasCount": 1791,"likesCount": 40952,"favoritesCount": 4,"subscribersCount": null,"archivedPostsCount": 0,"finishedStreamsCount": 2,"isPerformer": true,"isVerifiedPerformer": true,"isAdultContent": true,"hasStories": false,"hasStream": false,"canReceiveMessage": false,"hasExternalLinks": false,"hasMerchStore": false,"spotifyConnected": false,"tipsEnabled": false,"tipsMin": 5,"tipsMax": 200,"observedAt": "2026-08-10T14:04:09.992Z","error": null}
The most complete OnlyFans public profile scraper available. It returns every public field a creator profile exposes, including subscription price, free-trial flag, media and engagement counts, tip range, and account flags, and takes one or more usernames to return exactly the profiles you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor takes one or more OnlyFans usernames, fetches each creator's public profile, and writes one normalized record per username to the run's dataset. It returns only public profile data (bio, subscription price, media and engagement counts, account flags, tip range); it does not access, unlock, or download any paid or gated content. Missing source values are returned as null.
A username can be a bare handle (angela), an @name, or a full profile URL (https://onlyfans.com/angela).
Quickstart
Open the actor, paste this into the input, and press Run. It returns the public profiles for two creators.
{"maxProfiles": 10,"usernames": ["onlyfans", "angela"]}
usernames is required. Add one entry per creator you want; each returns one record.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
usernames | string[] | yes | ["onlyfans", "angela"] | Public OnlyFans usernames to scrape, one record per username. Accepts a bare username, an @name, or a full profile URL. |
maxProfiles | integer | no | 10 | Maximum number of creator profiles to collect. |
proxyConfiguration | object | no | (none) | Standard Apify proxy configuration. |
Output reference
One dataset item per username. Types: string, integer, number, boolean, array, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
avatarUrl | string | Profile avatar image URL. |
bannerUrl | string | Profile header/banner image URL. |
displayName | string | Creator display name. |
username | string | OnlyFans username (handle). |
profileUrl | string | Direct link to the public profile. |
id | integer | Numeric OnlyFans account ID. |
isVerified | boolean | true when the account is verified. |
subscribePrice | number | Monthly subscription price. 0 for free accounts. |
hasFreeTrial | boolean | true when a free trial is offered. |
promotions | array | Active subscription promotions, or empty. |
about | string | Profile bio text. |
location | string | Location as listed, or null. |
website | string | External website link, or null. |
joinDate | string | Date the account joined (ISO 8601). |
lastSeen | string | Last-seen timestamp when public, else null. |
firstPublishedPostDate | string | Date of the first published post (ISO 8601). |
postsCount | integer | Number of posts. |
photosCount | integer | Number of photos. |
videosCount | integer | Number of videos. |
audiosCount | integer | Number of audio posts. |
mediasCount | integer | Total media items. |
likesCount | integer | Total likes received. |
favoritesCount | integer | Number of favorites. |
subscribersCount | integer | Subscriber count when public, else null. |
archivedPostsCount | integer | Number of archived posts. |
finishedStreamsCount | integer | Number of finished live streams. |
isPerformer | boolean | true when the account is a performer. |
isVerifiedPerformer | boolean | true when the account is a verified performer. |
isAdultContent | boolean | true when the account is flagged adult content. |
hasStories | boolean | true when the account has stories. |
hasStream | boolean | true when the account is currently streaming. |
canReceiveMessage | boolean | true when the account can receive messages. |
hasExternalLinks | boolean | true when external links are present. |
hasMerchStore | boolean | true when a merch store is connected. |
spotifyConnected | boolean | true when Spotify is connected. |
tipsEnabled | boolean | true when tips are enabled. |
tipsMin | number | Minimum tip amount. |
tipsMax | number | Maximum tip amount. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. When a profile is not found or fails to fetch, an item with a populated error field (and username, profileUrl) is written instead. |
Example output record
Real record from a live run (input {"usernames":["angela"]}). The curly apostrophe in about is rendered here as a straight quote and the text is trimmed with a note; all values are real:
{"displayName": "Angela White","username": "angela","profileUrl": "https://onlyfans.com/angela","id": 115073010,"isVerified": true,"subscribePrice": 0,"hasFreeTrial": true,"location": "Los Angeles","website": "https://onlyfans.com/angelawhite","joinDate": "2021-02-07T00:00:00+00:00","postsCount": 892,"photosCount": 216,"videosCount": 1575,"mediasCount": 1791,"likesCount": 40952,"isPerformer": true,"isVerifiedPerformer": true,"isAdultContent": true,"tipsEnabled": false,"tipsMin": 5,"tipsMax": 200,"observedAt": "2026-08-10T14:04:09.992Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~onlyfans-profile-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"usernames":["onlyfans","angela"],"maxProfiles":10}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~onlyfans-profile-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"usernames":["https://onlyfans.com/angela"]}'
Apify CLI:
apify call scrapers_lat/onlyfans-profile-scraper \--input '{"usernames":["angela"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per profile returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a profile is not found or fails to fetch, the actor writes an item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 profiles per run. Upgrade for more.
FAQ and troubleshooting
A profile came back with an error. Why?
The username does not exist, was renamed, or the profile could not be fetched. The record carries a populated error field and is not charged.
Does this unlock paid or private content? No. The actor returns only public profile data (bio, prices, public counts, account flags). It does not access, unlock, or download any paid, subscriber-only, or gated content.
Can I pass a full URL instead of a username?
Yes. usernames accepts a bare handle, an @name, or a full profile URL such as https://onlyfans.com/angela.
Why is subscribersCount null?
That figure is only returned when the creator makes it public. Missing source values are returned as null, never invented.
How do I know if an account is free?
subscribePrice is 0 for free accounts, and hasFreeTrial indicates whether a trial is offered.
Is this an official OnlyFans tool? No. This actor is independent and has no affiliation with OnlyFans or Fenix International. It reads only data that is publicly available on the platform. Use it in accordance with OnlyFans's terms of service.
Related scrapers
- Fansly Profile Scraper: Public Fansly creator profiles and stats.
- Fanvue Profile Scraper: Public Fanvue creator profiles and stats.
- FanCentro Profile Scraper: Public FanCentro creator profiles.
- JustForFans Profile Scraper: Public JustForFans creator profiles.
- Chaturbate Scraper: Live Chaturbate broadcaster data.
- Instagram Scraper: Public Instagram profiles and posts.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with OnlyFans or Fenix International. Accesses only publicly available profile data. Use in accordance with OnlyFans's terms of service.
