ofapisv1
guide

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:

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.

Next steps

Related guides

All guides
Start free — 250 credits, no card
Generate a token and make your first call in minutes.
Get started