Social Media API Explained: Four Kinds, and What the Twitter (X) Data Costs

By TwitterAPI.io Team•15 min read
Diagram of the four kinds of social media API: publishing layers (post and schedule to your own accounts, OAuth), unified multi-network APIs (one schema over many platform APIs, OAuth), listening and data APIs (read public posts, profiles and mentions, no account login), and official platform APIs (Graph API, YouTube Data, LinkedIn, X API, app review and keys). A band below prices the X (Twitter) data column per 1,000 posts read: official X API pay-per-use $5.00, twitterapi.io $0.15. Footer: 15 brand accounts measured, 392,740 post reads a month, $1,964 vs $65 a month.
The four layers people mean by "social media API", and the X data row where the prices split. Diagram; workload numbers from the study below, collected in 2026.

This page explains the social media API category as a whole: what the four kinds are, which job each one does, how they are priced, and where the X (Twitter) data column fits. It is not a ranking of X-only data providers; that comparison lives in our best third-party Twitter (X) API guide. Here the question comes one step earlier: do you need a social media API that publishes, one that reads, or one that wraps many networks, and what does the X part of that cost?

We are a Twitter/X data product, so we keep the other networks to one honest row each, with facts taken from their official developer docs, and go deep only on X. Vendors in the category (publishing and unified APIs such as ayrshare.com, zernio.com, outstand.so, bundle.social and blotato.com; data APIs such as data365.co, sociavault.com and socialapis.io) are named as plain domains and priced only where we read their pricing page ourselves.

Then the part the category roundups skip: we measured what an X data workload actually looks like for 15 well-known brand accounts (@Spotify, @netflix, @Xbox, @Wendys, @Nike and ten more). We counted how often each posts and how often it is mentioned, and priced a month of that data at the official X API rate card and at twitterapi.io.

01 — Section

What is a social media API?

An API (application programming interface) is a contract: send an HTTP request in a documented shape, get structured JSON back. A social media API applies that contract to a social network, so a program can do what a person does in the app (publish a post, read a timeline, look up a profile, search) or things the app does not offer at all (pull thousands of posts into a database, watch a keyword around the clock).

The phrase is used for four products that have very little in common beyond the word "social". Most confusion in this category, and most surprise invoices, come from mixing them up:

1. Official platform APIs. Run by the network itself: the X API (docs.x.com), Meta's Graph API for Facebook and Instagram, the YouTube Data API, LinkedIn's Marketing and Community Management APIs, TikTok's developer APIs. You register an app, pass whatever review the platform requires, and live within its quotas and price list.

2. Publishing layers. Services that post and schedule content to accounts you or your customers own. Each account holder connects their profile through OAuth, and the layer calls the official APIs on their behalf. Scheduling apps are built on this.

3. Unified multi-network APIs. A publishing or analytics layer that normalizes many official APIs behind one schema, so "create post" looks the same for X, LinkedIn and Instagram. In practice categories 2 and 3 overlap heavily; most unified APIs sell publishing first.

4. Listening and data APIs. Read-side services that return public posts, profiles, followers and mentions as JSON, usually without any account login, for analytics, research, brand monitoring and AI agents. twitterapi.io is one of these, for X only.

The first useful decision is therefore not "which vendor" but "which kind": are you writing to accounts you control, or reading what the public says? The table below compares the categories on the dimensions that decide architecture. Prices are left to the next sections because each kind bills on a different unit.

KindMain jobWho must authorizeBilling unit (typical)
Official platform APIEverything the platform allowsApp review + keys; user OAuth for writesPer platform: free quota, per-call or per-resource
Publishing layerPost and schedule to owned accountsEach account holder via OAuthPer connected profile or account
Unified multi-network APIOne schema over many networksEach account holder via OAuthPer account, plus platform pass-through
Listening / data APIRead public posts, profiles, mentionsNobody: no account loginPer record or per credit

When a publishing or unified layer is right. You manage brand accounts on several networks, you want one integration for posting, and you are fine paying per connected account. The value is maintenance: the layer absorbs each network's API changes.

When a data API is right. The job is reading at volume: brand mentions, competitor timelines, keyword streams, datasets for a model or an agent. You do not own the accounts you read, so OAuth-based layers cannot help, and the cost per thousand posts becomes the number that matters.

When the official API is right. You need a capability only the platform grants (for example X's own write and account-management surfaces under your app's identity, or Meta's ads and Page insights), or a compliance team requires a first-party contract.

02 — Section

Official platform APIs: one row per network

Each network publishes its own rules. We read the official pages for this summary; the X row gets the rest of this article.

NetworkOfficial APIQuota / price model (official docs)
X (Twitter)X APIPay-per-use: $0.005 per post read, $0.010 per user read, $0.015 per post created ($0.20 with a URL); capped at 3M post reads a month, Enterprise above
YouTubeYouTube Data API v3Default quota of 10,000 units a day; most list reads cost 1 unit
Facebook / InstagramMeta Graph APIApp-level limit: calls within one hour = 200 x number of users; Instagram Platform uses a 24-hour formula
LinkedInLinkedIn APIsDaily per-application and per-member limits, reset at midnight UTC; standard limits not published, shown in the Developer Portal
TikTokResearch APIOnly for qualifying academic and not-for-profit researchers, non-commercial use

Sources for each row: docs.x.com/x-api/getting-started/pricing, developers.google.com/youtube/v3/getting-started, developers.facebook.com/docs/graph-api/overview/rate-limiting, learn.microsoft.com/en-us/linkedin/shared/api-guide/concepts/rate-limits and developers.tiktok.com/products/research-api. We could not load Reddit's Data API terms page in this review, so Reddit is left out rather than described from memory.

Two things stand out. First, only X sells reads on a published per-resource price list; the others ration by quota and gate by review. Second, X's official read price is the one that scales linearly with the volume of public conversation, which is why the X column dominates the bill of any integration that listens rather than posts. X also deduplicates billed resources within a 24-hour UTC day, so re-reading the same post that day is not charged twice, per the same pricing page.

03 — Section

Publishing and unified APIs: what they charge, and what happens to X

Publishing and unified APIs price on connected accounts, not on data volume. We fetched three pricing pages for this article; the rest of the category we name without prices because we did not verify them.

Vendor (plain domain)KindPublished price model
ayrshare.comPublishing / unifiedPremium $149 a month (1 profile), Launch $299 (up to 10), Business $599 (30 profiles), Enterprise custom
zernio.comPublishing / unifiedPer connected account: first 2 free, $6 each for 3-10, $3 for 11-100, $1 above 100; X API usage billed separately at X's rates
data365.coData API (multi-network)Credits: Basic EUR 300 a month (1 network, 500,000 credits), Standard EUR 850 (3 networks); 1 credit per post, 7 per search, 9 per profile

The X pass-through. The detail that matters for X is on zernio.com's pricing page: X usage is passed through "with no markup" at $0.005 per read request, $0.010 per user read, $0.015 per post and $0.200 per post with a URL. In other words, a unified layer that sits on the official X API inherits the official X price list; the convenience is the single schema, not cheaper X data.

What publishing layers do not cover. They act on accounts that connected through OAuth. They are not built to read the public conversation about a brand, a competitor's timeline, or a keyword across all of X. That read side is a separate purchase, usually from a data API.

What data APIs do not cover. A read-only data API does not schedule your campaign calendar. On X specifically, twitterapi.io does offer write actions through an authenticated session (covered below), but a multi-network content calendar is a publishing-layer job.

04 — Section

The X data column: official X API vs twitterapi.io

For reading X data, the two rate cards that matter are the official X API pay-per-use list and a pay-per-tweet data API. Both prices, per the same units:

UnitOfficial X API (pay-per-use)twitterapi.io
1,000 posts read$5.00 ($0.005 each)$0.15 (15 credits per tweet)
1,000 user profiles$10.00 ($0.010 each)$0.18 (18 credits per profile)
A poll that finds nothingNot billed per resource$0.00015 minimum per request
Monthly ceiling3M post reads, then EnterpriseNo monthly read cap; rate limit by plan
Account neededX developer account + appNo X account needed

Per 1,000 posts that is $5.00 against $0.15, about 33x. On twitterapi.io, $1 buys 100,000 credits, purchased credits never expire, and new accounts that pass the automatic bot check get up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days). Rate limits are 0.2 requests per second before the first payment and 20 once paid (50 on Scale, 500 on Business). Monthly subscriptions (Starter $29, Builder $99, Pro $199, Scale $499, Business $1,499) are on the pricing page.

The minimum matters for monitoring: twitterapi.io bills at least 15 credits per request, so a check that returns nothing costs $0.00015. Polling every 5 minutes for a month is 8,640 checks, a floor of $1.30 if every one came back empty. The study below includes that floor in every twitterapi.io number.

05 — Section

How big is an X data workload? 15 brand accounts measured

Category articles quote per-call prices but never the volume, and the volume is the bill. So we measured it. For 15 organization accounts that a social media integration would plausibly track, we read each account's recent posts and its most recent mentions, turned both into rates, and priced 30 days of reading them.

Own posts are tiny. Across the 15 accounts the median is 6.3 posts a week (range 0.2 for @Starbucks to 118.6 for @netflix, counting original posts, reposts and quotes, not replies). Reading a brand's own timeline costs cents a month at either rate card.

Mentions are the workload. The median account was mentioned 326 times a day; @Spotify drew 3,904 a day in our window, @netflix 2,170 and @Xbox 1,816. Mentions make up 99.7% of all post reads in the model.

AccountOwn posts a weekMentions a dayX API a monthtwitterapi.io a month
@Spotify21.13,904$585.99$17.68
@netflix118.62,170$328.03$9.90
@Xbox46.41,816$273.36$8.29
@Wendys3.31,495$224.36$6.84
@Nike1.8680$102.07$3.29
@canva6.3585$87.93$2.91
@Airbnb0.5404$60.61$2.24
@Delta0.6326$48.86$1.99
@Shopify3.4293$44.01$1.89
@NotionHQ36.1287$43.85$1.88
@Starbucks0.2279$41.79$1.85
@figma12.1277$41.87$1.85
@duolingo9.5254$38.28$1.79
@Adobe0.8172$25.88$1.60
@SlackHQ13.1110$16.80$1.49
All 15273.813,052$1,963.69$65.49

Totals. All 15 together: 392,740 post reads a month. At the official X API pay-per-use rate ($0.005 per post read) that is $1,963.69 a month; on twitterapi.io it is $58.92 of tweets plus $6.58 of empty-poll minimums, $65.49 in all, about 30x less. Five of the 15 accounts would each cost more than $100 a month on the official card on their own.

Against the cap. 392,740 reads is 13.1% of the 3,000,000 post-read monthly cap on X's pay-per-use plans; at the same mix roughly 115 brand accounts would exhaust it, after which X points you to Enterprise. A data API has no such monthly ceiling, only a per-second rate limit tied to your plan.

Dot plot of the monthly X data bill for 15 brand accounts at two rate cards, log scale. Official X API pay-per-use in orange, twitterapi.io in blue. @Spotify (3,904 mentions a day) $586 vs $17.68; @netflix $328 vs $9.90; @Xbox $273 vs $8.29; @Wendys $224 vs $6.84; @Nike $102 vs $3.29; down to @SlackHQ (110 mentions a day) $17 vs $1.49. All 15 together: 392,740 post reads a month, $1,963.69 vs $65.49, about 30x.
Monthly cost to read each account's own posts and every mention, at $0.005 per post read (official X API pay-per-use) and $0.15 per 1,000 tweets plus empty-poll minimums (twitterapi.io). Collected in 2026.
06 — Section

Why mentions, not posts, set the price

The chart below splits each account's monthly reads into its own posts and the mentions it receives. The orange slivers (own posts) are barely visible: even @netflix, the most active poster at 118.6 posts a week, reads about 508 of its own posts a month against roughly 65,100 mentions.

This is the practical lesson for anyone choosing a social media API for X: a publishing layer meters accounts, but a listening integration meters the public. Its bill tracks how loud the conversation around an account is, which you do not control and which spikes during launches, outages and campaigns. Budget for the noisy account, not the median one; in our sample the loudest account produced about 35 times the mention volume of the quietest.

It also explains why the empty-poll minimum barely registers for busy accounts. A 5-minute mentions poll on @Spotify almost never comes back empty, so its floor is $0.10 a month; on @SlackHQ, the quietest account, about two-thirds of checks find nothing and the floor is $0.98. Combining several brands into one search query (shown in the next section) shares a single poll across all of them.

Stacked bar chart of monthly post reads per brand account, mentions in blue and own posts in orange. @Spotify 117,199, @netflix 65,607, @Xbox 54,672, @Wendys 44,871, @Nike 20,415, @canva 17,586, @Airbnb 12,121, then about 3,400 to 9,800 for the rest down to @SlackHQ at 3,361. Mentions are 99.7% of all reads; own posts median 6.3 a week, mentions median 326 a day.
Monthly post reads per account, split into mentions and the account's own posts. Mentions are 99.7% of the total. Collected in 2026.
07 — Section

Building the X column: read endpoints and a polling loop

On twitterapi.io every read is a GET with an X-API-Key header against https://api.twitterapi.io. The three endpoints behind a brand-tracking integration are the same ones we used for the study:

Mentions of one account. /twitter/user/mentions with userName, optional sinceTime / untilTime (Unix seconds) and cursor; 20 mentions per page in the top-level tweets array, with has_next_page and next_cursor.

The account's own posts. /twitter/user/last_tweets with userName (or userId), optional includeReplies; posts arrive in data.tweets, 20 per page, newest first.

Many brands in one poll. /twitter/tweet/advanced_search with query and queryType=Latest. Combine handles with OR and add since_time:<unix> so each poll only returns posts newer than the last one. One query for several brands means one minimum charge per poll instead of one per brand.

Each tweet carries id, text, createdAt, lang, likeCount, retweetCount, replyCount, quoteCount, viewCount, entities and an author object with userName, followers and isBlueVerified, which is enough for sentiment, reach-weighting and routing without a second lookup. If you prefer push to poll, a filter rule (/oapi/tweet_filter/add_rule with tag, value and interval_seconds) sends matches to a webhook you host.

The loop below polls three brands every 5 minutes, keeps a seen-id set, and overlaps the window by a minute so nothing is lost between polls.

python
import os, time, requests

BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": os.environ["TWITTERAPI_IO_KEY"]}
BRANDS = ["Nike", "Spotify", "Xbox"]
since = int(time.time()) - 300
seen = set()

while True:
    query = " OR ".join(f"@{b}" for b in BRANDS) + f" since_time:{since}"
    cursor, new = "", []
    while True:
        r = requests.get(f"{BASE}/twitter/tweet/advanced_search", headers=HEADERS,
                         params={"query": query, "queryType": "Latest", "cursor": cursor}, timeout=30)
        r.raise_for_status()
        body = r.json()
        new += [t for t in body.get("tweets", []) if t["id"] not in seen]
        if not body.get("has_next_page"):
            break
        cursor = body.get("next_cursor", "")
    for t in new:
        seen.add(t["id"])
        print(t["createdAt"], t["author"]["userName"], t["text"][:80])
    since = int(time.time()) - 60   # small overlap; the seen set removes repeats
    time.sleep(300)
08 — Section

If your social media API also has to post to X

Many integrations need a little of both sides: read the conversation, then reply or publish from a brand account. On twitterapi.io, writes are a separate product that runs through an authenticated session. One /twitter/user_login_v2 call ($0.10, with a proxy you supply) returns login_cookies; each post, delete, like, retweet, follow or unfollow after that (/twitter/create_tweet_v2, /twitter/follow_user_v2 and so on) is $0.002 per call, billed per HTTP 200 response.

What that means in practice. Every write acts as that X account, so X can rate-limit, lock or suspend it if the activity looks automated. Keep a human pace, expect that the session can need a fresh login, and treat writes as a small, deliberate share of your traffic. For comparison, the official X API lists $0.015 per post created and $0.20 for a post containing a URL.

When a publishing layer is the better fit. If posting is the main job and spans several networks, with approval flows and a content calendar, a publishing or unified API built on OAuth is designed for it. Pair it with a data API for the read side rather than paying the official per-read rate through a pass-through.

09 — Section

How we collected this

Question. How many X posts does an integration that tracks brand accounts actually read in a month, and what does that cost at the official X API pay-per-use rate card versus twitterapi.io?

Accounts. 15 organization accounts: @Nike, @Starbucks, @Spotify, @netflix, @Airbnb, @duolingo, @Wendys, @Delta, @Shopify, @NotionHQ, @canva, @Adobe, @SlackHQ, @figma and @Xbox.

Method and sample. For each account, 2 pages of /twitter/user/last_tweets (default timeline, replies excluded; 600 posts in total) and 3 pages of /twitter/user/mentions (900 mentions in total), 75 requests, collected in 2026 through our rate-limited study client. Rates are items divided by the time from the oldest item to collection; monthly figures use 30 days. The official cost assumes each post is read once (X deduplicates within a UTC day) and that empty requests are free. The twitterapi.io cost adds the $0.00015 minimum for empty checks, assuming a 5-minute mentions poll and an hourly own-post poll per account, with the empty share estimated from a Poisson model at the measured rate.

What the sample cannot show. Mention rates come from short, recent windows (22 minutes for @Spotify, 13 hours for @SlackHQ), so they are snapshots that move with time of day, campaigns and news, not monthly averages. Replies posted by the brands (customer support) are not counted, which understates own-post reads for accounts such as @Delta. The mentions endpoint returns what the API indexes, not an audit of every post on X.

Privacy. Aggregates only. The brand timelines are organization accounts; mention pages, which are written by private individuals, were analyzed in memory and not stored with the study. The study's protocol, analysis script and results file are kept with the page source.

python
import os, time, requests
from datetime import datetime, timezone

API_KEY = os.environ["TWITTERAPI_IO_KEY"]
BASE = "https://api.twitterapi.io"
HEADERS = {"X-API-Key": API_KEY}

X_POST_READ = 0.005        # official X API pay-per-use, USD per post read
OURS_PER_TWEET = 0.00015   # twitterapi.io, 15 credits per tweet returned


def mentions_since(user, since_unix, max_pages=5):
    """Mentions of @user posted after since_unix, newest first."""
    out, cursor = [], ""
    for _ in range(max_pages):
        r = requests.get(f"{BASE}/twitter/user/mentions",
                         headers=HEADERS,
                         params={"userName": user, "sinceTime": since_unix, "cursor": cursor},
                         timeout=30)
        r.raise_for_status()
        body = r.json()
        out.extend(body.get("tweets", []))
        if not body.get("has_next_page"):
            break
        cursor = body.get("next_cursor", "")
    return out


def own_posts(user, pages=2):
    """The account's own recent posts (20 per page, newest first)."""
    out, cursor = [], ""
    for _ in range(pages):
        r = requests.get(f"{BASE}/twitter/user/last_tweets",
                         headers=HEADERS,
                         params={"userName": user, "cursor": cursor},
                         timeout=30)
        r.raise_for_status()
        body = r.json()
        out.extend((body.get("data") or {}).get("tweets", []))
        if not body.get("has_next_page"):
            break
        cursor = body.get("next_cursor", "")
    return out


def per_day(tweets, now):
    """Items per day, measured from the oldest item returned to now."""
    if not tweets:
        return 0.0
    oldest = min(datetime.strptime(t["createdAt"], "%a %b %d %H:%M:%S %z %Y") for t in tweets)
    days = max((now - oldest).total_seconds() / 86400, 1 / 1440)
    return len(tweets) / days


def size_workload(user, window_hours=3):
    now = datetime.now(timezone.utc)
    m = mentions_since(user, int(time.time()) - window_hours * 3600)
    mentions_per_day = per_day(m, now)      # page cap reached? the span shrinks, the rate stays honest
    posts_per_day = per_day(own_posts(user), now)
    reads_month = (mentions_per_day + posts_per_day) * 30
    print(f"@{user}: ~{mentions_per_day:,.0f} mentions/day, {reads_month:,.0f} post reads/month")
    print(f"  official X API pay-per-use: ${reads_month * X_POST_READ:,.2f}/month")
    print(f"  twitterapi.io:              ${reads_month * OURS_PER_TWEET:,.2f}/month (+ empty-poll minimum)")
    for t in m[:3]:
        print("  sample mention:", t["createdAt"], t["likeCount"], "likes")


if __name__ == "__main__":
    size_workload("SlackHQ")
10 — Questions

Questions readers ask

What is a social media API?

A programmatic interface for publishing to or reading from a social network. The term covers official platform APIs (the X API, Meta Graph API, YouTube Data API, LinkedIn APIs), publishing layers that post to accounts you own, unified APIs that wrap many networks behind one schema, and data APIs that read public posts, profiles and mentions.

What is the difference between a unified social media API and a social media data API?

A unified API mostly acts on accounts that connected via OAuth: posting, scheduling, inbox and owned-account analytics across networks. A data API reads public content you do not own, such as mentions of a brand or a keyword across X, usually without any account login. Many teams need one of each.

Is there a free social media API?

Several official APIs have free quotas (YouTube's default is 10,000 units a day), but X's official API is pay-per-use at $0.005 per post read, with $20 of credits when you add a first card and buy credits. twitterapi.io gives new accounts that pass the automatic bot check up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days).

How much does it cost to monitor brand mentions on X through an API?

It depends on how often the brand is mentioned, because mentions are 99.7% of the reads in our study. For 15 brand accounts the total was 392,740 post reads a month: $1,963.69 on the official X API pay-per-use card versus $65.49 on twitterapi.io. A single quiet account (about 110 mentions a day) came to $16.80 versus $1.49.

Do unified social media APIs make X data cheaper?

Not in the case we checked: zernio.com states that X API usage is passed through at X's own rates with no markup ($0.005 per read request, $0.015 per post). A unified layer saves integration work, not X data cost.

Do I need an X developer account to read X data?

For the official X API, yes: you need a developer account and an app. With twitterapi.io you sign up, get an API key and send it in the X-API-Key header; no X account is needed for reads.

Can a social media API post to X?

Yes. The official X API lists $0.015 per post created ($0.20 with a URL), and publishing layers post through OAuth. twitterapi.io runs writes through an authenticated session: a $0.10 login, then $0.002 per action, acting as that account, so keep a human pace because X can rate-limit, lock or suspend it.

What is the monthly limit on the official X API?

The pay-per-use plans are capped at 3 million post reads per monthly billing cycle; above that X points to an Enterprise plan. Our 15 brand accounts used 13.1% of that cap.

11 — Further reading

Continue

Sources & further reading
More from this series
Build it

Stop reading. Start building.

Starter credits cover real testing on real data. Google sign-in, no card, no application queue.

Get an API key