Answers

How do I choose between social media data API vendors?

Short answer

Run the same two or three real jobs on each shortlisted vendor and compare cost per 1,000 usable items, field completeness, failure handling and how much code you had to write. Price lists alone mislead. On okdata, for reference, 1,000 Xiaohongshu notes cost $1.00 and 1,000 TikTok comments $0.04, failed calls are free and every response states its charge, which makes the scoring easy to check.

Choosing a vendor usually starts the way a youtube-transcript-api user put it: this provider, that provider, or something else? A ranking will not settle it. A test on your own work will.

Eight criteria worth scoring

  1. Coverage. Write down the jobs, not the platforms: "comments on 50 Xiaohongshu notes a week" tells you which endpoints you need.
  2. Cost per 1,000 usable items. Normalise per-call, per-result and credit pricing to one number, then discount duplicates and empty fields. See how to compare data API pricing units.
  3. Billing rules. Are failed calls, timeouts and empty results billed? Are retries safe? Do credits expire? Is there a minimum?
  4. Data quality. Are metrics present, are nulls explained, is there a timestamp on each read?
  5. Reliability. Is there a status page? What happens on a platform change, and are you charged during it?
  6. Integration. One schema across platforms, clear errors, and an MCP server if agents will use it.
  7. Compliance. Public data only? Any logged-in sessions involved? What does the vendor keep?
  8. Payment and support. Can you pay the way your finance team can, and does anyone answer email?

The one-afternoon bake-off

Pick two or three jobs you will really run, and run each on every vendor with the same inputs. Record cost, items, usable items, failures and time. For okdata the record is in the responses:

import os, requests
from decimal import Decimal

H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
spent, items, nulls = Decimal("0"), 0, set()
for kw in ["防晒霜 推荐", "露营 装备", "咖啡机"]:
    body = requests.get("https://api.okdata.online/v1/xiaohongshu/notes/search", headers=H,
                        params={"query": kw}, timeout=60).json()
    if body["code"] != "ok":
        print(kw, body["code"], "charged:", body["charged"]); continue
    spent += Decimal(body["meta"]["billing"]["amount"])
    items += len(body["data"]["items"])
    nulls |= set(body["meta"]["unavailable"])
print(f"{items} notes for {spent} USD; null fields: {sorted(nulls)}")

okdata against the same list, honestly

  • Coverage: 51 endpoints on 10 platforms, including Xiaohongshu note search, TikTok video comments and Official Account article history ($0.04 a page). No Kuaishou, Zhihu or Instagram.
  • Billing: per call from $0.001, failed calls free, 24-hour idempotent replays, balance that does not expire.
  • Status: every endpoint is marked beta, and there is no written SLA yet.
  • Data: public only; null fields listed in meta.unavailable; read time in meta.fetched_at.

If a vendor wins on a platform you depend on most, use it there; nothing stops you from mixing. Prices for every endpoint here are on the pricing page.

Updated