Which API do you use to monitor Twitter mentions in real time?
Last updated September 3, 2026
Two shapes answer this. Polling user/mentions bills $0.0008 a call and returns whoever tagged one handle. A monitor plus a webhook is a standing watch that pushes matches to your endpoint, and the entire monitor and webhook control plane is zero rated, so the only thing you pay for is the reads that back the watch.
Every rate here is the pricing TwitterAPIs publishes. The billed rate is $0.0008 per call; $0.04 per 1,000 tweets is derived from it at a full 20-tweet page, which is the default page size rather than a guaranteed yield (source: twitterapis.com/pricing).
Which API do you use to monitor Twitter mentions in real time?
Two shapes answer this and they suit different jobs. Polling the mentions timeline reads whoever tagged one handle, bills $0.0008 a call, and gives you latency bounded by whatever interval you choose. A monitor paired with a webhook registers a standing watch and pushes matches to your endpoint as they are found, with the whole monitor and webhook control plane zero rated so the only thing you pay for is the reads behind it. Which one is right turns on a question most teams answer too late: whether you need posts that tag your handle, or posts that name your brand without tagging it, because the mentions timeline can only ever return the first kind.
What is the difference between a tagged and an untagged mention?
Before choosing an endpoint, decide which of the two you actually need, because they have different answers and most teams discover this late. A tagged mention is a post containing your handle, and the mentions timeline returns exactly those. An untagged mention is a post naming your brand as plain text with no handle attached, and the mentions timeline will never return it. For most consumer brands the untagged volume is the larger of the two, and it is where complaints and buying intent tend to live, because a frustrated customer types your name rather than looking up your handle. Tagged monitoring is a handle read. Untagged monitoring is a keyword search over the firehose, with all the precision work that implies. If your brand name is also an ordinary English word, plan for the filtering problem on day one rather than treating it as tuning you will do later.
Can you catch mentions that do not tag your handle?
Not through the mentions timeline, which by definition returns posts carrying the handle. Untagged mentions need a keyword watch or a search over the firehose for your brand name and its common misspellings. Expect to spend real effort on precision rather than recall: a distinctive brand name is a straightforward keyword, while a name that is also an ordinary word will need negative terms, language filters and probably an account-age or follower floor before the stream is usable.
How much does it cost to poll the mentions timeline?
The simplest working answer is to read the mentions timeline on a timer. Each call bills $0.0008 and returns a page of posts that tagged the handle, newest first. Store the newest id you have processed and pass it as your lower bound on the next call so you are not paying to re-read the same page, which is the single most common waste in a polling loop. Cost is a straightforward function of cadence: once a minute is 1,440 calls a day, which is $1.15; once every five minutes is 288 calls, or 23 cents. Pick the interval from how quickly the business actually needs to respond rather than from how fresh you would like the dashboard to look. A support workflow with a one hour service level does not need minute-level polling, and the difference compounds across every handle you watch.
How do you set up a standing watch instead of a polling loop?
A monitor inverts the arrangement. Rather than asking repeatedly whether anything is new, you register a watch and a webhook, and matches are delivered to your endpoint as they are found. The control plane for this is zero rated end to end: creating a monitor, listing monitors, updating one, deleting one, reading its health, reading the account-wide rollup, reading deliveries, registering a webhook, deleting one and firing a test send all cost nothing. You pay for the reads that back the watch, not for the machinery of watching. That pricing shape matters when you are watching many handles, because the per-watch overhead that would normally make a wide roster expensive is simply absent. Register the webhook first and fire the test delivery before you rely on it, because a watch pointing at an endpoint that never validated will look healthy and deliver nothing.
What does the monitor and webhook control plane cost?
Nothing. Creating a monitor, listing them, updating one, deleting one, reading a single monitor's health, reading the account-wide health rollup, reading deliveries, registering a webhook, deleting one and firing a test send are all zero rated. You pay for the reads that back a watch, not for the machinery of watching. That shape is what changes the arithmetic on a wide roster: with polling, cost scales with handles multiplied by cadence, so watching fifty handles every five minutes is 14,400 calls a day at about $11.52. With a standing watch the per-watch overhead that would normally make a wide roster expensive is simply absent, and what you pay tracks matching volume rather than roster size. Register the webhook and fire the test delivery before you depend on it, because a watch pointing at an endpoint that never validated looks healthy and delivers nothing.
How fresh is real time in practice?
Push feels instant and often is, but it is worth measuring rather than assuming, because the number you care about is the gap between a post appearing on X and your system reacting to it. That gap has three parts: how quickly the watch notices, how quickly the delivery is dispatched, and how quickly your endpoint acknowledges it. Only the third is under your control, and it is the one most often at fault. An endpoint that does real work synchronously before returning will slow the whole pipeline and can push you into retries. Acknowledge immediately, queue the payload, and process it out of band. Then measure the true end-to-end figure by comparing the post timestamp with your own ingestion timestamp across a sample, rather than trusting any interval that appears in configuration. A poll interval is a request, not a guarantee.
How do you measure real mention latency?
Compare the post timestamp against your own ingestion timestamp across a few hundred deliveries, and look at the distribution rather than the mean, because the tail is what causes incidents and the mean will hide it. Do this before you tune anything, so you know which of the three segments is actually slow: how quickly the watch notices, how quickly the delivery is dispatched, and how quickly your endpoint acknowledges. Only the third is yours, and it is the one most often at fault. An endpoint that does real work synchronously before returning slows the whole pipeline and can push you into retries, which then look like a source problem. Acknowledge immediately, queue the payload, process out of band, then re-measure. A poll interval in a configuration field is a request, never a guarantee, and should not be quoted as a latency figure.
What does it cost to monitor fifty handles?
It depends on the shape you pick, which is exactly why the two are worth separating. Polling scales with handles multiplied by cadence: fifty handles once every five minutes is 14,400 calls a day, about $11.52. A standing watch does not multiply the control plane cost, because registering and maintaining watches is zero rated, so what you pay for is the matching volume rather than the roster size. Wide rosters are where the watch model separates from polling most sharply.
Do you need a webhook, or can you read deliveries on a schedule?
You can do either. A webhook gives the lowest latency and is the right default when reaction time matters. Reading the deliveries endpoint on a schedule is simpler to operate, needs no publicly routable URL, and suits a workflow that batches anyway, such as a daily digest. The deliveries read is part of the zero rated control plane, so choosing it does not cost you more than choosing push.
How do you avoid alerting twice on the same post?
Any real monitoring setup ends up with duplicates, and the fix belongs in your storage layer rather than in the source. Overlapping keyword rules match the same post more than once. A retry after a timeout redelivers something you already stored. Polling windows overlap at the edges by design, because a window that does not overlap will eventually drop a post. Key everything on the post id and make ingestion idempotent, so the same id arriving twice is a no-op rather than a second alert. Teams that skip this ship a dashboard whose counts drift upward over time for no reason anybody can explain, and the drift is invisible until somebody reconciles a total by hand. Build the idempotency before you build the alerting, because retrofitting it means reprocessing history.
Is a monitor a replacement for a search backfill?
No, and the two are complementary. A watch is forward looking and starts from the moment you register it, so it cannot tell you what happened last week. Backfilling history is a search job. The usual pattern is one search run to seed the history you care about, then a standing watch to keep it current, with both writing into the same deduplicated store so the join is trivial.
Polling a mentions timeline versus a standing watch
| Dimension | Polling user/mentions | Monitor plus webhook |
|---|---|---|
| Cost per read | $0.0008 a call | $0.0008 for the backing reads |
| Cost of the control plane | None, there is none | Zero rated |
| Cost at one minute cadence | 1,440 calls a day, about $1.15 | Not driven by cadence |
| Catches untagged brand mentions | No, tagged only | Yes, with a keyword watch |
| Latency | Bounded by your interval | Bounded by delivery and your acknowledgement |
| Fails quietly when | The cursor is not advanced | The webhook was never validated |
For real-time data, use filtered stream instead of polling.
Questions and answers
- Which endpoint returns mentions of a handle?
- The user mentions timeline, billed at the standard $0.0008 a call, returning a page of posts that tagged the handle newest first. Store the newest id you have processed and pass it as a lower bound on the next call, otherwise you pay repeatedly to re-read the same page, which is the most common waste in a polling loop.
- Can I watch a keyword rather than a handle?
- Yes, and that is the route to untagged mentions. A keyword watch searches the stream rather than one account's timeline, which is what you need when people type your brand name without the at sign. Expect to spend real effort on precision rather than recall: a distinctive name is straightforward, while a name that is also an ordinary English word needs negative terms, language filters and probably an account-age or follower floor before the stream is usable.
- What happens if my endpoint is down when a match arrives?
- Deliveries retry, which is exactly why your ingestion has to be idempotent. A retry after a timeout is one of the three normal sources of duplicates, alongside overlapping keyword rules and deliberately overlapping poll windows. Key on the post id and make a repeat a no-op rather than a second alert, and build that before the alerting rather than retrofitting it, since retrofitting means reprocessing history.
- Should I alert on every mention?
- Almost never, and the volume question is a product decision rather than a technical one. Route by intent instead: a complaint or a buying signal deserves a person, a neutral mention belongs in a digest, and a bot repost belongs nowhere. Deciding this before you wire the alerts is what prevents the channel being muted in week two, which is the usual fate of a mention feed that pages on everything.
- Can I monitor an account I do not own?
- For public posts, yes, since the mentions timeline and keyword search both read public data and neither requires control of the account being watched. That is what makes competitor monitoring straightforward. Protected accounts are absent everywhere by construction, so any coverage claim you make internally should say so rather than implying the feed is complete.
Keep reading
Start with $0.50 in free credits
No credit card. Roughly 12,500 tweets to test every endpoint.