Answers
Why are some fields empty in my social data API results, and do I still pay?
Short answer
A field is empty when the platform does not show that number publicly, or when the data source cannot fetch it yet; on okdata every response names those fields and says which of the two reasons applies. The call itself succeeded, so it is billed normally, for example $0.002 for a Weibo search page. Make one test call and read that list before you build a report around a metric.
A report template has a column for shares, and half the rows are empty. Before blaming the data, check why. Users of scraper tools report missing data all the time, and the cause is usually one of two things, both of which okdata states in every response.
The two reasons
meta.unavailable maps each null field to a reason:
platform: the platform does not show this number publicly, to anyone. No API can return it. Weibo does not show shares or saves the way Douyin does, and TikTok posts have no title.capability: the platform shows it somewhere, but the data source behind this endpoint cannot fetch it yet. This can change. Read counts on WeChat articles are an example to check for.
Every platform's posts, accounts and comments share the same field names, so a missing number is null, never a missing key that breaks your parser.
curl -s -G "https://api.okdata.online/v1/weibo/posts/search" \
-H "Authorization: Bearer $OKDATA_API_KEY" \
--data-urlencode 'query=新品发布' | jq '.meta.unavailable'
# e.g. {"metrics.shares": "platform", "metrics.favorites": "platform", "title": "platform"}
Is it billed?
Yes. The call completed and returned the data the platform makes available. Prices are per call, not per field:
| Endpoint | Price |
|---|---|
| Weibo post search | $0.002 a page |
| TikTok video detail | $0.002 a video |
| Official Account article detail | $0.02 an article |
Errors are different. A post that does not exist is not_found and free; a failed source is upstream_failed and free.
Avoid paying for numbers you will not get
- Before a big job, make one call and read
meta.unavailable. If the metric your report depends on is listed, change the report or the platform, not the volume. - Read the endpoint page: it lists the fields each endpoint returns.
- Agents connected over MCP can call
describefor free to see the fields before calling. - Use
fields=to drop columns you do not need. It saves tokens when a model reads the output, though not money.
When another source is the answer
If a number is platform, only the account owner sees it, in the platform's own dashboard. For your own accounts, that is the place to look. For other accounts, pick metrics every platform shows publicly, such as likes and comment counts, and compare those. See content research for a cross-platform comparison built that way.
Updated