OnlyFans Public Profile and Post Preview Scraper avatar

OnlyFans Public Profile and Post Preview Scraper

Pricing

from $0.02 / 1,000 item extracteds

Go to Apify Store
OnlyFans Public Profile and Post Preview Scraper

OnlyFans Public Profile and Post Preview Scraper

Collect public OnlyFans creator profiles, prices, activity statistics, and anonymously visible post-preview metadata without credentials or media downloads.

Pricing

from $0.02 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Collect public OnlyFans creator profiles, subscription prices, activity counters, and post-preview metadata that OnlyFans shows to logged-out visitors.

The Actor accepts usernames and profile URLs, opens a conservative anonymous browser session, and saves two clean datasets:

  • Creator profiles in the default dataset
  • Public post previews in a separate run-scoped dataset

It does not accept account cookies or credentials. It does not subscribe to creators, unlock content, read messages, or download media.

What does this OnlyFans scraper collect?

For each requested public creator, the Actor captures the first-party JSON generated by the public profile page.

Profile records can include:

  • profile ID, username, and display name
  • verification status
  • biography, location, and website
  • public avatar and header URLs
  • join date and publicly exposed last-seen value
  • current subscription price and bundle offers
  • post, photo, video, and favorite counts
  • an explicit available or unavailable status

When post previews are enabled, the Actor also collects:

  • post ID and publication timestamp
  • preview text visible while logged out
  • public favorite and media counts
  • opened or locked indicators
  • author context
  • pagination page number and cursor provenance

Media URLs and media files are intentionally outside the product scope.

Who is it for

Creator marketing agencies can enrich creator lists with public pricing, verification, and activity indicators.

Influencer research teams can compare public creator positioning and visible publishing cadence.

Brand-safety analysts can monitor publicly visible biography and preview text changes without accessing subscriber content.

Creator-economy researchers can build repeatable public metadata snapshots for longitudinal analysis.

Data engineers can feed normalized creator and post-preview records into warehouses, dashboards, or monitoring workflows.

Why use this public metadata workflow?

OnlyFans profile pages are JavaScript applications. A plain HTTP request returns an application shell rather than the useful profile data.

This Actor uses a logged-out Playwright browser to let the page generate its current signed first-party requests, then parses the resulting JSON. That design avoids user-supplied authentication and keeps the product boundary auditable.

Other practical benefits include:

  • usernames and profile URLs in one run
  • deduplication of repeated targets
  • separate schemas for profiles and post previews
  • bounded pagination up to the requested limit
  • explicit unavailable records for confirmed missing profiles
  • no automatic paid proxy fallback
  • image, media, and font request blocking to reduce transfer

Getting started

  1. Open the Actor in Apify Console.
  2. Add one or more values under OnlyFans usernames or OnlyFans profile URLs.
  3. Choose whether to collect public post previews.
  4. Set Maximum post previews per profile.
  5. Leave the proxy disabled for the normal direct workflow, or configure one explicitly if your network requires it.
  6. Click Start.
  7. Open Creator profiles for profile rows and Public post previews for preview rows.
  8. Export either dataset as JSON, CSV, Excel, XML, or another Apify-supported format.

A small first run is recommended before scheduling a larger recurring workflow.

Input parameters

FieldTypeDefaultDescription
usernamesstring array[]OnlyFans usernames, with or without a leading @.
startUrlsrequest list[]Public URLs in the form https://onlyfans.com/username.
includePostsbooleantrueSave anonymously visible post previews in the Posts dataset.
maxPostsPerProfileinteger20Maximum previews per creator, from 0 to 200.
proxyConfigurationobjectdisabledOptional proxy for the coherent browser session.

At least one username or profile URL is required. A run accepts up to 50 raw profile inputs.

Non-OnlyFans hosts, post URLs, and malformed usernames fail validation instead of being silently ignored.

Example input: one creator with previews

{
"startUrls": [
{ "url": "https://onlyfans.com/amouranth" }
],
"includePosts": true,
"maxPostsPerProfile": 20,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Example input: profiles only

{
"usernames": [
"amouranth",
"bhadbhabie"
],
"includePosts": false,
"maxPostsPerProfile": 0
}

Profiles-only mode is useful for periodic price and public-counter snapshots.

Creator profile output

The default dataset contains one row for every successfully handled target.

{
"recordType": "profile",
"status": "available",
"requestedUsername": "samplecreator",
"sourceUrl": "https://onlyfans.com/samplecreator",
"profileId": 12345678,
"username": "samplecreator",
"name": "Sample Creator",
"isVerified": true,
"bio": "Public creator profile description.",
"location": null,
"website": null,
"avatarUrl": "https://cdn.example/avatar.jpg",
"headerUrl": "https://cdn.example/header.jpg",
"joinDate": "2023-01-15T12:00:00+00:00",
"lastSeen": "2025-01-15T12:00:00+00:00",
"subscriptionPrice": 9.99,
"subscriptionBundles": [],
"postsCount": 250,
"photosCount": 180,
"videosCount": 70,
"favoritesCount": 12500,
"scrapedAt": "2025-01-15T12:00:00.000Z"
}

Fields may be null when OnlyFans does not expose a value for that profile.

A confirmed missing or inaccessible public username produces status: "unavailable" with an unavailableReason instead of pretending that an empty response is valid creator data.

Public post-preview output

Post previews are stored in the run-scoped Posts dataset.

{
"recordType": "postPreview",
"sourceUrl": "https://onlyfans.com/samplecreator",
"profileId": 12345678,
"username": "samplecreator",
"authorName": "Sample Creator",
"postId": 987654321,
"postedAt": "2025-01-15T12:00:00+00:00",
"text": "Public post preview text.",
"favoritesCount": 125,
"mediaCount": 1,
"isOpened": true,
"isLocked": false,
"responseType": "post",
"pageNumber": 1,
"pageCursor": "1736942400.000000",
"scrapedAt": "2025-01-15T12:00:00.000Z"
}

mediaCount is metadata only. The Actor does not download or return the underlying photos or videos.

How much does it cost to scrape public OnlyFans profiles?

The Actor uses pay per event pricing with a $0.005 one-time run-start fee plus one item event for every saved profile or post preview.

At the Free tier, the item event costs $0.000041071 per saved record. The item price decreases across the Bronze, Silver, Gold, Platinum, and Diamond platform tiers.

Example Free-tier calculations:

  • 1 profile with 20 previews: $0.005 + 21 × $0.000041071 = $0.005862491
  • 10 profiles without previews: $0.005 + 10 × $0.000041071 = $0.005410710
  • 10 profiles with 100 previews each: $0.005 + 1,010 × $0.000041071 = $0.046481710

Only records actually saved produce item events. A confirmed unavailable profile is still a useful profile-status record and counts as one item. The run-start event is charged once per run.

Your Apify plan and any explicitly enabled proxy usage are separate platform considerations.

Pagination, limits, and freshness

The public page initially loads a small preview page. The Actor performs bounded page-bottom scrolling to trigger the signed cursor requests generated by the site.

Pagination stops when:

  • maxPostsPerProfile is reached
  • OnlyFans reports no additional public previews
  • the page no longer produces another preview response

A creator can have more posts than a logged-out visitor can preview. postsCount is the public profile counter; it is not a promise that the same number of preview records is anonymously accessible.

Results represent what the public page returned during the run. Schedule recurring runs if you need snapshots over time.

Proxy and session behavior

By default, the Actor connects directly and does not trigger residential proxy charges.

If you configure a proxy, one coherent browser proxy identity is used for the run. Cookies, request signatures, and browser state remain together.

There is no hidden residential fallback. This makes proxy use predictable and lets you choose the geography and proxy groups appropriate for your own workflow.

For a transient upstream failure, the Actor retries a profile once in a fresh page. Persistent challenges and unexpected upstream responses fail the run rather than returning misleading empty success.

Errors and troubleshooting

“Provide at least one username or OnlyFans profile URL.”

Add a value to usernames or startUrls.

“Unsupported host in URL.”

Use a public URL directly under onlyfans.com, not a search result, redirector, or post URL.

The profile is marked unavailable.

Confirm that the username still resolves publicly in a logged-out browser. Removed, renamed, restricted, or nonexistent profiles can appear unavailable.

The run reports fewer previews than maxPostsPerProfile.

The limit is a maximum, not a guarantee. Only previews exposed anonymously by the current public page can be returned.

The run encounters a challenge or timeout.

Retry later or configure an appropriate proxy explicitly. Do not provide account cookies; authenticated scraping is intentionally unsupported.

Automation and integration ideas

  • Schedule a weekly creator price and activity snapshot.
  • Join profile records to an agency CRM using username.
  • Send new public preview rows to a warehouse through a webhook.
  • Compare postsCount, favoritesCount, and lastSeen between snapshots.
  • Route public preview text through a separate classification or brand-safety process.
  • Export creator pricing and verification fields to Google Sheets.

Use profile IDs and post IDs as source identifiers, while retaining scrapedAt for snapshot provenance.

Run with the Apify API using cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~onlyfans-public-profile-post-preview-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"usernames": ["amouranth"],
"includePosts": true,
"maxPostsPerProfile": 20
}'

The response contains the run ID and dataset links. Poll the run or use the synchronous dataset endpoint when appropriate for your integration.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor(
'automation-lab/onlyfans-public-profile-post-preview-scraper'
).call({
usernames: ['amouranth'],
includePosts: true,
maxPostsPerProfile: 20,
});
const profiles = await client.dataset(run.defaultDatasetId).listItems();
console.log(profiles.items);

The run object also exposes storage information for the aliased Posts dataset in Apify Console.

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor(
"automation-lab/onlyfans-public-profile-post-preview-scraper"
).call(run_input={
"usernames": ["amouranth"],
"includePosts": True,
"maxPostsPerProfile": 20,
})
profiles = client.dataset(run["defaultDatasetId"]).list_items().items
print(profiles)

Never embed an Apify token in source control.

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/onlyfans-public-profile-post-preview-scraper"

Use the same server URL for Claude Desktop, Cursor, and VS Code MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/onlyfans-public-profile-post-preview-scraper"
}
}
}

Example prompts showing MCP usage:

  • “Get the public profile and 20 visible post previews for the OnlyFans username amouranth.”
  • “Collect profile-only snapshots for these creator usernames and return a pricing comparison table.”
  • “Run the OnlyFans public profile Actor for this URL and summarize unavailable profiles separately.”

MCP uses the same input limits and public-only scope as Console and API runs.

Responsible use and legality

Only collect and process data you are legally permitted to use.

Review OnlyFans terms, applicable privacy and database laws, contractual obligations, and your organization's policies before running a workflow. Public accessibility does not remove all legal or ethical responsibilities.

Do not use the Actor to harass creators, facilitate discrimination, build intrusive personal profiles, or evade access controls.

The Actor intentionally excludes:

  • account credentials and user cookies
  • paid subscriptions and purchases
  • locked or subscriber-only content
  • private messages
  • media file downloading
  • CAPTCHA solving or access-control bypass

You are responsible for retention, security, and downstream use of exported records.

Limitations

  • OnlyFans can change its public application and signed API behavior without notice.
  • Public fields vary by creator and may be null.
  • Removed, renamed, geo-restricted, or otherwise unavailable profiles may produce unavailable records.
  • Preview availability is determined by the logged-out public page.
  • The Actor does not expose or download locked media.
  • Concurrency is intentionally conservative to protect session stability.
  • A maximum of 50 raw profiles and 200 previews per profile is enforced per run.
  • Optional proxy results can vary by geography and proxy quality.

This Actor is deliberately standalone in the current automation-lab portfolio because no existing automation-lab Actor covers the same public OnlyFans profile workflow.

Use Apify integrations such as schedules, webhooks, Make, Zapier, Google Sheets, and dataset exports to connect its output to your broader automation stack.

FAQ

Does this Actor need an OnlyFans account?

No. It is designed for the public logged-out surface and does not accept credentials.

Can it download OnlyFans photos or videos?

No. It returns public metadata such as mediaCount, but never downloads media.

Can it unlock posts or scrape messages?

No. Locked content, subscriptions, purchases, and private messages are explicitly excluded.

Why are profiles and previews in separate datasets?

They are distinct entities with different schemas and update rates. Separate run-scoped datasets keep exports clean while preserving profiles as the default backward-compatible result.

Can I monitor changes over time?

Yes. Schedule recurring runs and compare records using username, profileId or postId, and scrapedAt.

Does maxPostsPerProfile guarantee that many rows?

No. It is an upper bound. The Actor returns only the previews the public page exposes during that run.

Is proxy use automatic?

No. The default is direct access. A proxy is used only when you configure it.

What happens for a nonexistent username?

A confirmed 404 produces an unavailable profile record with a reason. Transient blocks and unexpected upstream failures are not mislabeled as unavailable.