How to Get Your OnlyFans Subscribers List via API
This guide covers how to get your OnlyFans subscribers list from the API — from token to a complete, paginated dump — with ofapis.
Step 1 — Get a token
Create an ofapis_sk_... token in the dashboard (start free) and store it securely. See authentication.
Step 2 — Fetch the first page
Request a page with limit and offset:
curl "https://api.ofapis.com/api/public/v1/subscribers?limit=50&offset=0" \
-H "Authorization: Bearer ofapis_sk_..."
Response:
{
"data": {
"list": [
{ "id": 98765, "username": "fan_jane", "name": "Jane", "avatar": "https://cdn3.onlyfans.com/...", "subscribedOn": true }
],
"hasMore": true,
"nextOffset": 50
}
}
Everything is wrapped in a data envelope. Inside it you get a page of fans, a hasMore flag, and the nextOffset to request next.
Step 3 — Page through everyone
Loop, advancing the offset until hasMore is false:
import requests
HEADERS = {"Authorization": "Bearer ofapis_sk_..."}
URL = "https://api.ofapis.com/api/public/v1/subscribers"
subscribers, offset = [], 0
while True:
data = requests.get(URL, headers=HEADERS, params={"limit": 50, "offset": offset}).json()["data"]
subscribers.extend(data["list"])
if not data.get("hasMore"):
break
offset = data["nextOffset"]
print(f"{len(subscribers)} subscribers")
Each request costs one credit; on large audiences mind your plan's rate limit. A 20,000-fan roster at 50 per page is 400 calls — well within Starter's monthly credits, but pace requests to stay under your rpm.
Step 4 — Filter and export
Narrow the pull with query params instead of downloading everything:
curl "https://api.ofapis.com/api/public/v1/subscribers?filter=active&sort=spentTotal" \
-H "Authorization: Bearer ofapis_sk_..."
Then put the list to work:
- Sync fans into a CRM.
- Build fan segments for targeting.
- Message a segment with the mass DM API.
Common errors
| Status | Meaning | Fix |
|---|---|---|
401 |
Missing or revoked token | Reissue the key in the dashboard |
422 |
Bad limit (over the max) |
Keep limit at or below 100 |
429 |
Rate limit hit | Slow the loop; check rpm on pricing |
Failed calls are never charged.
FAQ
Does the subscribers endpoint include expired fans?
By default it returns active subscribers. Pass a filter param to include expired or all fans, and read isActive on each record to distinguish them.
How many subscribers can I fetch per request?
Up to 100 per page via limit. Paginate with offset and nextOffset to walk the full list.
Does pulling the whole list cost a lot of credits?
One credit per page, not per fan. A 20,000-fan export at 100 per page is 200 credits. See pricing for plan allowances.
Can I get subscribers for a specific account on a multi-account plan?
Yes. Use the scoped route /accounts/{id}/subscribers. Omit the account segment and it uses your first active account.