Your Revenue Data in Google Sheets — Automatically, Without Manual Pulls
Every manual data pull is compounding waste: 10 creators, 10 logins, 10 copy-paste sessions, and a spreadsheet that is already stale by the time it is done. Built to eliminate the hours lost every week to the same manual process. Now the OFAPI writes directly into your Google Sheets — revenue by creator, subscriber counts, payout history, top spenders — automatically, on your schedule. The same infrastructure used to track $50M+ in revenue across 60+ creators.
What Gets Synced
Revenue by creator
Daily and monthly earnings broken down by subs, tips, PPV, and referrals.
Subscriber counts
Total active, new, and expired subscribers per creator per day.
Payout history
Every payout transaction with amounts, dates, and status for reconciliation.
Top fan rankings
Top spenders by total value, updated on each sync cycle.
Setup Guide
Create a Service Account
Go to the Google Cloud Console, create a new project (or use an existing one), enable the Google Sheets API, and create a service account. Download the JSON key file. This gives your script programmatic access to write to spreadsheets.
pip install gspread google-auth requests
Share Your Spreadsheet
Open your target Google Sheet and share it with the service account email (found in the JSON key file, looks like your-bot@project.iam.gserviceaccount.com). Give it Editor access.
Deploy the Sync Script
This Python script fetches revenue data from the OFAPI and appends it to your Google Sheet. Run it on a cron job or trigger it from a webhook relay.
import os, requests, gspread from google.oauth2.service_account import Credentials # Config API_KEY = os.environ["OFAPI_KEY"] BASE_URL = "https://api.ofapi.dev/api/v1/onlyfans" SHEET_NAME = "OFAPI Revenue" # Auth — Google Sheets creds = Credentials.from_service_account_file( "service-account.json", scopes=["https://www.googleapis.com/auth/spreadsheets"] ) gc = gspread.authorize(creds) sheet = gc.open(SHEET_NAME).sheet1 # Fetch creators headers = {"X-API-Key": API_KEY} models = requests.get(f"{BASE_URL}/models", headers=headers).json() for model in models["models"]: # Fetch revenue for each creator stats = requests.get( f"{BASE_URL}/models/{model['id']}/statistics/overview", headers=headers ).json() # Append row: [date, creator, subs, tips, ppv, total] sheet.append_row([ stats["date"], model["username"], stats["subscriptions"], stats["tips"], stats["ppv"], stats["total_revenue"], ]) print(f"Synced {len(models['models'])} creators to Google Sheets")
Automate It
Run the script on a daily cron schedule for batch reporting, or set up a webhook relay that triggers the sync in real time whenever a revenue.received event fires. For no-code setups, you can also trigger this via Zapier or Make.
Wake up to updated spreadsheets. Stop starting every morning with manual pulls.
Agencies reconciling revenue by hand routinely miss $4K–$12K per creator per month in tracking gaps and attribution errors. The data is there — the OFAPI just needs a direct line into your Sheets. Set it up once in under 20 minutes.