OnlyFans API
OnlyFansFollowing

List Active Followings

Get a paginated list of followings for an Account. By default OnlyFans returns this list newest-first, sorted by subscribedByData.subscribeAt descending. The expired list does not share this order, so do not assume it applies there. Pass sort (optionally with sortDirection) to reorder the list — see the parameter description for the caveat that OnlyFans persists the chosen order account-wide. An empty page is not the end of the list: OnlyFans applies offset to the whole following collection before filtering it down to the requested list, so a page can come back empty while more results follow. Keep following _pagination.next_page until it is null instead of stopping at the first empty page.

GET
/api/{account}/following/active
AuthorizationBearer <token>

Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys

In: header

Path Parameters

account*string

The Account ID

Query Parameters

limit?integer

Number of followings to return (1-50). Must be at least 1. Must not be greater than 50.

offset?integer

Pagination offset. Must be at least 0.

query?string|null

Search within following name/username.

filter?object
filter.online?integer|null

Filter by online status (1 for online, 0 for offline, null for all).

Value in1 | 0
filter.paid?integer|null

Filter by paid status (1 for paid, 0 for free, null for all).

Value in1 | 0
sort?string|null

Order the list by last_activity (the followed creator's last activity), expire_date (subscription expiry), subscribe_date (subscription start) or is_expired (expired first — OnlyFans only offers this one on the expired list). Omit it to keep whichever order is currently stored for the account. Note: OnlyFans persists this order account-wide, so it also applies to later requests that omit sort and to the creator's own onlyfans.com UI, until it is changed again. Expired list: OnlyFans applies offset to the whole following collection and only then filters it down to expired subscriptions, so ordering by expiry descending puts the still-active subscriptions first and moves the expired rows to the tail of the collection — the first several hundred offsets then come back empty. Use sortDirection=asc or sort=is_expired to get expired-first results. For that reason sort=expire_date on the expired list defaults to asc instead of desc when you do not pass sortDirection. Whatever order you pick, an empty page is not the end of the list: keep following _pagination.next_page until it is null rather than stopping at the first empty page. This field is required when sortDirection is present.

Value in"last_activity" | "expire_date" | "subscribe_date" | "is_expired"
sortDirection?string|null

Direction for sort: desc (default) or asc. Requires sort to be set. Exception: sort=expire_date on the expired list defaults to asc, because desc moves the expired rows to the tail of the underlying collection and leaves the early pages empty. Passing sortDirection explicitly always wins.

Value in"asc" | "desc"

Response Body

application/json

curl -X GET "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/following/active?limit=10&offset=0&query=john&filter=&filter.online=1&filter.paid=1&sort=subscribe_date&sortDirection=desc"
{
  "data": {
    "list": [
      {
        "view": "x",
        "avatar": "https://public.onlyfans.com/files/j/jr/jrh/jrhrmrkcgwyldumcgfgsij7h9hncsf3b1640855614/avatar.jpg",
        "avatarThumbs": {
          "c50": "https://thumbs.onlyfans.com/public/files/thumbs/c50/j/jr/jrh/jrhrmrkcgwyldumcgfgsij7h9hncsf3b1640855614/avatar.jpg",
          "c144": "https://thumbs.onlyfans.com/public/files/thumbs/c144/j/jr/jrh/jrhrmrkcgwyldumcgfgsij7h9hncsf3b1640855614/avatar.jpg"
        },
        "header": "https://public.onlyfans.com/files/x/xl/xlu/xlusgobxpcebctdptohj7bogxvl9flfu1671047829/254/header.jpg",
        "headerSize": {
          "width": 4868,
          "height": 851
        },
        "headerThumbs": {
          "w480": "https://thumbs.onlyfans.com/public/files/thumbs/w480/x/xl/xlu/xlusgobxpcebctdptohj7bogxvl9flfu1671047829/254/header.jpg",
          "w760": "https://thumbs.onlyfans.com/public/files/thumbs/w760/x/xl/xlu/xlusgobxpcebctdptohj7bogxvl9flfu1671047829/254/header.jpg"
        },
        "id": 254,
        "name": "OnlyFans Creators",
        "username": "onlyfanscreators",
        "canLookStory": true,
        "canCommentStory": false,
        "hasNotViewedStory": false,
        "isVerified": true,
        "canPayInternal": true,
        "hasScheduledStream": false,
        "hasStream": false,
        "hasStories": false,
        "tipsEnabled": true,
        "tipsTextEnabled": false,
        "tipsMin": 5,
        "tipsMinInternal": 1,
        "tipsMax": 200,
        "canEarn": true,
        "canAddSubscriber": false,
        "subscribePrice": 0,
        "isPaywallRequired": true,
        "isRestricted": false,
        "canRestrict": true,
        "subscribedBy": true,
        "subscribedByExpire": false,
        "subscribedByExpireDate": "2025-01-01T00:00:00+00:00",
        "subscribedByAutoprolong": true,
        "subscribedIsExpiredNow": false,
        "currentSubscribePrice": 0,
        "subscribedOn": false,
        "subscribedOnExpiredNow": null,
        "subscribedOnDuration": null,
        "listsStates": [
          {
            "id": "following",
            "type": "following",
            "name": "Following",
            "hasUser": true,
            "canAddUser": false,
            "cannotAddUserReason": "ALREADY_EXISTS"
          }
        ],
        "canReport": false,
        "canReceiveChatMessage": false,
        "hideChat": false,
        "lastSeen": null,
        "isPerformer": true,
        "isRealPerformer": true,
        "subscribedByData": {
          "price": 0,
          "newPrice": 0,
          "regularPrice": 0,
          "subscribePrice": 0,
          "discountPercent": 0,
          "discountPeriod": 1,
          "subscribeAt": "2025-01-01T00:00:00+00:00",
          "expiredAt": "2025-01-01T00:00:00+00:00",
          "renewedAt": "2025-01-01T00:00:00+00:00",
          "discountFinishedAt": null,
          "discountStartedAt": null,
          "status": null,
          "isMuted": false,
          "unsubscribeReason": "No reason given",
          "duration": "4 months",
          "showPostsInFeed": true,
          "subscribes": [
            {
              "id": 123,
              "userId": 254,
              "subscriberId": 123,
              "date": "2025-01-01T00:00:00+00:00",
              "duration": 3652,
              "startDate": "2025-01-01T00:00:00+00:00",
              "expireDate": "2025-01-01T00:00:00+00:00",
              "cancelDate": null,
              "price": 0,
              "regularPrice": 0,
              "discount": 0,
              "earningId": 0,
              "action": "subscribe",
              "type": "auto",
              "offerStart": null,
              "offerEnd": null,
              "isCurrent": true
            }
          ],
          "hasActivePaidSubscriptions": false
        },
        "subscribedOnData": null,
        "canTrialSend": false,
        "isBlocked": false,
        "canUnsubscribe": true,
        "isPendingAutoprolong": false
      }
    ],
    "hasMore": true
  },
  "_pagination": {
    "next_page": "https://app.onlyfansapi.com/api/acct_abc123/following/active?offset=10&limit=10"
  },
  "_meta": {
    "_credits": {
      "used": 1,
      "balance": 999971,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": 50000,
      "remaining_minute": 999,
      "remaining_day": 49994
    }
  }
}