X (Twitter) Posts Scraper
Pricing
$0.40 / 1,000 post scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
4 days ago
Last modified
Categories
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
| Field | Type | Default | What it does |
|---|---|---|---|
profiles | array of text | — | Required. The accounts to collect from. An account name, an @name or a link to the profile all work. |
maxPostsPerProfile | integer | 100 | How many posts to take from each account, newest first. |
postedAfter | text | — | Keep only posts published on or after this date (YYYY-MM-DD). |
postedBefore | text | — | Keep only posts published on or before this date (YYYY-MM-DD). |
minLikes | integer | 0 | Skip posts below this like count. |
minViews | integer | 0 | Skip posts below this view count. |
includeReposts | boolean | true | Keep posts the account reposted. The original is included alongside. |
includeReplies | boolean | true | Keep posts that are replies. |
onlyWithMedia | boolean | false | Keep only posts with an image, video or GIF. |
onlyWithLinks | boolean | false | Keep only posts that link out. |
languages | array of text | all | Keep only these languages, as two-letter codes such as en, es. |
includeAuthorProfile | boolean | true | Attach the account's follower count and badges to every row. |
accountsAtOnce | integer | 3 | How many accounts to work through at once. |
countryCode | select | us | Which country to browse from. |
Output fields
| Field | Description |
|---|---|
postId, url | Identifier and permanent link. |
text | Full post text. Long posts arrive complete, not cut off. |
createdAt | Publication time, ISO-8601 UTC. |
language | Language X detected for the post. |
likes, reposts, replies, quotes, bookmarks | Engagement at collection time. |
views | How many times X says the post was seen. |
isRepost, isReply, isQuote, isPinned | Post type flags. |
repostOf, quotedPost | The original post, when this one repeats or quotes another. |
author | The account that wrote the post. |
profile | Follower and post counts for the account you asked about. |
media | Images, video files and GIFs, at the best quality available. |
hashtags, cashtags, mentions, links | Entities found in the post. Links are the real destinations, not shortened. |
postedVia | The app the post was published from. |
isLongForm, wasEdited, possiblySensitive, communityNote | Extra context where X publishes it. |
unavailable, unavailableReason | Set 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,
viewsis 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.