> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onlyfansapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Exports (/data-exports)

import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
import {
    ArrowLeftRightIcon,
    BanknoteArrowDownIcon, BanknoteXIcon,
    EyeIcon,
    HeartIcon,
    ImageIcon,
    Link2Icon,
    MessagesSquareIcon,
    TagsIcon,
    UserSearchIcon, UsersIcon, UserStarIcon
} from "lucide-react";

## Available data export types

<Cards className="grid grid-cols-3 gap-4 @container">
  <Card icon={<ArrowLeftRightIcon />} title="Transactions" />

  <Card icon={<MessagesSquareIcon />} title="Chat Messages" />

  <Card icon={<ImageIcon />} title="Media" />

  <Card icon={<TagsIcon />} title="Trial Links" />

  <Card icon={<UserSearchIcon />} title="Tracking Links" />

  <Card icon={<Link2Icon />} title="Smart Links" />

  <Card icon={<BanknoteArrowDownIcon />} title="Payouts" />

  <Card icon={<BanknoteXIcon />} title="Chargebacks" />

  <Card icon={<UsersIcon />} title="Public Profiles" />

  <Card icon={<UserStarIcon />} title="Followings" />

  <Card icon={<HeartIcon />} title="Fans" />

  <Card icon={<EyeIcon />} title="Profile Visitors" />
</Cards>

### Export type reference

The `type` column below is the value you pass to the [Create Data Export](/api-reference/data-exports/create-data-export) endpoint.

| Export type      | `type`             | File formats | Date range     | Requires a creator account |
| ---------------- | ------------------ | ------------ | -------------- | -------------------------- |
| Transactions     | `transactions`     | CSV, XLSX    | Required       | Yes                        |
| Chat Messages    | `chat_messages`    | CSV, XLSX    | Required       | No                         |
| Media            | `media_vault`      | ZIP          | Required       | Yes                        |
| Trial Links      | `trial_links`      | CSV, XLSX    | Required       | Yes                        |
| Tracking Links   | `tracking_links`   | CSV, XLSX    | Required       | Yes                        |
| Smart Links      | `smart_links`      | CSV, XLSX    | Optional       | Yes                        |
| Payouts          | `payouts`          | CSV, XLSX    | Required       | Yes                        |
| Chargebacks      | `chargebacks`      | CSV, XLSX    | Required       | Yes                        |
| Public Profiles  | `public_profiles`  | CSV, XLSX    | Not applicable | No                         |
| Fans             | `fans`             | CSV, XLSX    | Not applicable | Yes                        |
| Followings       | `followings`       | CSV, XLSX    | Not applicable | No                         |
| Profile Visitors | `profile_visitors` | CSV, XLSX    | Required       | Yes                        |

<Callout type="info" title="Public Profiles does not take accounts">
  Every export type except `public_profiles` requires at least one connected account in `account_ids`. Public Profiles is looked up by username instead, so it works without a connected account.
</Callout>

## Getting started

You can create and manage data exports in two ways:

* **Dashboard**: Visit the [Data Exports page](https://app.onlyfansapi.com/tools/data-export) on our Console for a no-code interface
* **API**: Use our [Data Exports API endpoints](#using-the-api) to programmatically create and manage exports

### Starting an export via Dashboard

To get started, click on the "Create Export" button, which will take you to the export creation page. You're then prompted customize your export:

<Steps>
  <Step>
    #### Data type

    As the first step, select the type of data you want to export. Please refer to [the list above](#available-data-export-types) for available export types.
  </Step>

  <Step>
    #### Export fields

    Select the fields you want to include in your export. For a full list of available fields, please refer to [the available export fields list](#available-export-fields).
  </Step>

  <Step>
    #### Accounts

    Choose which accounts you want to include in your export. You can select all connected accounts, or select specific accounts.
  </Step>

  <Step>
    #### Date range

    Select the data range that you wish to be included in your export.
  </Step>

  <Step>
    #### View the export cost

    For some Data Export types, it is not possible to calculate the cost upfront. If this is the case, it will be calculated once the export is completed. For other Data Export types, you will see the cost of the export here.
  </Step>

  <Step>
    #### Select the export file type

    Click on "Export Data", and choose either CSV or Excel (XSLX). This will start the export!
  </Step>

  <Callout title="That's it!" type="success">
    Your data export will now be processed by our servers in the background, and you will be able to download it once completed.
  </Callout>
</Steps>

## Using the API

Data exports can be created and managed either through our [Dashboard](https://app.onlyfansapi.com/tools/data-export) or programmatically using our API endpoints. The API provides full control over the export lifecycle, allowing you to automate data exports and integrate them into your workflows.

### Export workflow

The data export process follows a two-step workflow:

<Steps>
  <Step>
    #### Create Data Export

    Use the [Create Data Export](/api-reference/data-exports/create-data-export) endpoint to create a new export request. This endpoint will calculate the required credits based on your selected parameters (data type, fields, accounts, and date range) and prepare the export for processing.
  </Step>

  <Step>
    #### Start Data Export

    Once the export has been created and credit calculation is complete, use the [Start Data Export](/api-reference/data-exports/start-data-export) endpoint to begin processing. This will charge the calculated credits and start the actual export process.
  </Step>
</Steps>

### Monitoring exports

You can monitor the status and progress of your exports using the following endpoints:

* **[List Data Exports](/api-reference/data-exports/list-data-exports)** - Get a paginated list of all data exports for your team
* **[Get Data Export Status](/api-reference/data-exports/get-data-export-status)** - Check the current status, progress, and download URL for a specific export

Once an export is completed, you can download the file using the download URL provided in the export status response.

## Big data exports

Depending on the chosen date range and account size, your export might take several hours to complete if you're exporting a large amount of data. You can safely close the browser window, and return to the Data Exports page later to check the status of your export.

## Understanding export progress & row counts

When you create an export, we first scan OnlyFans to find every record that matches your selection, then write those records to the export file. The status endpoints — [Get Data Export Status](/api-reference/data-exports/get-data-export-status) and [List Data Exports](/api-reference/data-exports/list-data-exports) — and the dashboard surface a few fields that describe this progress:

| Field              | Dashboard label | What it means                                                                                                                                                                                                                                      |
| ------------------ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `total_rows`       | Total Rows      | The number of matching records **found** for your export during scanning. Your credit cost is based on this number. For most export types every found row is written to the file, so `total_rows` equals the number of rows in the delivered file. |
| `rows_processed`   | —               | The number of rows actually **written to the export file** — i.e. the delivered count.                                                                                                                                                             |
| `failed_downloads` | —               | **Media exports only.** The number of media files that could not be downloaded (`failed_downloads = total_rows − rows_processed`). It is `0` for every other export type.                                                                          |

<Callout type="info" title="Why a media export can show more “rows” than files delivered">
  For media exports, each "row" is an individual file that has to be downloaded from OnlyFans and added to the ZIP. Unlike CSV or Excel exports — where every found row is always written to the file — a media file download can occasionally fail at the moment it runs (for example, a temporary access error).

  We automatically retry failed downloads, but a few may still not succeed within a single export run. This means a **completed** media export can legitimately contain fewer files than its **Total Rows**. The dashboard reflects this by showing, for example, **"48 of 50 media downloaded"** and, when any files failed, a **"Completed with N failed"** status instead of a plain success — so the numbers always reconcile:

  `total_rows` (found) = `rows_processed` (delivered) + `failed_downloads`

  If some files failed, simply re-run the export to attempt the remaining files again. These failures are usually transient and succeed on a later run.
</Callout>

<Callout type="info" title="Other export types always match">
  This rows-vs-delivered distinction only applies to **media** exports. For transactions, chat messages, payouts, and every other export type, each found row is always written to the file — so `total_rows` and `rows_processed` are always equal.
</Callout>

<Callout type="warn" title="DRM-protected videos aren't included in exports">
  Media Vault exports don't include **videos** that have **DRM enabled** in OnlyFans. These files are encrypted, so the export counts them as `failed_downloads` rather than writing them to the export file. Photos and other non-DRM media are unaffected.

  You can still retrieve a DRM-protected video individually with the [Download DRM-protected Media](/api-reference/media/download-drm-protected-media) endpoint, which resolves the Widevine license and returns a decrypted MP4. Bulk export of DRM videos is not supported.
</Callout>

## Profile Visitors granularity

A Profile Visitors export contains **one row per account, per day** in your selected date range — not one aggregated row for the whole range.

OnlyFans buckets its profile statistics chart into coarser periods as the requested range widens, so a single request for a long range loses day-level detail. We therefore request each day individually and store it, which keeps the daily numbers intact regardless of how long a range you export.

This also means the row count — and therefore the cost — scales with the number of days multiplied by the number of accounts. A 90-day export across 3 accounts produces 270 rows.

<Callout type="info" title="Not every account has profile statistics">
  OnlyFans only exposes profile visitor statistics to accounts that are eligible for them. If statistics are unavailable for an account, it simply contributes no rows to the export.
</Callout>

## Available export fields

Field names below map to the `export_columns` values accepted by the [Create Data Export](/api-reference/data-exports/create-data-export) endpoint. Omit `export_columns` to receive every field for the chosen type.

<Accordions type="single">
  <Accordion title="Transactions" id="fields-transactions">
    | Field            | `export_columns` value |
    | ---------------- | ---------------------- |
    | Account ID       | `account_id`           |
    | Account Name     | `account_name`         |
    | Account Username | `account_username`     |
    | Transaction ID   | `transaction_id`       |
    | Type             | `type`                 |
    | Fan ID           | `fan_id`               |
    | Fan Username     | `fan_username`         |
    | Fan Name         | `fan_name`             |
    | Amount           | `amount`               |
    | VAT Amount       | `vat_amount`           |
    | Tax Amount       | `tax_amount`           |
    | Net Amount       | `net_amount`           |
    | Fee Amount       | `fee_amount`           |
    | Currency         | `currency`             |
    | Description      | `description`          |
    | Status           | `status`               |
    | Created At       | `created_at`           |
  </Accordion>

  <Accordion title="Chat Messages" id="fields-chat-messages">
    | Field                        | `export_columns` value |
    | ---------------------------- | ---------------------- |
    | Account ID                   | `account_id`           |
    | Account Name                 | `account_name`         |
    | Account Username             | `account_username`     |
    | Sent By (`creator` or `fan`) | `sent_by`              |
    | Fan ID                       | `fan_id`               |
    | Fan Username                 | `fan_username`         |
    | Fan Name                     | `fan_name`             |
    | Chat ID                      | `chat_id`              |
    | Message ID                   | `message_id`           |
    | Message Text                 | `message_text`         |
    | Price                        | `price`                |
    | Tip Amount                   | `tip_amount`           |
    | Is Free                      | `is_free`              |
    | Is Tip                       | `is_tip`               |
    | Is Opened                    | `is_opened`            |
    | Media Count                  | `media_count`          |
    | OnlyFans Created At          | `onlyfans_created_at`  |
  </Accordion>

  <Accordion title="Media" id="fields-media">
    Media exports have no selectable fields. The export is delivered as a ZIP of every media vault file (photo, video, audio) in the selected date range.
  </Accordion>

  <Accordion title="Trial Links" id="fields-trial-links">
    | Field                  | `export_columns` value   |
    | ---------------------- | ------------------------ |
    | Account ID             | `account_id`             |
    | Account Name           | `account_name`           |
    | Account Username       | `account_username`       |
    | OnlyFans ID            | `onlyfans_id`            |
    | Name                   | `name`                   |
    | URL                    | `url`                    |
    | Spenders Count         | `spenders_count`         |
    | Claim Counts           | `claim_counts`           |
    | Clicks Counts          | `clicks_counts`          |
    | Subscribe Counts       | `subscribe_counts`       |
    | Subscribe Days         | `subscribe_days`         |
    | Is Finished            | `is_finished`            |
    | Revenue                | `revenue`                |
    | Revenue Per Subscriber | `revenue_per_subscriber` |
    | Tags (comma separated) | `tags`                   |
    | OnlyFans Created At    | `onlyfans_created_at`    |
    | OnlyFans Expired At    | `onlyfans_expired_at`    |
  </Accordion>

  <Accordion title="Tracking Links" id="fields-tracking-links">
    | Field                  | `export_columns` value   |
    | ---------------------- | ------------------------ |
    | Account ID             | `account_id`             |
    | Account Name           | `account_name`           |
    | Account Username       | `account_username`       |
    | OnlyFans ID            | `onlyfans_id`            |
    | Campaign Code          | `campaign_code`          |
    | Campaign Name          | `campaign_name`          |
    | OnlyFans URL           | `onlyfans_url`           |
    | Spenders Count         | `spenders_count`         |
    | Count Subscribers      | `count_subscribers`      |
    | Count Transitions      | `count_transitions`      |
    | Revenue                | `revenue`                |
    | Revenue Per Subscriber | `revenue_per_subscriber` |
    | Revenue Per Click      | `revenue_per_click`      |
    | Tags (comma separated) | `tags`                   |
    | OnlyFans Created At    | `onlyfans_created_at`    |
    | OnlyFans End Date      | `onlyfans_end_date`      |
  </Accordion>

  <Accordion title="Smart Links" id="fields-smart-links">
    | Field                        | `export_columns` value         |
    | ---------------------------- | ------------------------------ |
    | Created At                   | `created_at`                   |
    | Link Name                    | `link_name`                    |
    | Link URL                     | `link_url`                     |
    | Account ID                   | `account_id`                   |
    | Account Name                 | `account_name`                 |
    | Account OnlyFans Username    | `account_onlyfans_username`    |
    | Offer Type                   | `offer_type`                   |
    | Tracking Pixels              | `pixel_labels`                 |
    | Gross Clicks                 | `gross_clicks`                 |
    | Unique Clicks                | `unique_clicks`                |
    | Subscribers                  | `subscribers`                  |
    | Spenders                     | `spenders`                     |
    | Fans With 3+ Messages        | `fans_with_3plus_messages`     |
    | Click to Sub Conversion Rate | `click_to_sub_conversion_rate` |
    | Revenue                      | `revenue`                      |
    | Revenue Per Click            | `revenue_per_click`            |
    | Cost                         | `cost`                         |
    | Cost Input Mode              | `cost_input_mode`              |
    | Cost Input Value             | `cost_input_value`             |
    | Profit                       | `profit`                       |
    | ROI                          | `roi`                          |
    | ARPS                         | `arps`                         |
  </Accordion>

  <Accordion title="Payouts" id="fields-payouts">
    | Field               | `export_columns` value |
    | ------------------- | ---------------------- |
    | Account ID          | `account_id`           |
    | Account Name        | `account_name`         |
    | Account Username    | `account_username`     |
    | OnlyFans ID         | `onlyfans_id`          |
    | Amount              | `amount`               |
    | Currency            | `currency`             |
    | State               | `state`                |
    | Reject Reason       | `reject_reason`        |
    | OnlyFans Created At | `onlyfans_created_at`  |
  </Accordion>

  <Accordion title="Chargebacks" id="fields-chargebacks">
    | Field               | `export_columns` value |
    | ------------------- | ---------------------- |
    | Account ID          | `account_id`           |
    | Account Name        | `account_name`         |
    | Account Username    | `account_username`     |
    | OnlyFans ID         | `onlyfans_id`          |
    | Payment Type        | `payment_type`         |
    | Fan ID              | `fan_id`               |
    | Fan Username        | `fan_username`         |
    | Fan Name            | `fan_name`             |
    | Amount              | `amount`               |
    | VAT Amount          | `vat_amount`           |
    | Tax Amount          | `tax_amount`           |
    | Media Tax Amount    | `media_tax_amount`     |
    | Net Amount          | `net_amount`           |
    | Fee Amount          | `fee_amount`           |
    | Currency            | `currency`             |
    | Description         | `description`          |
    | Status              | `status`               |
    | Payment Created At  | `payment_created_at`   |
    | OnlyFans Created At | `onlyfans_created_at`  |
  </Accordion>

  <Accordion title="Public Profiles" id="fields-public-profiles">
    | Field               | `export_columns` value |
    | ------------------- | ---------------------- |
    | OnlyFans ID         | `onlyfans_id`          |
    | Username            | `username`             |
    | Name                | `name`                 |
    | About               | `about`                |
    | Location            | `location`             |
    | Website             | `website`              |
    | Subscribe Price     | `subscribe_price`      |
    | Min Subscribe Price | `min_subscribe_price`  |
    | Posts Count         | `posts_count`          |
    | Photos Count        | `photos_count`         |
    | Videos Count        | `videos_count`         |
    | Audios Count        | `audios_count`         |
    | Favorites Count     | `favorites_count`      |
    | Favorited Count     | `favorited_count`      |
    | Subscribers Count   | `subscribers_count`    |
    | Is Verified         | `is_verified`          |
    | Is Performer        | `is_performer`         |
    | Is Real Performer   | `is_real_performer`    |
    | Avatar URL          | `avatar_url`           |
    | Header URL          | `header_url`           |
    | Instagram           | `instagram`            |
    | Twitter             | `twitter`              |
    | TikTok              | `tiktok`               |
    | Facebook            | `facebook`             |
    | Gender              | `gender`               |
    | Gender Confidence   | `gender_confidence`    |
    | Join Date           | `join_date`            |
    | Last Seen At        | `last_seen_at`         |
  </Accordion>

  <Accordion title="Fans" id="fields-fans">
    | Field              | `export_columns` value |
    | ------------------ | ---------------------- |
    | Account ID         | `account_id`           |
    | Account Name       | `account_name`         |
    | Account Username   | `account_username`     |
    | OnlyFans ID        | `onlyfans_id`          |
    | Username           | `username`             |
    | Name               | `name`                 |
    | Display Name       | `display_name`         |
    | Avatar             | `avatar`               |
    | Location           | `location`             |
    | Is Performer       | `is_performer`         |
    | Is Verified        | `is_verified`          |
    | Can Add Subscriber | `can_add_subscriber`   |
    | Can Chat           | `can_chat`             |
    | Subscribe Price    | `subscribe_price`      |
    | Total Summ         | `total_summ`           |
    | Messages Summ      | `messages_summ`        |
    | Subscribes Summ    | `subscribes_summ`      |
    | Posts Summ         | `posts_summ`           |
    | Tips Summ          | `tips_summ`            |
    | Streams Summ       | `streams_summ`         |
    | Rebill On          | `rebill_on`            |
    | Subscribe At       | `subscribe_at`         |
    | Expired At         | `expired_at`           |
    | Renewed At         | `renewed_at`           |
  </Accordion>

  <Accordion title="Followings" id="fields-followings">
    | Field                         | `export_columns` value          |
    | ----------------------------- | ------------------------------- |
    | Account ID                    | `account_id`                    |
    | Account Name                  | `account_name`                  |
    | Account Username              | `account_username`              |
    | OnlyFans ID                   | `onlyfans_id`                   |
    | Username                      | `username`                      |
    | Name                          | `name`                          |
    | Avatar                        | `avatar`                        |
    | Is Performer                  | `is_performer`                  |
    | Is Verified                   | `is_verified`                   |
    | Is Real Performer             | `is_real_performer`             |
    | Subscribe Price               | `subscribe_price`               |
    | Subscription Price            | `subscription_price`            |
    | Subscription Autoprolong      | `subscription_autoprolong`      |
    | Subscription Is Muted         | `subscription_is_muted`         |
    | Show Posts In Feed            | `show_posts_in_feed`            |
    | Has Active Paid Subscriptions | `has_active_paid_subscriptions` |
    | Subscription Status           | `subscription_status`           |
    | Subscribe At                  | `subscribe_at`                  |
    | Expired At                    | `expired_at`                    |
    | Renewed At                    | `renewed_at`                    |
    | Last Seen At                  | `last_seen_at`                  |
    | Regular Price                 | `regular_price`                 |
    | Discount Percent              | `discount_percent`              |
    | Duration                      | `duration`                      |
    | Can Receive Chat Message      | `can_receive_chat_message`      |
    | Is Blocked                    | `is_blocked`                    |
    | Can Unsubscribe               | `can_unsubscribe`               |
    | Tips Enabled                  | `tips_enabled`                  |
  </Accordion>

  <Accordion title="Profile Visitors" id="fields-profile-visitors">
    | Field               | `export_columns` value |
    | ------------------- | ---------------------- |
    | Account ID          | `account_id`           |
    | Account Name        | `account_name`         |
    | Account Username    | `account_username`     |
    | Date                | `date`                 |
    | Total Visitors      | `total_visitors`       |
    | Guest Visitors      | `guest_visitors`       |
    | User Visitors       | `user_visitors`        |
    | Subscriber Visitors | `subscriber_visitors`  |
    | Avg View Duration   | `avg_view_duration`    |
  </Accordion>
</Accordions>

## Pricing

The following pricing applies to our data exports:

| Export type      | Cost                    |
| ---------------- | ----------------------- |
| Transactions     | 1 credit per 20 results |
| Chat Messages    | 1 credit per 20 results |
| Media            | 1 credit per 20 results |
| Trial Links      | 1 credit per 20 results |
| Tracking Links   | 1 credit per 20 results |
| Smart Links      | Free                    |
| Payouts          | 1 credit per 20 results |
| Chargebacks      | 1 credit per 20 results |
| Public Profiles  | 3 credits per profile   |
| Fans             | 1 credit per 20 results |
| Followings       | 1 credit per 20 results |
| Profile Visitors | 1 credit per 20 results |

<Callout type="info" title="What counts as a “result” for Profile Visitors">
  One result is one account-day. A 90-day export across 3 accounts is 270 results, so 14 credits.
</Callout>