OnlyFans API

Create Data Export

Create a new data export request. This will calculate the required credits and prepare the export for starting.

POST
/api/data-exports
AuthorizationBearer <token>

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

In: header

Request Body

application/json

type*string

The type of data to export

Value in"transactions" | "chat_messages" | "media_vault" | "trial_links" | "tracking_links" | "smart_links" | "payouts" | "chargebacks" | "public_profiles" | "fans" | "followings"
account_ids?array<string>

Array of account prefixed IDs to export data from. Not required for public_profiles type.

start_date*string

The start date for the export (ISO 8601 format).

end_date*string

The end date for the export (ISO 8601 format).

export_columns?array<string>

Array of column names to include in the export (optional, defaults to all columns for the export type)

file_type*string

The output file format. Supported formats vary by export type: csv or xlsx for transactions, chat_messages, trial_links, tracking_links, smart_links, payouts, chargebacks, public_profiles, fans, followings; zip for media_vault.

Value in"csv" | "xlsx" | "zip"
options?object

Type-specific export options. For chat_messages: maxMessages (required per account, max 10,000,000), maxChats (optional per-account chat scrape limit), skipMassMessages (optional, bool), chatIds (optional array of numeric fan/chat IDs; filters output and can drastically reduce totals). For media_vault: mediaType (required, one of: all, photo, gif, video, audio). For fans: type (required, one of: all, active, expired, latest). For followings: type (required, one of: all, active, expired). For public_profiles: query (optional, full-text search), gender (optional, filter: male, female, trans, couple), minSubscribePrice (optional, USD), maxSubscribePrice (optional, USD), location (optional), minPostsCount (optional, minimum posts), minPhotosCount (optional, minimum photos), minVideosCount (optional, minimum videos), minSubscribersCount (optional, minimum subscribers), minJoinDate (optional, ISO 8601 date), minLastSeenAt (optional, ISO 8601 date), createdAtFrom (optional, ISO 8601 date, profile added to DB after), createdAtTo (optional, ISO 8601 date, profile added to DB before), instagram (optional), twitter (optional), tiktok (optional), maxResults (optional, limit results).

auto_start?boolean

When true, automatically starts the export after creation.

Response Body

application/json

curl -X POST "https://app.onlyfansapi.com/api/data-exports" \  -H "Content-Type: application/json" \  -d '{    "type": "transactions",    "start_date": "2024-01-01T00:00:00Z",    "end_date": "2024-12-31T23:59:59Z",    "file_type": "csv"  }'
{
  "data": {
    "id": "data_export_abc123xyz789",
    "type": "chat_messages",
    "status": "calculating_credits",
    "start_date": "2024-01-01T00:00:00+00:00",
    "end_date": "2024-12-31T23:59:59+00:00",
    "file_type": "csv",
    "created_at": "2024-12-02T12:00:00+00:00",
    "requires_scraping": true,
    "credit_calculation_note": "This export type requires data scraping. Credits will be calculated and charged after scraping completes."
  },
  "_meta": {
    "_credits": {
      "used": 0,
      "balance": 9500,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 60,
      "limit_day": null,
      "remaining_minute": 56,
      "remaining_day": null,
      "notice": ""
    }
  }
}