List Expired Followings
Get a paginated list of expired followings for an Account. This list has no order guarantee. Unlike the all and active lists, it is sorted by neither subscribedByData.subscribeAt nor subscribedByData.expiredAt. To poll for new expirations, page through the full list each cycle (limit=50, follow _pagination.next_page until it is null) and diff it against your own store using subscribedByData.expiredAt. Do NOT stop early at the first entry you have already seen, as that can silently skip real expirations. An empty page is not the end of the list either: OnlyFans applies offset to the whole following collection and only then filters that window down to expired subscriptions, so early pages can come back empty while hundreds of expired rows still follow. Keep following _pagination.next_page until it is null instead of stopping at the first empty page. Pass sort=expire_date (optionally with sortDirection) to get a deterministic order instead — see the parameter description for the caveat that OnlyFans persists the chosen order account-wide. Ordering by expiry descending puts the still-active subscriptions first and moves the expired rows to the tail of the collection, so prefer sortDirection=asc or sort=is_expired for expired-first results; for that reason sort=expire_date defaults to asc on this list when no sortDirection is given.
Authorization
default Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys
In: header
Path Parameters
The Account ID
Query Parameters
Number of followings to return (1-50). Must be at least 1. Must not be greater than 50.
Pagination offset. Must be at least 0.
Search within following name/username.
Filter by online status (1 for online, 0 for offline, null for all).
1 | 0Filter by paid status (1 for paid, 0 for free, null for all).
1 | 0Order 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.
"last_activity" | "expire_date" | "subscribe_date" | "is_expired"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.
"asc" | "desc"Response Body
application/json
curl -X GET "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/following/expired?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/expired?offset=10&limit=10"
},
"_meta": {
"_credits": {
"used": 1,
"balance": 999970,
"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": 49993
}
}
}