Scrapers.lat logo scrapers.lat
Social media

X (Twitter) Tweets & Profiles Scraper

Scrape public X (Twitter) tweets and profiles by handle or tweet ID. Extract text, author, likes, retweets, replies, quotes, views, followers, bio, hashtags and media. No login needed. Export to JSON, CSV or Excel.

25 fields per record JSON · CSV · Excel · API Pay per use
x-twitter-scraper.json 200 OK
{
  "id": "2080777261897175496",
  "url": "https://x.com/NASA/status/2080777261897175496",
  "text": "RT @NASASpox: The future of flight looks brigh…",
  "author": {"handle":"NASA","name":"NASA","verified":tr…,
  "createdAt": "Fri Jul 24 22:08:52 +0000 2026",
  "conversationId": "2080777261897175496",
  "likeCount": 0,
  "retweetCount": 39,
  "replyCount": 0
}
What you get

Every run returns clean, typed records, ready for your CRM, spreadsheet or database.

  • One clean record per result, deduped and normalized
  • Stable schema in JSON, CSV or Excel, or read it via the Apify API
  • Pay per use in the cloud, nothing to install or maintain
Fields it returns
IdUrlTextAuthorCreated AtConversation IdLike CountRetweet CountReply CountQuote CountBookmark CountView CountLangIs Reply
Sample output

A real example record, exactly the shape you receive.

IdUrlTextAuthor
2080777261897175496https://x.com/NASA/status/2080777…RT @NASASpox: The future of fligh…{"handle":"NASA","name":"NASA","v…
2080659774136291424https://x.com/NASA/status/2080659…There is more than meets the eye …{"handle":"NASA","name":"NASA","v…
2080659777625997672https://x.com/NASA/status/2080659…Scientists still have a lot to le…{"handle":"NASA","name":"NASA","v…
2080330036607893817https://x.com/NASA/status/2080330…During his eight months aboard th…{"handle":"NASA","name":"NASA","v…
2080033755519947170https://x.com/NASA/status/2080033…RT @NASAJohnson: Up, up, and away…{"handle":"NASA","name":"NASA","v…
GET /x-twitter-scraper
{
  "id": "2080777261897175496",
  "url": "https://x.com/NASA/status/2080777261897175496",
  "text": "RT @NASASpox: The future of flight looks brigh…",
  "author": {"handle":"NASA","name":"NASA","verified":tr…,
  "createdAt": "Fri Jul 24 22:08:52 +0000 2026",
  "conversationId": "2080777261897175496",
  "likeCount": 0,
  "retweetCount": 39,
  "replyCount": 0
}

Frequently asked questions

Can it search X by keyword?

No. X disabled search for logged-out users. Because the actor uses public, no-login access only, keyword search is not available. The Search mode exists in the input for clarity but returns an explicit `SEARCH_NOT_AVAILABLE` error rather than empty or fabricated results. To collect posts about a topic, pull the timelines of the relevant accounts via **User Tweets**.

Do I need to log in or supply a token?

No. It uses the same public, logged-out access the website gives visitors who aren't signed in to view profiles and timelines. It only ever sees public data.

Why does it use a residential proxy?

A residential US proxy is enabled by default so runs work reliably with no setup on your part. Residential traffic is metered per GB.

What happens for a deleted, suspended or protected account/tweet?

You still get a record with the `error` field explaining it's unavailable, so a gap is a usable signal rather than a silent miss.

Which engagement numbers are included?

Likes, retweets, replies, quotes, bookmarks and views all come straight from X. Any metric X doesn't expose for a given tweet is left `null`.

Does it capture full text for long posts and quoted tweets?

Yes. For posts over 280 characters the actor reads X's longform note-tweet body, so `text` and `noteTweet` carry the complete untruncated content. When a post quotes another tweet, the quoted post is included as `quotedTweet` with its `id`, `text` and `author`.

Ready when you are.

Run the scraper live on Apify right now, or have us build one tailored to exactly what you need.