OnlyFans Content Analytics API
Track performance per post, find optimal posting windows, calculate content ROI, and A/B test pricing. Data-driven content strategy for agencies managing creators at scale.
Content ROI Increase
+40%
content ROI within 30 days of implementation
Insight Depth
Per-post ROI
revenue attribution down to individual content pieces
The problem: content strategy without data
Most creators and agencies make content decisions by intuition. They post what feels right, at times that seem reasonable, at prices that are round numbers. The OnlyFans dashboard provides basic view counts and like totals, but nothing that answers the questions that actually drive revenue: which content type generates the most revenue per dollar of production cost? What posting time maximizes engagement for this specific creator's audience? Is the $15 PPV outperforming or underperforming the $25 PPV?
Without per-post revenue attribution, agencies cannot calculate content ROI. A 3-minute video costs significantly more to produce than a photo set, but does it generate proportionally more revenue? Without the data, you are guessing. And across 10 to 20 creators, each with different audiences and content preferences, guessing at scale means leaving tens of thousands of dollars on the table every month.
Posting time is another blind spot. Subscriber audiences span multiple time zones, and engagement patterns vary significantly by creator. A posting schedule that works for one creator may perform poorly for another. Manual experimentation takes weeks and produces unreliable results because you cannot control for content quality, day of week, and seasonal effects simultaneously.
Other tools provide basic content calendars and scheduling, but they lack the analytics layer that connects content decisions to revenue outcomes. Posting at the right time matters far less if you are posting the wrong type of content at the wrong price point.
The solution: performance-driven content strategy
The OnlyFans API gives you granular performance data for every piece of content — views, likes, tips, comments, PPV purchases, and direct revenue generated. By pulling this data programmatically, you can build content performance reports that answer the questions manual tracking never could.
Start with content type analysis. Tag each post by type (photo set, short video, long video, behind-the-scenes, text-only) and calculate the average revenue per post in each category. Factor in estimated production cost to compute ROI by content type. Most agencies discover that one or two content categories dramatically outperform the others — and that they have been under-investing in those categories.
Next, analyze posting time performance. Cross-reference post timestamps with engagement rates and revenue. For each creator, build a heatmap of optimal posting windows — the hours and days when their audience is most active and most likely to purchase. Schedule future content for those peak windows.
Finally, use the data for price optimization. Compare PPV purchase rates at different price points to find the revenue-maximizing price for each content tier. A $20 PPV with a 15% purchase rate generates more revenue than a $30 PPV with an 8% purchase rate — but you only know that by measuring both.
API endpoints used
/content/performance Per-post performance data: views, likes, tips, comments, PPV purchases, revenue generated, and engagement rate. Supports date range filtering and content type filtering.
/media/stats Aggregated media performance: total views, average engagement rate, top-performing posts, and media type breakdown (photo vs. video vs. audio).
/statistics/overview High-level engagement and revenue statistics. Provides the macro context for interpreting per-post performance data — total revenue, subscriber count, and overall engagement rate.
Code example
A content performance report that calculates ROI by content type and identifies optimal posting windows.
import requests from collections import defaultdict from datetime import datetime API_BASE = "https://api.ofapi.dev/v1" HEADERS = {"Authorization": "Bearer your_api_key"} def content_performance_report(creator_id): # Pull per-post performance data content = requests.get( f"{API_BASE}/onlyfans/models/{creator_id}/content/performance", headers=HEADERS, params={"days": 30} ).json()["data"] # Analyze by content type by_type = defaultdict(lambda: { "count": 0, "revenue": 0, "views": 0, "engagement": 0 }) # Analyze by posting hour by_hour = defaultdict(lambda: { "count": 0, "avg_revenue": 0, "total_revenue": 0 }) for post in content: ctype = post["contentType"] by_type[ctype]["count"] += 1 by_type[ctype]["revenue"] += post["revenue"] by_type[ctype]["views"] += post["views"] by_type[ctype]["engagement"] += post["engagementRate"] hour = datetime.fromisoformat(post["postedAt"]).hour by_hour[hour]["count"] += 1 by_hour[hour]["total_revenue"] += post["revenue"] # Calculate averages report = {"content_types": {}, "best_hours": []} for ctype, data in by_type.items(): report["content_types"][ctype] = { "posts": data["count"], "total_revenue": round(data["revenue"], 2), "avg_revenue_per_post": round(data["revenue"] / data["count"], 2), "avg_engagement": round(data["engagement"] / data["count"], 3), } for hour, data in by_hour.items(): data["avg_revenue"] = data["total_revenue"] / data["count"] # Top 5 posting hours by average revenue best = sorted(by_hour.items(), key=lambda x: x[1]["avg_revenue"], reverse=True) report["best_hours"] = [ {"hour": h, "avg_revenue": round(d["avg_revenue"], 2)} for h, d in best[:5] ] return report # Run report report = content_performance_report("creator_001") for ctype, data in report["content_types"].items(): print(f"{ctype}: ${data['avg_revenue_per_post']}/post, {data['posts']} posts") print(f"Best posting hours: {report['best_hours']}")
Outcomes
+40% content ROI
Agencies report 40% higher content ROI within 30 days by shifting production toward high-performing categories.
Optimal posting windows
Per-creator posting heatmaps identify the exact hours when engagement and purchases peak.
Price optimization
A/B test PPV pricing with real conversion data to find the revenue-maximizing price for each content tier.
Per-post attribution
Revenue attributed to individual content pieces — know exactly which posts drive the most income.
Stop guessing what content works
Get API access and build the content analytics that turns posting into a data-driven operation.