VOOZH about

URL: https://apify.com/xtracto/x-account-tweets-scraper

⇱ X (Twitter) Account Tweets Scraper Β· Apify


πŸ‘ X (Twitter) Account Tweets Scraper avatar

X (Twitter) Account Tweets Scraper

Pricing

from $0.10 / 1,000 results

Go to Apify Store

X (Twitter) Account Tweets Scraper

Get recent tweets from any public X (Twitter) account by handle. Returns up to ~100 most recent tweets per account with text, media, counts (likes/retweets/replies/views), entities, and author metadata. HTTP-only, no login required.

Pricing

from $0.10 / 1,000 results

Rating

0.0

(0)

Developer

πŸ‘ Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Share

Bulk-scrape recent tweets from any public X (Twitter) account β€” full text (including long tweets over 280 characters), media URLs, view count, like / retweet / reply / quote counts, hashtags, mentions, and author metadata β€” in a clean structured JSON output.

Why use this actor

  • No account / no login required β€” just give it an X handle, an @handle, or a profile URL.
  • No API key needed β€” get the same data the X web app shows, without paying for the X API.
  • Full tweet text, not truncated β€” long tweets (>280 chars, premium long-form) are returned in full via the full_text field; the legacy 280-char shape is preserved for backward compatibility.
  • All public engagement counters β€” view count, likes, retweets, replies, quotes, and bookmarks per tweet.
  • Paginated timeline β€” automatically follows the next-page cursor so you can pull dozens of tweets per account in one run.
  • Bulk input β€” pass a list of handles in a single run; each account is processed independently with its own error envelope.
  • Stable JSON output suitable for pipelines, spreadsheets, and databases β€” every row carries _input, _source, and _scrapedAt envelope fields so you can join results back to your input list.

How it works

  1. You provide a list of X handles (e.g. jack) or profile URLs (e.g. https://x.com/elonmusk).
  2. The actor resolves each handle to the underlying account, then reads its public timeline page by page the same way the X web app does.
  3. For tweets with long-form content, the full rich-text body is lifted into full_text automatically.
  4. Results stream into your dataset, ready to download as JSON, CSV, or Excel.

You do not need to manage scrapers, browsers, or rotating IPs β€” all handled internally.

Input

{
"handles":["jack","elonmusk"],
"maxTweets":50,
"includeReplies":false,
"proxyConfiguration":{
"useApifyProxy":true,
"apifyProxyGroups":["DATACENTER"]
}
}
FieldTypeDescription
handlesarrayList of X (Twitter) accounts to scrape. Bare handle (jack), @handle, or full profile URL all accepted.
maxTweetsintegerMaximum tweets to return per account. Default 50. X serves up to ~100 tweets per anonymous page; higher values rely on pagination and may stop early when no further page is available.
includeRepliesbooleanIf true, return the tweets-and-replies timeline (conversational view). Default false (original tweets and retweets only).
proxyConfigurationobjectApify Proxy settings. Datacenter proxy is sufficient and is the cheapest option.

Output

Input: jack, maxTweets: 3

{
"_input":"jack",
"_source":"S1-primary",
"_scrapedAt":"2026-05-18T11:04:21.569704+00:00",
"rest_id":"1833951636005552366",
"id_str":"1833951636005552366",
"conversation_id_str":"1833951636005552366",
"created_at":"Wed Sep 11 19:31:57 +0000 2024",
"lang":"en",
"full_text":"We reject: kings, presidents, and voting.\nWe believe in: rough consensus and running code.\n\nβ€”David Clark, 1992",
"display_text_range":[0,110],
"favorite_count":26190,
"retweet_count":4333,
"reply_count":3646,
"quote_count":674,
"bookmark_count":3474,
"views":{"count":"7990536","state":"EnabledWithCount"},
"entities":{
"hashtags":[],
"user_mentions":[],
"urls":[],
"symbols":[],
"smarttags":[],
"timestamps":[]
},
"is_quote_status":false,
"source":"<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>",
"user_id_str":"12",
"author":{
"screen_name":"jack",
"name":"jack",
"rest_id":"12",
"description":"no state is the best state",
"followers_count":7537418,
"friends_count":3,
"statuses_count":30509,
"media_count":2963,
"listed_count":33146,
"is_blue_verified":true,
"profile_banner_url":"https://pbs.twimg.com/profile_banners/12/1742427520"
}
}
{
"_input":"jack",
"_source":"S1-primary",
"_scrapedAt":"2026-05-18T11:04:21.570681+00:00",
"rest_id":"1247616214769086465",
"id_str":"1247616214769086465",
"created_at":"Tue Apr 07 20:04:19 +0000 2020",
"lang":"en",
"full_text":"I'm moving $1B of my Square equity (~28% of my wealth) to #startsmall LLC to fund global COVID-19 relief. After we disarm this pandemic, the focus will shift to girl's health and education, and UBI. It will operate transparently, all flows tracked here: https://t.co/hVkUczDQmz",
"favorite_count":353958,
"retweet_count":62405,
"reply_count":29511,
"quote_count":19200,
"bookmark_count":4932,
"views":{"state":"Enabled"},
"entities":{
"hashtags":[{"indices":[58,69],"text":"startsmall"}],
"urls":[
{
"display_url":"docs.google.com/spreadsheets/d…",
"expanded_url":"https://docs.google.com/spreadsheets/d/1-eGxq2mMoEGwgSpNVL5j2sa6ToojZUZ-Zun8h2oBAR4",
"indices":[254,277],
"url":"https://t.co/hVkUczDQmz"
}
],
"user_mentions":[]
},
"is_quote_status":false,
"user_id_str":"12",
"author":{"screen_name":"jack","name":"jack","rest_id":"12","followers_count":7537418}
}
FieldTypeDescription
_inputstringThe handle or URL exactly as you supplied it. Use this to join results back to your input list.
_sourcestringInternal tag for the path used to fetch the record. S1-primary means the fastest path; values starting with S2- indicate a fallback.
_scrapedAtstringISO-8601 UTC timestamp when the tweet was scraped.
rest_id / id_strstringThe tweet's unique numeric ID.
conversation_id_strstringID of the thread / conversation this tweet belongs to.
created_atstringWhen the tweet was posted (X's native timestamp format, UTC).
langstringDetected language code (en, id, ja, …).
full_textstringComplete tweet text. For long-form tweets (>280 chars) this holds the entire body, not the legacy 280-char truncation.
display_text_rangearray[start, end] character offsets of the visible tweet body (excludes trailing media links).
favorite_countintegerNumber of likes.
retweet_countintegerNumber of retweets.
reply_countintegerNumber of direct replies.
quote_countintegerNumber of quote tweets.
bookmark_countintegerNumber of bookmarks (when X exposes it).
viewsobject{ "count": "7990536", "state": "EnabledWithCount" } β€” total view count and view-tracking state. For older tweets count may be absent and state is "Enabled".
entitiesobjectHashtags, user mentions, URLs, symbols, and smart tags, each with character offsets back into the tweet text.
extended_entities.mediaarrayWhen the tweet has media: photos, videos (with all bitrate variants), and GIFs β€” URLs, dimensions, durations, and types β€” passed through verbatim.
note_tweetobjectPresent only on long-form tweets. Holds the rich-text body, inline media references, and rich-text formatting tags (bold, italic, etc.).
is_quote_statusbooleantrue if this tweet quotes another tweet.
sourcestringClient used to post (e.g. "Twitter Web App", "Twitter for iPhone").
user_id_strstringThe author's numeric account ID.
authorobjectAuthor snapshot: screen_name, name, rest_id, description, followers_count, friends_count, statuses_count, media_count, listed_count, is_blue_verified, profile_banner_url, etc.

Error envelope

Handles that don't exist, are suspended, or return an empty anonymous timeline surface a structured error instead of crashing the run:

{
"_input":"this-handle-does-not-exist-xyz",
"_error":"resolve_failed",
"_errorDetail":"could not resolve handle 'this-handle-does-not-exist-xyz' to user_id",
"_source":"S1-primary",
"_scrapedAt":"2026-05-18T11:04:21.570681+00:00"
}

Possible _error values: resolve_failed (handle does not exist or is unavailable), empty_timeline (account is private, suspended, or anonymous reads restricted), exception (transport-level failure after retries). Filter on _error to triage failed rows β€” errors are not billed.

Pricing

This actor is billed per result: $8.00 per 1,000 tweets. Each successful tweet returned = 1 result. Error rows (resolve_failed, empty_timeline, exception) are not billed.

Other Sosmed Actors

PlatformActorBest for
Twitter / XX Account ScraperProfile metadata + counters for any handle
Twitter / XX Post Detail ScraperFull single-tweet detail + replies tree
Twitter / XX Search ScraperSearch tweets by keyword, hashtag, or query
BlueskyBluesky Account Posts ScraperRecent posts from any Bluesky handle
ThreadsThreads Account Threads ScraperRecent threads from any Threads account
InstagramInstagram Account Posts ScraperRecent posts (media + captions) for any IG account
MastodonMastodon Account ScraperProfile + recent toots for any Mastodon handle

Browse the full catalog at apify.com/xtracto.

Notes

  • Protected / private accounts return one row with _error: "empty_timeline" and no tweets β€” anonymous access cannot see follower-only content.
  • Long tweets (>280 characters, X Premium long-form) are returned with the full body in full_text; the rich-text shape (with bold/italic spans and inline-media references) is preserved under note_tweet for callers that need it.
  • Pinned tweets appear first when present; chronological order of the remaining timeline is approximate.
  • Pagination via the next-page cursor is followed automatically until maxTweets is reached or the timeline ends. Anonymous reads are typically capped near ~100 tweets per account before X stops returning a usable cursor.
  • Media tweets carry the full extended_entities.media array verbatim (image URLs, video variants with bitrate, durations, sizes).
  • For large jobs (>50 handles), enable Apify Proxy rotation to avoid per-IP rate limits.

You might also like

X (Twitter) Profiles & Tweets Scraper

scrapers_lat/x-twitter-scraper

Extract public X (Twitter) tweets by tweet ID: text, author, likes, replies, media and timestamps.

2

5.0

X (Twitter) User Tweets Scraper by Username β€” Cookieless

seemuapps/x-user-tweets-by-username

Scrape the full timeline of any public X (Twitter) account by username β€” recent tweets, replies, retweets, and quotes with full engagement metrics. No cookies, no login.

Twitter X Tweets Scraper

scraperx/Twitter-X-Tweets-Scraper-Scraper

🐦 Twitter X Tweets Scraper pulls public tweets by keyword, hashtag, or handleβ€”capturing text, timestamps, likes, retweets, replies, links & media. πŸ“Š Export CSV/JSON. πŸ”Ž Ideal for social listening, brand monitoring, competitor insights & trend research. πŸš€

Twitter/X Profile Scraper - Tweets, Likes & Media

thirdwatch/twitter-scraper

Scrape public tweets from any Twitter/X profile. Extracts tweet text, likes, retweets, replies, posted date, and media URLs. No login or API key needed.

X (Twitter) Profile & Tweets Scraper

scrapers_lat/x-profile-scraper

Extract public X (Twitter) profiles by handle: bio, followers, following, tweet count, location, join date, avatar and recent tweets with likes, replies, retweets and quotes.