X (Twitter) Posts Scraper avatar

X (Twitter) Posts Scraper

Pricing

$0.40 / 1,000 post scrapeds

Go to Apify Store
X (Twitter) Posts Scraper

X (Twitter) Posts Scraper

Collect public posts from any X (Twitter) account with likes, reposts, replies, quotes, bookmarks and view counts on every row, plus images, videos, hashtags and links. Filter by date, engagement, language or media. No X account or login needed. Export to CSV, Excel, JSON or Sheets.

Pricing

$0.40 / 1,000 post scrapeds

Rating

0.0

(0)

Developer

Kawtar

Kawtar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

4 days ago

Last modified

Share

Collect the public posts of any X (Twitter) account — with likes, reposts, replies, quotes, bookmarks and view counts on every row, plus images, video links, hashtags, mentions and outbound links. Give it a list of accounts and a few filters, and it returns a clean, analysis-ready table. No X account, no login, and no browser extension needed.

What you can do with it

  • Track competitors and category leaders. Pull everything a set of accounts posted this month and see which messages actually travelled.
  • Build a content swipe file. Filter to posts above a view or like threshold and study only the winners.
  • Feed dashboards and reports. Export to CSV, Excel, JSON or Google Sheets, or pull the results straight into your own systems.
  • Monitor announcements. Schedule a daily run over the accounts you care about and collect anything new.
  • Research a topic through the people who own it. Point it at the accounts that matter in your niche and analyse language, cadence and links.
  • Collect media at source. Grab the full-resolution images and the best available video files attached to posts.

What you get

One row per post:

{
"postId": "2082878156483219672",
"url": "https://x.com/OpenAI/status/2082878156483219672",
"text": "We are committed to pushing the model frontier across cost efficiency…",
"createdAt": "2026-07-30T17:17:05.000Z",
"language": "en",
"likes": 19480,
"reposts": 1963,
"replies": 1363,
"quotes": 1841,
"bookmarks": 2686,
"views": 16337771,
"isRepost": false,
"isReply": false,
"isQuote": false,
"isPinned": true,
"hashtags": [],
"mentions": [],
"links": [],
"media": [
{
"type": "photo",
"imageUrl": "https://pbs.twimg.com/media/HOfepUra4AAUEZi.png?format=png&name=orig",
"width": 1632,
"height": 1274
}
],
"postedVia": "Typefully",
"profile": {
"username": "OpenAI",
"displayName": "OpenAI",
"followers": 5086994,
"following": 4,
"postCount": 2048,
"hasSubscriptionBadge": true
},
"scrapedAt": "2026-08-05T21:40:12.884Z"
}

Input

FieldTypeDefaultWhat it does
profilesarray of textRequired. The accounts to collect from. An account name, an @name or a link to the profile all work.
maxPostsPerProfileinteger100How many posts to take from each account, newest first.
postedAftertextKeep only posts published on or after this date (YYYY-MM-DD).
postedBeforetextKeep only posts published on or before this date (YYYY-MM-DD).
minLikesinteger0Skip posts below this like count.
minViewsinteger0Skip posts below this view count.
includeRepostsbooleantrueKeep posts the account reposted. The original is included alongside.
includeRepliesbooleantrueKeep posts that are replies.
onlyWithMediabooleanfalseKeep only posts with an image, video or GIF.
onlyWithLinksbooleanfalseKeep only posts that link out.
languagesarray of textallKeep only these languages, as two-letter codes such as en, es.
includeAuthorProfilebooleantrueAttach the account's follower count and badges to every row.
accountsAtOnceinteger3How many accounts to work through at once.
countryCodeselectusWhich country to browse from.

Output fields

FieldDescription
postId, urlIdentifier and permanent link.
textFull post text. Long posts arrive complete, not cut off.
createdAtPublication time, ISO-8601 UTC.
languageLanguage X detected for the post.
likes, reposts, replies, quotes, bookmarksEngagement at collection time.
viewsHow many times X says the post was seen.
isRepost, isReply, isQuote, isPinnedPost type flags.
repostOf, quotedPostThe original post, when this one repeats or quotes another.
authorThe account that wrote the post.
profileFollower and post counts for the account you asked about.
mediaImages, video files and GIFs, at the best quality available.
hashtags, cashtags, mentions, linksEntities found in the post. Links are the real destinations, not shortened.
postedViaThe app the post was published from.
isLongForm, wasEdited, possiblySensitive, communityNoteExtra context where X publishes it.
unavailable, unavailableReasonSet when an account cannot be collected, so your list keeps its shape.

Pricing

This actor is pay per result. You are charged for each post that lands in your dataset, and for nothing else — no charge for accounts that turn out to be empty, private or missing, and no time-based charge.

A run over 20 accounts at 100 posts each produces about 2,000 rows. Filters are applied before anything is charged, so a run restricted to posts above 10,000 views only bills for the posts that clear the bar.

Limits & what this actor cannot do

  • X publishes a limited window of recent public posts per account, so very large accounts return what X makes available rather than a complete history.
  • Keyword search across all of X is not part of what X publishes openly. This actor works from the accounts you supply rather than a search term.
  • Replies written by other people underneath a post are not publicly available, and neither are the lists of who follows an account. Follower and following counts are included.
  • Protected (private) accounts are not publicly viewable. They are reported as unavailable rather than returned empty, so your input list keeps its shape.
  • Deleted and suspended posts are reported as unavailable rather than silently skipped.
  • Likes, reposts, replies, bookmarks and views are a snapshot at the moment of collection and keep changing afterwards.
  • X publishes view counts for most recent posts but not for every older one. Where X publishes none, views is left empty rather than set to zero. Setting a minimum view count therefore also excludes posts with no published count.
  • Speed depends on the size of the job and on X's own response times.
  • X's terms govern automated access. You are responsible for using the data lawfully, in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

FAQ

Do I need an X account? No. Nothing is required from you beyond the list of accounts you want.

Does it need my login, password or a paid X subscription? No. None of those are used at any point.

Can I schedule it? Yes. Schedule it on Apify to run hourly, daily or weekly and keep collecting new posts as they appear.

Can I get every post an account ever wrote? Not always. X publishes a limited window of recent posts per account. For most accounts that is a deep archive; for very high-volume accounts it stops short of the beginning.

Why is views empty on some older posts? Because X does not publish a view count for them. The field is left empty rather than filled with a zero that would be wrong.

How do I get the results into my tools? Export from Apify as CSV, Excel, JSON, XML or an HTML table, push into Google Sheets, or pull them programmatically into your own system.