X (Twitter) Profile Tweet Scraper avatar

X (Twitter) Profile Tweet Scraper

Pricing

from $2.00 / 1,000 tweet scrapeds

Go to Apify Store
X (Twitter) Profile Tweet Scraper

X (Twitter) Profile Tweet Scraper

Scrape any public X/Twitter account's tweet timeline - text, engagement stats, media, and author info. Give it a handle, @handle, or profile URL. No login, cookies, or session tokens required.

Pricing

from $2.00 / 1,000 tweet scrapeds

Rating

0.0

(0)

Developer

MrDoe

MrDoe

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

X (Twitter) Profile Tweet Scraper

X (Twitter) Profile Tweet Scraper

Scrape any public X/Twitter account's tweet timeline — full text, likes, retweets, replies, quotes, view counts, media, and author details. Give it a handle, an @handle, or a profile URL and get one clean row per tweet. No login, no cookies, no session tokens, no account needed.

This Actor is a Twitter/X scraper, a tweet exporter, and a profile timeline downloader rolled into one.

At a glance

  • Input: one or more X/Twitter usernames, @handles, or profile URLs.
  • Output: one row per tweet — text, engagement stats, media links, posted date, and author info.
  • Retweets: automatically resolved to the original tweet's own content, flagged isRetweet.
  • Login: none required — no account, no cookies, no session tokens.
  • Runs on: the Apify platform — schedule it, call it via API, or wire it into Make/Zapier/Google Sheets.

What does the X (Twitter) Profile Tweet Scraper do?

Give it a username (or several) and it returns that account's public tweet timeline — original tweets, retweets, replies, and quote tweets — paginated back through the account's history up to your maxResults. Every tweet is returned as one clean, spreadsheet-ready row.

Everything visible on a tweet becomes a dataset field

Everything visible on a tweet becomes a dataset field:

On the tweetDataset field
NASA · verified badgeauthor.username, author.displayName, author.isVerified
The tweet texttext
Photo / videoimageUrls, videoUrl
153 replies · 310 retweets · 3,472 likes · 952,801 viewsreplyCount, retweetCount, likesCount, viewCount
"Sep 11, 2026"postedAt (YYYY-MM-DD HH:mm, UTC)
The permalinkurl, id

Why use this X/Twitter scraper?

  • Scrape any public account's timeline — one username in, that account's tweets out, fully paginated.
  • Real engagement numbers — likes, retweets, replies, quotes, and view counts as actual numbers, not placeholders.
  • Retweets handled correctly — a retweet is returned as the original tweet's real text, media, and counts, with isRetweet: true and retweetedBy telling you who shared it. No garbled "RT @..." text with empty stats.
  • Media links included — image URLs and the direct video file link for tweets that have them.
  • No login — no account, no cookies, nothing to connect and nothing to get banned.
  • Standard exports — JSON, CSV, Excel, XML, or the Apify API.

What makes this Actor different?

Most Twitter/X scrapers either need your own login cookies (risky, and against X's rules, and your account can get suspended for it) or return raw, jargon-named fields straight off the wire. This one runs fully logged-out, resolves retweets to their original content automatically, and returns clean, consistently-typed fields — real numbers for counts, a readable UTC timestamp, and working media URLs — ready to drop into a spreadsheet or database.

How it works

How the X Profile Tweet Scraper works

  1. Your input — one or more usernames, @handles, or profile URLs.
  2. The Actor collects the data — it handles everything between your input and clean results: no login, anti-bot handling, rate limiting, rotating identities over residential IPs, retries, and paging through to your maxResults.
  3. Output — a dataset row per tweet with full text, engagement stats, media, and author info.

What data you get

FieldDescription
url / idTweet permalink and numeric id
textFull tweet text
postedAtPublish time, YYYY-MM-DD HH:mm (UTC)
likesCountLikes
retweetCountRetweets
replyCountReplies
quoteCountQuote tweets
viewCountView count, when the platform exposes one for that tweet
bookmarkCountBookmarks, when exposed
isRetweettrue if this row is a retweet - text/media/counts are the original tweet's
retweetedByThe scraped account's username, when isRetweet is true
isReplytrue if this tweet is a reply
inReplyToUsernameThe account being replied to, when isReply is true
isQuotetrue if this tweet quotes another tweet
languageDetected tweet language code (e.g. en)
imageUrlsArray of image URLs attached to the tweet
videoUrlDirect link to the tweet's video, at the highest available quality - null if there is no video
authorusername, displayName, isVerified, avatarUrl

Clean, spreadsheet-friendly output fields

Input parameters

ParameterTypeRequiredDefaultDescription
usernamesArrayYesBare handle (nasa), @handle, or full profile URL (https://x.com/nasa). One or more accounts.
maxResultsIntegerNo20Stop after this many tweets per account. Raise it for a fuller export.
proxyConfigurationObjectYesApify ResidentialA residential proxy is strongly recommended - X rate-limits and flags datacenter IPs.
notificationWebhookUrlStringNoOptional Discord/Slack/Zapier/Make webhook URL, pinged with a summary when the run finishes.

Example output

Example dataset row from the X Profile Tweet Scraper

{
"url": "https://x.com/NASA/status/2098520709056065990",
"id": "2098520709056065990",
"text": "On Wednesday, Sept. 16, the four members of Crew-12 will call from the @Space_Station to recap their mission and answer questions from the media.",
"postedAt": "2026-09-11 21:15",
"likesCount": 3472,
"retweetCount": 310,
"replyCount": 153,
"quoteCount": 18,
"viewCount": 952801,
"bookmarkCount": null,
"isRetweet": false,
"retweetedBy": null,
"isReply": false,
"inReplyToUsername": null,
"isQuote": false,
"language": "en",
"imageUrls": ["https://pbs.twimg.com/media/HR9k0dSW4AMngYx.jpg"],
"videoUrl": null,
"author": {
"username": "NASA",
"displayName": "NASA",
"isVerified": true,
"avatarUrl": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_400x400.jpg"
}
}

How to use the X (Twitter) Profile Tweet Scraper

  1. Open the Actor.
  2. Add one or more usernames (bare handle, @handle, or profile URL).
  3. Set maxResults (per account).
  4. Press Start.
  5. Read the rows in the Dataset tab (export JSON / CSV / Excel / XML).

Usage examples

Scrape one account's recent tweets

{ "usernames": ["nasa"], "maxResults": 20 }

Scrape several accounts in one run

{ "usernames": ["nasa", "@BBCBreaking", "https://x.com/elonmusk"], "maxResults": 50 }

A larger export for analysis

{ "usernames": ["nasa"], "maxResults": 500 }

Tips for best results

  • Use a residential proxy. A good residential proxy pool is the single biggest reliability factor. Datacenter IPs get rate-limited fast.
  • maxResults is per username, not per run — 3 usernames at maxResults: 20 can return up to 60 rows.
  • A retweet row is the original tweet. If you only want an account's own tweets, filter out rows where isRetweet is true.
  • For a tweet-history archive, schedule the Actor on the same usernames and append new runs' output over time.
  • Protected/private accounts return no data — their tweets aren't publicly readable, by design.

Limitations

  • Public accounts only. Protected, suspended, or nonexistent accounts return no data for that username.
  • X rate-limits aggressively; the Actor retries and rotates identities automatically, but very large exports go faster with a bigger residential proxy pool.
  • viewCount is null for tweets where the platform doesn't expose a view count (this varies by tweet age and type).
  • A row is a snapshot at collection time; like/retweet/reply counts keep moving after that.
  • This Actor reads public tweet timelines only — it doesn't access DMs, private lists, or protected accounts.

Export formats & integrations

Export the dataset as JSON, CSV, Excel, or XML from the Dataset tab or the Apify API. Connect results to Google Sheets, Make, Zapier, Slack, or your own systems via the API and webhooks, and schedule runs to build a tweet-history archive or a brand-mention monitor.

Frequently asked questions

Do I need an X/Twitter account or login?

No. It works fully logged out — no account, no cookies, no session tokens.

Can I scrape more than one account in a single run?

Yes. Add as many usernames as you like to the usernames array; each gets its own maxResults.

Does it include retweets?

Yes, and they're resolved to the original tweet's real text, media, and engagement counts rather than the empty-stats retweet action itself. Look at isRetweet and retweetedBy to identify and, if you want, filter them out.

Can I download the video from a tweet?

The dataset row includes videoUrl, a direct link to the video file, for tweets that have one. Download it separately with any HTTP client.

Why did a run return nothing for an account?

Usually a datacenter proxy IP being rate-limited, a private/protected account, or a typo'd handle. Switch to a residential proxy and double-check the handle.

What does viewCount: null mean?

The platform doesn't expose a view count for every tweet - it's most consistently available on more recent tweets. null isn't an error.

How many tweets can it collect per account?

As many as maxResults. It pages back through the account's public timeline automatically.

Is this against X's rules?

The Actor only reads publicly available data and doesn't log in or use anyone's account. You are responsible for how you use the data — see below.

Building a social-media data pipeline? These pair well with this Actor:

Support

Found a bug or need another field exposed? Open an issue on the Actor's Issues tab in the Apify Console.

This Actor collects publicly available X (Twitter) data. It does not log in, access private content, or touch any account. You are responsible for how you use the Actor and its output, including compliance with X's Terms of Service, applicable copyright in any media you collect, and the data-protection laws that apply to you (GDPR, CCPA, and others).