Skip to content

MENTIONS

Twitter Mentions API: Monitor Any Account at $0.04/1K

What is the Twitter (X) Mentions API?

The Twitter Mentions API is a REST endpoint that returns public posts addressed to any account (replies and posts that open with the handle) as paginated JSON at $0.0008 per call ($0.04 per 1,000 results). Poll it on a schedule, keeping the newest tweet ID you have processed, for near-real-time brand monitoring, support triage, and AI-agent inboxes, on one Bearer key, with no developer account and one flat ceiling of 600 requests per minute and 20 concurrent per key.

What is the Twitter Mentions API?

Endpoint: GET /twitter/user/mentions. Pass any public username and receive an array of tweets that mentioned that account, sorted newest first. Each tweet includes the full text, author, timestamp, conversation ID, and public metrics. The response carries a next_cursor and has_more for cursor pagination. Because results come newest first, storing the highest tweet ID you have processed makes every later poll incremental on your side. Cost: $0.0008 per call, or about $0.04 per 1,000 mentions pulled. No X developer account required.

Use cases for mentions monitoring

Mentions are the inbound firehose for any public account. The same endpoint and the same Bearer key power every pattern below, billed flat at $0.0008 per call regardless of how many mentions the response contains.

Use caseWhat to pullWhy it matters
Brand monitoringCatch every public tweet that tags your handleReact before negative sentiment spreads
Customer support triageRoute inbound @mentions to your helpdesk queueFaster SLA, no manual tab-watching
Influencer trackingLog mentions of a partner or competitor handleAttribution and earned-media measurement
Event listeningCapture mentions of a campaign hashtag account in real timeLive leaderboard or UGC aggregation
AI agent inboxFeed mentions into an LLM classification pipelineAuto-tag intent, sentiment, and escalation priority

For tweet-level search by keyword or hashtag rather than account handle, use the Twitter search API. Mentions and search share the same key and the same flat billing. The query syntax that narrows a keyword pull, from:, to:, min_faves:, since: and the rest, is documented in the Twitter advanced search operators guide.

Pull new mentions with a polling loop

The mentions endpoint lives at GET /twitter/user/mentions and returns tweets newest first. On the first call, take the most recent page and store the highest tweet ID you see. On every later call, keep only tweets with a higher ID and drop the rest, so each poll stays incremental. Tweet IDs grow with time, so an integer comparison is enough; if the whole page is new, follow next_cursor until you reach an ID you have already processed.

First pull + ongoing polling loop

# Every poll: the latest mentions of @yourhandle, newest first
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.twitterapis.com/twitter/user/mentions?username=yourhandle&count=50"

# Keep only tweets whose id is above the highest id you stored last time.

Each call costs $0.0008. A 60-second polling loop runs about 1,440 calls per day, which is $1.15 per day or about $34.56 per month. Stretching the interval to 5 minutes drops monthly cost to $6.91 with no code changes beyond the sleep duration. Read the mentions endpoint docs.

Polling interval vs cost: pick your cadence

Every poll is one call at $0.0008, regardless of how many mentions the response contains. The only cost lever is how often you poll. Match your interval to the freshness your use case actually requires.

Poll intervalCalls / dayCalls / monthCost / monthBest for
Every 60 s1,440~43,200~$34.56Near-real-time support queues, high-volume brand accounts
Every 5 min288~8,640~$6.91Moderate brand monitoring, competitor tracking
Every 15 min96~2,880~$2.30Low-volume accounts, research ingestion pipelines
Every 1 hour24~720~$0.58Periodic audits, daily digest aggregators

Monitoring multiple accounts multiplies costs by the number of handles. See the full breakdown on the Twitter API pricing page.

TwitterAPIs mentions vs the official X API and manual watching

OptionPriceAuthLimitsNear-real-time
TwitterAPIs$0.04 / 1,000 mentionsBearer token, 30 s signup600 req/min per keyPoll every 60 s
Official X API user/mentionsGated, paid enterprise tierX developer account, app approvalHard request caps on every tierStreaming only on enterprise
Manual browser monitoring$0 plus your timeNoneManual, misses fast threadsNot real time

See it in action: one account, one poll cycle

The loop is small enough to read in full. Each call returns the current page of mentions, newest first. You record the highest tweet ID you processed. On the next call you keep only what sits above it, so a quiet minute costs $0.0008 and adds nothing to your queue, rather than handing your pipeline the same twenty tweets again.

Cold start, then the next poll
# 1. Cold start: the current page, newest first.
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.twitterapis.com/twitter/user/mentions?username=jack"

# -> { "tweets": [ ... ], "count": 20,
#      "next_cursor": "...", "has_more": true }
# Record the highest id you saw, say 1799342211110000000.

# 2. A minute later, the same call.
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.twitterapis.com/twitter/user/mentions?username=jack"

# -> 20 tweets again; 2 have an id above 1799342211110000000.
# Keep those 2, drop the other 18. One call, $0.0008, quiet or busy.

What that costs over a month is arithmetic rather than a plan. One call a minute is 43,200 calls, about $34.56. One call every five minutes is 8,640 calls, about $6.91. Nothing about those numbers changes with how many mentions come back, which is the part a per-result pricing model gets wrong for a monitoring workload: a viral day and a dead day cost the same to watch.

Two failure modes worth designing for on the first pass. If your poller crashes and restarts without the stored anchor, it cold-starts and re-delivers a page you have already processed, so persist the anchor outside the process. And if a burst exceeds one page, has_more comes back true: keep paging with next_cursor until you reach an ID at or below the stored one before you advance the anchor, or you will skip the older half of the burst.

Monitor any Twitter search query, not just @mentions

The mentions endpoint answers one question: who tagged this handle. That is a narrower question than most brand monitoring actually needs, because the posts that matter often do not tag anyone. Someone complaining about your product by name, a competitor comparison thread, a misspelling of your brand, a link to your domain with no handle attached: none of those appear in a mentions response.

For those, poll GET /twitter/tweet/advanced_search on the same schedule and with the same key. It takes an X search query, so operators you already know work: quoted phrases, OR, exclusions, from: and url:. One call, same $0.0008, same 600 requests per minute ceiling.

Brand terms without the @
# Untagged brand mentions, misspellings, and link drops,
# minus your own account's posts.
QUERY='("acme corp" OR "acmecorp" OR url:acme.com) -from:acmecorp'

curl -H "Authorization: Bearer YOUR_API_KEY" \
  --get "https://api.twitterapis.com/twitter/tweet/advanced_search" \
  --data-urlencode "query=$QUERY"

# Same envelope as mentions: tweets, count, next_cursor, has_more.
# Dedupe against your mentions loop on tweet id, since a post that
# both tags you and names you will arrive on both.

One honest limit. Our webhook monitors watch a handle, optionally narrowed by a domain filter or by turning replies off, so keyword and hashtag tracking is a polling loop rather than a push subscription today. That is a real difference in operational shape, not just in wiring: a poll has a floor on how fresh it can be, and at one call a minute that floor is a minute. If your use case is a support inbox, that is fine. If it is a live incident feed, poll faster and price it, or use the handle monitor for the part that can be pushed.

Brand mentions: what counts as one

X's own Notifications tab shows the mentions of the account you are signed in as, and only that account. The mentions endpoint has no such limit: it reads the mentions of any public handle, which is what makes it useful for a client, a competitor or a founder's personal account as well as your own brand.

The endpoint returns what X files as directed at that account, replies included. To be sure you also catch posts that tag the handle in passing, add the handle itself, such as @acmecorp, to the search loop above. A brand mention in the wider sense has three more shapes: the name written without the @, the name misspelled, and a link to your domain with no name at all, and all three come from that same search loop. Treat everything as one feed by deduping on tweet ID, and tag each record with the loop that found it, so a report can say how much of the conversation never tagged you at all.

Common search operators for mention tracking

The search loop takes the same operator syntax as X's advanced search, and a handful of operators do nearly all the work in a mention feed.

  • "acme corp" and OR to cover the brand name, the product names and the common misspellings in one query.
  • -from:acmecorp to drop your own posts, so the feed is the market talking rather than your marketing.
  • url:acme.com to catch links to your site from people who never typed your name.
  • -filter:retweets so one travelling post counts once rather than hundreds of times.
  • lang:en, since: and until: to bound a backfill to one language and one window.

Read a hundred results of any new query by hand before you schedule it. A brand name that is also an everyday word will match strangers all day, and the fix is more exclusions, not a smaller sample.

Competitor keywords and launch tracking

The same two loops point at a competitor with no change but the input. Poll the mentions endpoint for their handle to see who talks to them, and run a search for their brand and product names with their own account excluded to see what the market says about them. Add one query for their name next to complaint words such as slow, outage, pricing or switching. That query is the one sales teams ask for, because it surfaces customers who are unhappy right now.

Launches deserve a temporary feed of their own. When a competitor ships, add a query for the product name and the launch post's link, poll it every five minutes for the first week, then retire it. At 288 calls a day that is about $1.61 for the week, and it gives you the full reaction curve: the first wave of replies, the comparisons people draw, and whether the noise fades or keeps growing.

Set up your feeds by handle and account

Keep the feed list as data rather than code: one row per feed, with the kind (handle or search query), the value, the cadence, and a label for where its results go. A support desk might run its own handle every minute, the founder's handle every five minutes, a brand search every fifteen, and two competitor handles hourly. Adding a feed is then a new row, not a deploy.

Give every feed its own stored anchor, the highest tweet ID it has processed, and share one dedupe store across all of them keyed on tweet ID. The shared store is what stops a post that tags you and names you from arriving twice, once from each loop. With everything in one table, the monthly cost is a sum you can read off the rows: calls per day for each cadence, times thirty, times $0.0008.

Send results to your stack

A mention is only useful where someone will act on it. The response is plain JSON, so the delivery step is a few lines in whatever runs the loop: post a message to a Slack channel, open a ticket in your helpdesk, upsert a row in the CRM keyed on the author's numeric ID, or push the record onto a queue for a classifier. Route by the feed label from your feed table, so support mentions and competitor chatter never land in the same channel.

Send the fields a person needs to act without opening X: the text, the author handle and follower count, the post URL, and the feed that found it. Keep the raw JSON as well, in cheap storage, because the question you will be asked next month is almost always one the summary did not keep the field for.

Reply to a mention from the same key

Answering a mention does not need a second integration. POST /twitter/tweet/create with the reply text and the mention's ID in reply_to posts the answer as the account behind your registered X session, on the same key that runs the loop. It bills $0.0016, and registering the session is a free, one-time call. For replies a person should approve first, save a draft instead with POST /twitter/draft/create: it lands in the account's own composer and is never published by the API. That split, the loop finds and drafts, a person reviews and posts, is the shape that keeps an account's replies sounding like a person rather than a bot.

Push new posts from a handle with a signed webhook

For one event, new posts by a handle you care about, you can stop polling. Register an HTTPS endpoint with POST /twitter/webhook, then start a watch with POST /twitter/monitor. Both calls are free. Each new post is delivered to your endpoint signed with HMAC-SHA256, and the signing secret is returned once, when the webhook is created, so store it then.

Delivery lag and redrive

Two bounds, stated plainly. Our side checks watched handles on a 60-second interval, so a post typically reaches you within a minute of being seen, and GET /twitter/monitor/deliveries reports the measured lag on every delivery. And a failed delivery gets 8 attempts over 21 minutes before it is dead-lettered; if your endpoint was down longer than that, POST /twitter/webhook/{id}/redrive sends the missed events again. Mentions of you are still the polling loop on this page, because the monitor watches what a handle posts, not what others say to it.

Quick integration: from key to first mention in five minutes

There is no developer account to apply for, no OAuth screen, and no app review. Four steps, and the only thing you need before you start is an email address.

  1. Get a key. Sign up and the account opens with $0.50 in credits, roughly 625 calls, no card. That is enough to run a one-minute poll for about ten hours before you have decided anything.
  2. Make one request by hand. Call the mentions endpoint with a handle you know is busy and read the JSON. Confirm the fields you need are there before you write a line of integration code.
  3. Store the anchor. Keep the highest tweet ID in whatever your service already persists, a row, a key in Redis, a file. This is the only state the loop has.
  4. Schedule it. A cron entry, a queue worker, or a serverless timer. Nothing about the endpoint requires a long-lived connection, so it runs anywhere that can make an HTTPS request.

If your stack is an agent rather than a service, skip steps three and four: install the MCP server described below and the same endpoint becomes a named tool the model calls directly, on the same key and at the same rate.

Pricing, plain and flat

$0.04

per 1,000 mentions returned

$0.50

free credits at signup, no card

$0

subscription, you pay per call only

There is no minimum spend and no monthly seat fee. You start with $0.50 in free credits and pay $0.0008 per call after that. See the full breakdown on the Twitter API pricing page, or explore the full API docs.

X API pricing at a glance

The official X API meters reads per resource: roughly $0.005 to $0.010 for each post read, one post per unit, which is $5 to $10 per 1,000 posts. Here the unit is the call: $0.0008 whatever the call returns, which is $0.04 per 1,000 posts when a call comes back with a full page of 20.

Measured yield per search call

Mention and search calls often come back short of a full page, and the honest comparison uses the measured figure. Per our own billed-call measurement, an average keyword-search call returned 11.44 posts across 484,424 paying read calls from October 22 to 28, 2026 (UTC), which puts a search-shaped workload at about $0.070 per 1,000 posts. That is still over 70 times below the low end of the official per-post rate. The trade a per-call model makes is that a quiet poll which returns nothing still costs one call. The 2026 price sheet lays every tier and alternative side by side.

Filter rules pricing: polling against a stream

X's filtered stream works on filter rules: you register rules and matching posts arrive over a persistent connection, and access to it sits with X's top paid tiers rather than with pay-per-use reads. Here a rule is simply a query string, and there is no stream contract to buy. Every feed in your table is one more polled query, and it costs its cadence: a query polled every five minutes is 8,640 calls a month, about $6.91, whether it matches nothing or hundreds of posts.

That makes the decision about volume and freshness rather than about a plan. Many narrow queries at a relaxed cadence are cheap. A few broad queries that must be seconds fresh are where a push product earns its contract. For the one push this API does offer, new posts from a watched handle, the monitor above is free to set up, and you pay nothing per delivered post.

Real-world cost examples

  • Support desk, one handle, every minute. 1,440 calls a day, about 43,200 a month, $34.56. The case where freshness is the product.
  • Agency, 20 client handles, every five minutes. 20 times 8,640 is 172,800 calls a month, $138.24, or $6.91 per client, with no per-seat cost for the people reading the output.
  • Brand plus three competitor searches, every fifteen minutes. 4 times 2,880 is 11,520 calls a month, about $9.22.
  • A 30-day backfill before the loop goes live. One call per page, so a handle with 3,000 mentions in the month is about 150 calls at a full page and closer to 400 at a search-shaped average, $0.12 to $0.32.

The number that moves each bill is cadence, never mention volume. A viral week and a quiet week cost the same to watch at the same interval.

One key, every X endpoint

This is an X API, not a multi-network dashboard, and it goes deep on X instead. The key that runs your mention loop reaches all 121 endpoints in the catalog: replies and quotes under a mention, the author's profile and recent posts for context, follower graphs, lists, communities, and the write calls that answer, like or follow. One balance, one 600-requests-a-minute ceiling and one set of error codes cover all of it, so the context step of a mention workflow, reading the thread and the author before anyone replies, is a few more calls on the same key rather than another vendor. If your brand argues on several networks, treat this as the X input to a wider view and label any X-only figure as X-only.

Wire mentions into an AI agent via MCP

Install the TwitterAPIs MCP server (@twitterapis/mcp) and the mentions endpoint becomes a native tool call any MCP-compatible model can invoke. The same Bearer key authorizes every call, so you add one line to your MCP config and your agent gains a live mention feed with no extra code. For keyword-based search instead of account-based listening, the Twitter search API runs on the same key. To pull an account's full posting history instead of only its mentions, use the Twitter timeline API. To get the follower graph of accounts that mention you, combine with the Twitter followers API, and to resolve the full profile behind each mentioning handle, pass it to the Twitter user API. To widen the same watermarked polling pattern past mentions, onto replies, reposts, follows and DMs, the Twitter account activity API covers every event type, and to aggregate what those mentions earned rather than only list them, the Twitter analytics API carries the metric fields. Need a key? Get a Twitter API key in 30 seconds.

Twitter mentions API FAQ

GET /twitter/user/mentions returns a paginated array of public tweets that mention the given account. Each tweet object includes the full tweet text, author details, timestamp, public metrics (likes, retweets, replies, views), conversation ID, and whether the tweet is a reply or a quote. The response also carries a next_cursor and has_more flag so you can walk multiple pages of older mentions. Results come newest first, so a poller keeps the highest tweet ID it has processed and drops anything at or below it.

Each call is $0.0008 (source: twitterapis pricing). If you poll once per minute around the clock that is 1,440 calls per day, or about 43,200 per month, which works out to $34.56 per month. Polling every 5 minutes drops that to $6.91 per month. There is no subscription, no monthly minimum, and you start with $0.50 in free credits at signup. The official X API gates user mentions lookup behind paid developer tiers with hard request caps; TwitterAPIs charges only for what you actually pull.

No. The endpoint takes username, count (default 20, an upper bound of 100 per page, since X can return fewer) and cursor, and a parameter it does not know is ignored rather than rejected, so a since_id you send changes nothing. Do the incremental step on your side: store the highest tweet ID you have processed and drop anything at or below it on the next poll. IDs arrive as strings, so compare them as integers (BigInt in JavaScript), never as floating-point numbers.

One ceiling, the same on every route: 600 requests a minute and 20 requests in flight at once, per API key. Past either, the response is a 429 with a Retry-After header giving the wait in seconds, and a failed call is not billed, so a client that honours the header loses time rather than credit. In practice that ceiling is far above what a mention loop needs. A handle polled every minute uses one request a minute, so a single key could in principle cover hundreds of handles at that cadence before the limit matters, and the bill would bind long before the rate did. There are no separate 15-minute or daily windows per endpoint to plan around, which is the main difference from the official X API.

A few minutes from nothing. Signing up with Google or email issues the Bearer key straight away, with no X developer account and no review. The first call is a single GET to /twitter/user/mentions with a username, and it returns in the time of one HTTPS request. The part that takes longer is deciding what to watch: which handles, which brand terms, which misspellings and exclusions. Spend that time reading a hundred results from each query by hand before you schedule anything, because a query that matches strangers costs the same per call as one that matches customers, and only one of them is worth polling.

Call GET /twitter/user/mentions with the username you want to monitor. Results come newest first, so store the highest tweet ID you have processed and, on every later call, keep only tweets with a higher ID. Tweet IDs grow with time, so an integer comparison is enough, and if every tweet on the page is new, follow next_cursor until you reach one you have seen. Call every 60 seconds for near-real-time coverage ($0.0008 per call, about $34.56 per month at that cadence) or every 5 minutes for moderate monitoring ($6.91 per month).

No. You do not need an X developer account or any OAuth setup. You need only a TwitterAPIs key, which is a single Bearer token you copy after a 30-second signup. No app review, no waiting period, no X approval. You can start pulling mentions within a minute of registering.

Yes. Each response includes a next_cursor and a has_more flag. Pass next_cursor back on the next call to walk backwards through older mentions. Use cursor pagination for historical backfills (auditing the last 30 days of mentions, for example), then switch to the newest-first polling loop for live monitoring once you have ingested the history.

Three broad routes. The official X API is first-party and the right choice when you need a contract, signed-in user consent, or push delivery at very high volume, and it meters reads at roughly $0.005 to $0.010 per post. A per-call API like this one reads the same public mentions with a Bearer key, no developer account and no plan, at $0.0008 a call. Scraping it yourself costs nothing in fees and a great deal in upkeep, because the pages change and accounts get limited. There is no free tier here, but every new account starts with $0.50 in credit and no card, enough to run a one-minute mention loop for about ten hours. The full field, with prices, is compared on the Twitter API alternatives page.

Install the TwitterAPIs MCP package (@twitterapis/mcp) and add your Bearer token to your MCP config. The MCP server exposes user/mentions as a native tool call, so Claude, GPT, or any MCP-compatible model can fetch a live mention feed in a tool turn with no extra code. For custom agent stacks, call the REST endpoint directly from a tool-use handler and pass the result to your LLM classification step.

Monitor mentions without an X account

$0.04 per 1,000 mentions. $0.50 free credits. Newest-first polling, no developer account, 600 req/min per key.