# Pay-per-call or subscription: which social data API pricing is cheaper?

> When pay-per-call beats a monthly plan for Weibo, Xiaohongshu or TikTok data and when it does not, with a break-even formula and a script that prices your own usage.

Canonical page: https://okdata.online/answers/pay-per-call-vs-subscription-data-api/

**Short answer: **Pay-per-call is cheaper whenever your usage is irregular or below what a plan includes; a subscription wins only when you use most of its quota every month. On okdata there is no monthly fee, so a month with 600 Weibo searches costs $1.20 and a quiet month costs nothing. Divide a plan's monthly fee by the per-call price to find the call count where it starts to pay off.

Most teams buying social data have lumpy demand: a burst of pulls around a launch, a quarterly report, a research sprint, then weeks of almost nothing. A monthly plan charges for the quiet weeks too. That is the whole argument, and it cuts both ways.

## Pay-per-call wins when

- Usage swings from month to month. A launch month of 2,000 [Xiaohongshu searches](/apis/xiaohongshu/notes/search/) costs $40.00, and the next month can cost zero.
- You are still testing. Fifty [TikTok searches](/apis/tiktok/videos/search/) to see whether the data is useful cost $0.10.
- You need several platforms a little each, rather than one platform a lot.

Even X moved its developer API from monthly tiers to prepaid [pay-per-use credits](https://docs.x.com/x-api/getting-started/pricing) in 2026, which says something about how unevenly people use data.

## A subscription wins when

- You run the same large job every month, use most of the included volume, and the plan's effective price per unit is lower than the per-call rate.
- The plan includes things you would otherwise build: dashboards, alerts, sentiment scoring, seats for a team that does not code.

## Find your break-even

Break-even calls = monthly fee ÷ price per call. Below that number, pay-per-call is cheaper. Price your real month with the public price book, then confirm one live call's charge:

```python
import os, requests
from decimal import Decimal

book = requests.get("https://okdata.online/prices.json", timeout=30).json()
price = {e["id"]: Decimal(e["price"]) for e in book["endpoints"]}

my_month = {"weibo.posts.search": 600, "xiaohongshu.notes.search": 600}
print("pay per call:", sum(price[k] * n for k, n in my_month.items()), "USD")

H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
body = requests.get("https://api.okdata.online/v1/weibo/posts/search", headers=H,
                    params={"query": "新品发布"}, timeout=60).json()
print("one call charged:", body["meta"]["billing"]["amount"])
```

[Weibo post search](/apis/weibo/posts/search/) is $0.002 a call, so 600 a month is $1.20; hourly checks on 10 keywords (7,200 calls) come to $14.40.

## Hidden costs on each side

Subscriptions hide overage fees and quotas that reset unused. Pay-per-call hides runaway loops: a script that pages forever keeps paying. A prepaid balance caps that, because a call the balance cannot cover is refused with `insufficient_balance` and costs nothing. On okdata the balance does not expire, there are no seats or minimums, and failed calls are free. See the [pricing page](/pricing/) for every endpoint's price.

## Endpoints used

- [Weibo post search](https://okdata.online/apis/weibo/posts/search/) `weibo.posts.search`: $0.002 per call · about 10 posts per page
- [Xiaohongshu note search](https://okdata.online/apis/xiaohongshu/notes/search/) `xiaohongshu.notes.search`: $0.02 per call · about 20 notes per page
- [TikTok video search](https://okdata.online/apis/tiktok/videos/search/) `tiktok.videos.search`: $0.002 per call · about 30 videos per page

Updated 2026-11-12
