A Twitter monitoring tool for developers: keyword and account alerts by webhook.

Last updated October 1, 2026

x_monitor is twitr.sh's Twitter monitoring tool. It watches one X account or one keyword query in real time and sends an event for every new post, reply, repost, quote or mention. On account monitors it also reports profile changes. Events reach your code by HMAC-signed webhook or a free polling feed. A monitor is prepaid by the hour, about $0.025 an hour or $0.61 for a full day. It stops at expiry unless you extend it, so it can't run up an open-ended bill. It is made for developers and AI agents, not as a dashboard.

What can you monitor?

MonitorInputGood for
Account{"username":"vercel"}Competitor launches, executive posts, profile changes, impersonation
Keyword{"query":"acme OR @acmehq"}Brand mentions, hashtags, cashtags, product names, support requests

Keyword queries use X search syntax and can be up to 512 characters, so from:, OR, hashtags and cashtags all work. You can buy 1 to 168 hours per purchase and keep up to 720 hours (30 days) prepaid ahead.

Which events does it send?

GroupEvent typesApplies to
Post events (10)tweet.new · tweet.reply · tweet.retweet · tweet.quote · tweet.media · tweet.link · tweet.poll · tweet.mention · tweet.hashtag · tweet.longformAccount and keyword monitors
Profile events (11)profile.avatar.changed · profile.banner.changed · profile.name.changed · profile.username.changed · profile.bio.changed · profile.location.changed · profile.url.changed · profile.verified.changed · profile.protected.changed · profile.pinned_tweet.changed · profile.unavailable.changedAccount monitors only
Lifecyclemonitor.expired · monitor.deletedFires once when a monitor ends

By default a monitor sends every event that applies to it. You can pass eventTypes to narrow it, for example to only tweet.new. The lifecycle event means silence is never ambiguous: either nothing happened, or you were told the monitor ended.

How much does Twitter monitoring cost?

WindowPriceNotes
1 hour$0.0264Includes the one-time setup lookup
24 hours$0.606The most common window
7 days (168 h)$4.23Most you can buy in one purchase
30 days (720 h)About $18.15Create plus extends; the longest prepaid window
Each extra hour$0.0252Extend at least 5 minutes before expiry

Polling and webhook delivery are free. Hours are prepaid and aren't refunded if you delete early. You can pay with USDC via x402 on Base or MPP on Tempo, or from a card-funded balance. For comparison, polling a search yourself on any paid API means paying for every read, and an always-on stream means keeping a connection alive.

How do I set up keyword alerts?

# 1) create a keyword monitor for 24 prepaid hours
#    first request returns 402 with the price ($0.606); the wallet pays and retries
npx agentcash fetch https://twitr.sh/api/tools/x_monitor -m POST \
  -H 'Idempotency-Key: acme-alerts-001' \
  -b '{"action":"create","query":"acme OR @acmehq","eventTypes":["tweet.new","tweet.quote"],"hours":24}'
# -> { monitor: { monitor_id: "mn_...", expires_at, ... }, events_url }

# 2a) pull: poll the feed for free (wallet-signed)
npx agentcash fetch "https://twitr.sh/api/monitors/mn_.../events?after=<last id>"

# 2b) push: register a webhook once (free); the secret is returned once
npx agentcash fetch https://twitr.sh/api/webhooks -m POST \
  -b '{"url":"https://your-app.example/hooks","eventTypes":["tweet.new","tweet.quote"]}'

# 3) keep it running: extend before it expires
npx agentcash fetch https://twitr.sh/api/tools/x_monitor -m POST \
  -H 'Idempotency-Key: acme-alerts-002' \
  -b '{"action":"extend","monitorId":"mn_...","hours":48}'

The Idempotency-Key is required. If a retry reuses the same key, it returns the original monitor instead of charging twice. Prefer a card balance? Send Authorization: Bearer tw_live_… with plain curl instead. Every field is in the docs and on the x_monitor page.

How do I verify webhook deliveries?

Each delivery is a POST with X-Twitr-Signature, X-Twitr-Timestamp, X-Twitr-Delivery and X-Twitr-Event headers. The body has type, id, delivery_id, monitor_id, timestamps, source and data. Verify it before you trust it:

import crypto from "node:crypto";

// rawBody: the exact bytes you received, before JSON parsing
export function verifyTwitr(rawBody, headers, secret) {
  const ts = headers["x-twitr-timestamp"];          // unix time in ms
  const sig = headers["x-twitr-signature"] ?? "";    // "sha256=<hex>"
  if (Math.abs(Date.now() - Number(ts)) > 5 * 60_000) return false;
  const expected =
    "sha256=" + crypto.createHmac("sha256", secret).update(`${ts}.${rawBody}`).digest("hex");
  return sig.length === expected.length &&
    crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}

Respond with a 2xx within 10 seconds and do slow work afterwards. Dedupe on delivery_id and id. Failed deliveries retry with backoff over about 36 minutes, up to 6 attempts. After 50 consecutive failures the webhook pauses, and a successful /test call turns it back on.

How does it compare with other ways to monitor Twitter?

ApproachHow it worksTrade-offs
Social listening dashboardsAlerts and reports inside an app, usually on a subscriptionGreat for marketing teams; harder to wire into your own code or agent
Official X API filtered streamKeep a streaming connection open; pay-per-use allows 1,000 rules of up to 1,024 characters and 1 connectionSanctioned by X; needs a developer app and reconnect handling
Polling search yourselfRe-run a search on a timerSimple, but you pay per poll and latency depends on how often you poll
twitterapi.io filter rulesWebhook or WebSocket rules, checked every 0.05 s to 24 hFine-grained intervals; needs a twitterapi.io API key
twitr.sh x_monitorOne paid call creates a monitor; events by webhook or free pollingPrepaid with a hard stop; one account or query per monitor

What do people use Twitter monitors for?

Use caseMonitor setupTypical cost
Brand mention alertsquery: "acme OR @acmehq", eventTypes: tweet.new$0.61 a day
Competitor launch watchusername: "competitor", eventTypes: tweet.new, tweet.link$4.23 a week
Ticker or cashtag chatterquery: "$ACME", eventTypes: tweet.new$0.61 a day
Event hashtag, livequery: "#launchweek", hours: 72$1.82 for three days
Impersonation and profile changesusername: "yourbrand", eventTypes: the 11 profile events$4.23 a week
Support inbox on Xquery: "@yourbrand", eventTypes: tweet.mention$0.61 a day

Each row is one monitor, and you can run several side by side. Narrowing eventTypesdoesn't change the hourly price, but it keeps your webhook quiet and your agent focused on what matters. For a support inbox, send tweet.mention events to an agent that drafts replies, and approve them before anything is posted.

Can an AI agent run the monitor for me?

Yes. Install the skills with npx skills add lnvestor/twitr-skillsand say “Watch @competitor and tell me when they announce something.” The x-twitter-monitor skill creates the monitor, checks the feed and extends it when you ask. Point a webhook at Claude, OpenClaw, Hermes or your own endpoint to act the moment a post lands. With a connected account, the x-presence skill can draft replies for you to approve. See connect Claude to Twitter, /skills and /tools.

Comparing costs with the official API? See Twitter API vs twitr.sh, X API pricing and X API alternatives. If an account you're watching suddenly goes quiet, the free shadowban checker and X algorithm checker can tell you whether its reach dropped.

FAQ

What is a good Twitter monitoring tool for developers?

One that delivers events to your code instead of a dashboard. twitr.sh's x_monitor watches an X account or keyword query and sends every new post, reply, repost, quote or mention to a signed webhook or a free polling feed. It is prepaid at about $0.025 per hour.

How do I set up Twitter keyword alerts?

POST to https://twitr.sh/api/tools/x_monitor with action create, your keyword query in X search syntax (up to 512 characters) and the number of hours. Pay the quoted price, then poll the free events feed or register a webhook to receive alerts.

How much does it cost to monitor a Twitter account?

About $0.025 per hour: $0.0264 for the first hour including setup, $0.606 for 24 hours and $4.23 for a full week. Polling events and receiving webhooks are free.

What happens when the prepaid hours run out?

The monitor stops and is removed at its expiry time, and a final monitor.expired event fires so you know it ended. Extend it at least 5 minutes before expiry to keep it running. Nothing is billed after expiry.

Do I get a refund if I delete a monitor early?

No. Hours are prepaid, and deleting a monitor early doesn't refund the remaining time. Buy short windows and extend them if you are unsure how long you need.

Can I monitor several accounts or keywords?

Yes. Each monitor watches one account or one keyword query, so create one per target. One webhook receives events from every monitor your wallet owns, and you can register up to 3 webhooks per wallet.

Can I monitor a hashtag or cashtag?

Yes. Create a keyword monitor whose query is the hashtag or cashtag, for example #launchweek or $ACME. It accepts X search syntax, so you can combine terms with OR or exclude words. Every new matching post becomes a tweet.new event.

Can I get alerts when someone changes their profile?

Yes, on account monitors. There are 11 profile events, covering avatar, banner, display name, username, bio, location, URL, verified status, protected status, pinned post and the account becoming unavailable.

Is polling for events free?

Yes. GET /api/monitors/{id}/events is free with a sign-in from the paying wallet. It returns events newer than your cursor, keeps 500 events for 24 hours and allows 60 reads per minute.

How do I verify a twitr.sh webhook?

Recompute HMAC-SHA256 of the X-Twitr-Timestamp header, a dot and the raw body, using your webhook secret. Compare it with the X-Twitr-Signature header (sha256=<hex>) in constant time, reject timestamps older than 5 minutes, and dedupe on delivery_id and id.

How do I pay for monitors?

USDC via x402 on Base or MPP on Tempo, or from a card-funded balance with a twitr.sh API key. Solana isn't offered for monitors because a monitor needs a recoverable owner wallet.

Do I need an X developer account?

No. A monitor is one paid call to twitr.sh. There is no X developer app, filtered-stream rule set or long-lived connection to manage.