Home › Guides › X Account Monitor
Watch X (Twitter) accounts: newest posts with the four engagement counts, on a schedule
The X (Twitter) Account Monitor takes a list of accounts and returns their newest posts with the numbers that matter — likes, reposts, replies, quotes — plus what it computes from them: engagement total, engagement per 1,000 followers (comparable across account sizes) and engagement per hour. Each account also gets its own row. Turn on only-new mode and an hourly watchlist pays only for posts that appeared since the last run. No login, no API key, no browser.
Who it's for
- Competitive and brand teams watching a set of accounts on a schedule and seeing their engagement next to yours.
- Agencies producing client and campaign reports — post text, time, media and the four counts, in CSV.
- Analysts benchmarking engagement across accounts of very different sizes with one comparable figure.
- Dashboards and LLMs fed flat rows with stable field names and ISO timestamps.
What you get
| Group | Fields |
|---|---|
| Post | ID, URL, text, created time, language, reply flag, conversation ID |
| Engagement | Likes, reposts, replies, quotes; engagement total, engagementPer1kFollowers, engagementPerHour, age in hours |
| Media & entities | Photos and videos with direct URLs and sizes, hashtags, mentions, expanded links, sensitive/edited flags |
| Author | Handle, name, ID, followers, verified — flattened onto every post row; plus one full account row per account |
A real post row from a run on 2026-10-18 (trimmed):
{
"type": "tweet",
"url": "https://x.com/Nike/status/2109382322516799677",
"text": "Zheng Qinwen claims her first WTA 1000 title in Beijing.",
"createdAt": "2026-10-11T20:35:10.000Z",
"likes": 6398,
"reposts": 527,
"replies": 92,
"quotes": 63,
"engagement": 7080,
"engagementPer1kFollowers": 0.745,
"engagementPerHour": 42.24,
"ageHours": 167.6,
"mediaTypes": ["photo"],
"authorHandle": "Nike",
"authorFollowers": 9504725,
"authorVerified": true
}
How it works
The Actor reads X's own embed (syndication) backend — the service that renders embedded timelines on other sites. For each account it fetches the newest page of posts, turns every post into a flat row, and adds one row for the account itself. Nothing is logged in, no cookies are kept, no browser is started — fast, cheap and resilient to X's web-app changes. engagementPer1kFollowers is what makes a 9,000-follower account and a 90-million-follower account comparable in the same table.
Input
| Input | What it does |
|---|---|
accounts | The accounts to read: @handle, x.com/handle or numeric id — mixed in one list |
maxPostsPerAccount | Newest posts per account (default 25, 1–110); the page is the ceiling |
includeProfileRow | One extra row per account with its own fields (default on) |
onlyNewPosts · listName | Deliver only posts not delivered before (keeps a list in your store) · which watchlist |
skipReplies · postedWithinDays · minEngagement | Drop replies · last N days only · minimum likes+reposts+replies+quotes — none charged |
maxPosts · concurrency | Cost cap across accounts · accounts read side by side (default 8) |
Watch three accounts, ten newest posts each, only what's new:
{ "accounts": ["@NASA", "@nike", "@Microsoft"], "maxPostsPerAccount": 10, "onlyNewPosts": true, "listName": "brands" }
Honest limits
- No paging. An account's newest page only — 23 to 105 posts depending on the account; there is no way to walk history, so the per-account cap is an upper bound.
- No keyword or hashtag search, no list or moment timelines, no reply texts (the count yes, the texts no), no follower lists and no view counts — X does not state them on an embedded post.
- Protected accounts are not readable, and an account X has no public record of comes back as a free status row.
- A handle costs one extra lookup the first time (a residential read, because a handle lookup from a datacenter address is rate-limited); the numeric id is then remembered for the cheap road.
Pricing
Pay per result: $0.06 per 1,000 delivered posts and $1 per 1,000 account rows. Status rows and posts left out by a filter are free — you pay for rows you receive. You also pay Apify for the small compute (one HTTP read per account, no browser). Current prices are on the actor's Pricing tab on Apify.
Monitor accounts, pay for what's new: newest posts with likes, reposts, replies, quotes and comparable engagement — on a schedule. Exportable to JSON, CSV or Excel.
Open the X Account Monitor →Related
This Actor watches accounts' posts; for an account's own record with activity and follower growth use the X Profile Scraper, and for the current numbers on specific tweets you already have the links to use the X Tweet Details Scraper. On another network, the YouTube Search Scraper covers video keywords.
Frequently asked questions
Do I need an X account, login or API key?
No. The Actor reads X's public embed (syndication) backend with no login, no cookies and no browser: one HTTP read per account.
Why do I get 23 posts for one account and 105 for another?
That is how many X embeds for that account — its newest page, with no paging. The per-account cap you set is an upper bound, not a promise; anything above about 105 simply takes everything the page holds.
How does only-new mode work?
It keeps a list in your own key-value store of what it has already delivered. The first run delivers the page; later runs deliver only the posts that appeared since, so an hourly watchlist pays only for new posts.
Can I watch 1,000 accounts?
Yes — one read per account, eight at a time by default. Use only-new mode so you pay for new posts only. A handle costs one extra residential lookup the first time; the numeric id is then remembered for the cheap road.
What can't it do?
No keyword or hashtag search, no follower lists, no reply texts, no view counts, and no history beyond the newest embedded page. Protected accounts are not readable and come back as free status rows.
X (Twitter) Account Monitor — a watchlist of accounts with the four engagement counts and only-new mode. Pay per row, no API key.
Get X post data on Apify →