X / Twitter Monitor & Scraper - Profile Timelines & New Posts avatar

X / Twitter Monitor & Scraper - Profile Timelines & New Posts

Pricing

from $1.20 / 1,000 results

Go to Apify Store
X / Twitter Monitor & Scraper - Profile Timelines & New Posts

X / Twitter Monitor & Scraper - Profile Timelines & New Posts

Scrape and monitor public posts from one or many X (Twitter) accounts by handle or URL. Schedule it and turn on 'only new since last run' to get and pay for new posts only. Keyword filter, from:handle search, 23 fields incl. likes, reposts, views. No login. JSON, CSV, Excel.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

TicTech

TicTech

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Scrape recent public posts from one or many X (Twitter) accounts — by handle or profile URL, no login. Pull a single profile timeline, collect posts from a whole set of accounts in one run with maxItems split fairly across them, or narrow posts with from:handle plus keyword filtering. Every post comes with likes, reposts, replies, quotes, bookmarks, views, media flags and a clean post URL, ready for dashboards, CRM enrichment and n8n / Make / Zapier.

Built for competitor tracking, influencer research, news and creator feeds, and scheduled data pulls on Apify.

How to monitor

Schedule this Actor on Apify (e.g. hourly or daily) and turn on Only new posts since last run (onlyNewSinceLastRun) — each run then returns, and charges for, only posts newer than the ones it saw last time. See Scheduled runs: only new posts for details.

Why teams pick this Actor

  • Profile timelines — recent public posts from any public account, by handle, @handle or profile URL
  • Multi-account posts, split fairly — pass several handles and maxItems is shared across them, so one busy account can’t crowd out the rest
  • from:handle + keyword filtering — keep only the posts from chosen accounts that contain your keywords (e.g. from:CoinDesk BTC)
  • Rich engagement fields — likes, reposts, replies, quotes, bookmarks, views, language, media flags (23 fields)
  • Clean post text — normalized whitespace (no messy blank lines / \n\n dumps); readable in Output and exports
  • Clean snake_case JSON — id, text, author, handle, created_at, url, plus filter flags (is_reply, is_repost, is_quote)
  • No login, proxy included — Actor-owned Apify RESIDENTIAL proxy (no proxy UI to misconfigure)
  • Filters that matter — toggle replies and reposts; hard maxItems cap for predictable cost
  • Example Tasks ready — profile timeline, competitor timelines, multi-account news feed, keyword-filtered crypto and brand posts
  • Pairs with transcripts — scrape posts here, then send video URLs to X Video Transcriber

Modes at a glance

mode valueWhat it doesWhat you provide
user_timelineProfile timelines — recent posts from one or more accountsOne or more handles
listMulti-account posts — one combined dataset, maxItems split fairly across accountshandles (the accounts to include)
searchfrom:handle + keyword filtering on those accounts’ postssearchQuery like from:Handle keyword (repeat from: for several accounts)

Keyword filtering tip: always name the accounts with from:Handle inside searchQuery (e.g. from:Apify scraper, or from:CoinDesk from:WatcherGuru BTC). The Actor reads those accounts’ recent posts and keeps only the ones containing all your keywords (case-insensitive). Rare keywords stop after a few pages per account; if you get fewer than maxItems, add more handles or use a broader keyword.

Multi-account tip: pass the accounts in handles. X List URLs are not supported as an input on their own.

Input examples

Profile timeline (recommended start)

{
"mode": "user_timeline",
"handles": ["Apify"],
"maxItems": 20,
"includeReplies": false,
"includeReposts": false
}

Multi-account posts (fair split)

{
"mode": "list",
"handles": ["AP", "BBCWorld", "AJEnglish"],
"maxItems": 21
}

from:handle + keyword

{
"mode": "search",
"searchQuery": "from:Apify scraper",
"maxItems": 15
}

Keyword across several accounts (e.g. a crypto ticker)

{
"mode": "search",
"searchQuery": "from:WatcherGuru from:BitcoinMagazine from:CoinDesk BTC",
"maxItems": 10
}

Output example

{
"id": "2106006297003106381",
"text": "Some viral TikTok carousels are just paid ads...",
"author": "Apify",
"handle": "apify",
"created_at": "2026-10-02T13:00:03Z",
"likes": 4,
"reposts": 0,
"replies": 0,
"views": 259,
"url": "https://x.com/apify/status/2106006297003106381",
"has_media": false,
"has_video": false,
"has_photo": false,
"is_reply": false,
"is_repost": false,
"source_mode": "user_timeline"
}

Timelines come from X’s public (logged-out) view. For most accounts that is the newest posts first; a few very large accounts serve older highlighted posts on that view — check created_at and sort if you need strict recency.

Some fields can be null when X does not expose them for a post or account (for example views on some publisher accounts).

Export as JSON, CSV, Excel, or XML from the Dataset / Output tab.

How to run

  1. Open X / Twitter Scraper → Try for free
  2. Pick a mode (start with user_timeline)
  3. Add handles (or a from:Handle keyword query)
  4. Free-tier tip: free tier max items per run ≤ 100
  5. Open Output (or Storage → Dataset) and download

Schedule the Actor for recurring competitor or creator pulls.

Scheduled runs: only new posts

Turn on Only new posts since last run (onlyNewSinceLastRun) to get a clean incremental feed from a schedule:

  • First run returns posts as usual and saves the newest post ID for each handle.
  • Later runs push — and charge for — only posts newer than the saved ID for that handle.
  • Nothing new? The run still finishes SUCCEEDED with 0 items, a clear status message, and no per-post charges (only the small start fee).
  • Use a different stateKey per Task or schedule (e.g. competitors-daily, news-hourly) so feeds don’t share state. The state lives in the vanzi-x-monitor-state key-value store in your own Apify account; delete the record to start fresh.
{
"mode": "list",
"handles": ["Apify", "browserbase"],
"maxItems": 20,
"onlyNewSinceLastRun": true,
"stateKey": "scraping-tools-hourly"
}

Leave the toggle off (default) and every run behaves exactly as before.

Run it on your own stack

Turn this Actor into a recurring X / Twitter data feed without writing a scraper.

1. Schedule it on Apify. Save your input as a Task (or start from one of the Example Tasks), then add an Apify Schedule — e.g. hourly for a news-account feed, daily for competitor timelines. Each run writes a fresh dataset; turn on onlyNewSinceLastRun so each scheduled run returns only posts you haven’t seen yet, and keep maxItems tight so scheduled runs stay cheap.

2. Push results where you work. In the Actor or Task Integrations tab, add a webhook on Run succeeded to ping your backend, Slack bot, n8n, Make or Zapier flow with the run ID — then fetch the dataset items from the API.

3. Export to Google Sheets or CSV. Every run’s dataset downloads as CSV, JSON, Excel or XML from the Output tab. For a spreadsheet feed, use the dataset items CSV URL:

https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&clean=1

Download it, or pull it straight into Google Sheets with =IMPORTDATA("<that URL>"). Anyone with the dataset ID can read that URL, so share it only where you’re happy for the data to be visible.

4. Call it from your code. Run the Actor synchronously and get the posts back in one request:

curl -X POST "https://api.apify.com/v2/acts/tictechid~vanzi-x-monitor/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"user_timeline","handles":["Apify"],"maxItems":10}'

Or with the Python client (pip install "apify-client>=3"):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("tictechid/vanzi-x-monitor").call(
run_input={"mode": "search", "searchQuery": "from:Apify scraper", "maxItems": 10}
)
for post in client.dataset(run.default_dataset_id).iterate_items():
print(post["handle"], post["likes"], post["url"])

More tools from TicTech

NeedActor
Transcribe X / Twitter videosX Video Transcriber
TikTok / IG / YT Shorts → transcriptShorts Transcriber
Instagram posts & reelsInstagram Scraper
TikTok posts & profilesTikTok Scraper
Bluesky posts & searchBluesky Scraper

Tip: scrape the post with this Scraper, then pass video post URLs into X Video Transcriber for captions.

Usage Limits

  • Free tier: free tier max items per run ≤ 100. Non-paying Apify accounts get 5 free runs of this Actor; after that a run exits SUCCEEDED with an upgrade tip in the status message (no new results, no error).
  • Hard maxItems ceiling per run (safe ceiling 500 when set to 0)
  • Need more capacity? Apify pricing
  • Public data only — protected / suspended accounts return nothing; invalid handles are skipped with a warning
  • Posts come from accounts you name (handles or from:Handle); X List URLs alone are not supported
  • Keyword filtering reads up to 5 pages per account; rare keywords can return fewer than maxItems

Pricing

Pay-per-event (PPE) on synthetic Apify events:

  • apify-default-dataset-item — per post pushed (~$1.50 / 1k on FREE; lower on paid tiers)
  • apify-actor-start — small per-run start fee (scales with RAM)

Runs stay lean (HTTP GraphQL, no browser). Dominant cost is residential proxy + compute — keep maxItems tight on schedules.

For more details, contact the maintainer or email us at contact@tictech.id