X / Twitter Post Scraper
Pricing
from $0.50 / 1,000 tweets
X / Twitter Post Scraper
Scrape public X (Twitter) posts and profiles by URL, no login or API key. Get tweet text, likes, reposts, replies, quotes, views, photos, videos (MP4), quoted posts, top replies, and author followers. Profiles include bio, counts and latest posts. Export JSON, CSV, Excel.
Pricing
from $0.50 / 1,000 tweets
Rating
0.0
(0)
Developer
Coder
Maintained by CommunityActor stats
0
Bookmarked
60
Total users
24
Monthly active users
16 days ago
Last modified
Categories
Share
Scrape public X (Twitter) posts and profiles into clean JSON, CSV or Excel. Paste tweet links or profile handles and get the full post text, likes, reposts, replies, quotes, bookmarks, views, photos and videos (with direct MP4 links), quoted posts, top replies and author details. No X account, no login and no API key needed.
Use it for social listening, brand and competitor monitoring, influencer research, academic research, content archiving and analytics pipelines.
What you get
| Input | You get |
|---|---|
| Post URL | The post, plus (optionally) the top replies X shows publicly under it |
| Profile URL or @handle | One result: the full public profile, with the pinned post and the latest posts X shows publicly (usually about 5) included as recent_posts |
Every post includes:
| Section | Fields |
|---|---|
| Post | ID, URL, type (tweet, reply, quote, media, link), full text (long posts are not cut off), language, date |
metrics | Likes, reposts, replies, quotes, bookmarks, views |
author | ID, handle, name, avatar, verified, badge, followers, following, post count, protected |
media | Photos, videos and GIFs with size, duration, alt text and a direct video_url (best-quality MP4) |
quoted_post | The quoted post's text, author, metrics and media |
reply_to | The post and account this is replying to |
entities | Hashtags, mentions, expanded links |
context | Reply, quote, edited, edit history, sensitive-media flags |
authorProfile | Optional: bio, website, location, join date, banner, full counts (not added to replies) |
Every row has a type (post or profile), and each post has a relation: post (a link you entered) or reply. source is the input link the row came from. Profile rows carry recent_posts, each with text, date, metrics, media and is_pinned.
Results stream into the dataset while the run is going.
Input
| Field | Description |
|---|---|
| Post URLs | x.com / twitter.com / mobile.twitter.com status links, x.com/i/web/status/... links, or bare post IDs |
| Profile URLs | https://x.com/username, @username or username |
| Include top replies | Also save the top replies under each post (off by default) |
| Flatten output | On: compact records. Off: detailed records with every video quality, display text and link card details |
| Include full author profile | Attach the author's full profile (bio, website, location, join date, banner) to every post. Each author is looked up once per run |
Example input
{"postUrls": [{ "url": "https://x.com/elonmusk/status/2067438979667140620" },{ "url": "https://x.com/hackernoon/status/2066573502832906644" }],"profileUrls": ["@nasa"],"includeReplies": true,"flattenOutput": true,"includeAuthorProfile": false}
Example output (post)
{"type": "post","relation": "post","source": "https://x.com/jack/status/20","id": "20","url": "https://x.com/jack/status/20","post_type": "tweet","text": "just setting up my twttr","lang": "en","created_at": "Tue Mar 21 20:50:14 +0000 2006","author": {"id": "12","username": "jack","name": "jack","verified": true,"followers": 12313353,"following": 3,"posts_count": 30997,"protected": false},"metrics": {"likes": 308385,"retweets": 124617,"replies": 18062,"bookmarks": 21707,"quotes": 7224,"views": null},"media": [],"quoted_post": null,"reply_to": null}
Example output (profile)
{"type": "profile","source": "@nasa","id": "11348282","username": "NASA","name": "NASA","url": "https://x.com/NASA","bio": "Making the seemingly impossible, possible. ✨","location": "Pale Blue Dot","created_at": "Wed Dec 19 20:20:32 +0000 2007","verified": true,"website": {"expanded": "http://www.nasa.gov/","display": "nasa.gov"},"counts": {"followers": 92375072,"following": 115,"posts": 74334},"recent_posts": [{"id": "2103610284464316469","url": "https://x.com/NASA/status/2103610284464316469","is_pinned": false,"post_type": "media","text": "With @BoeingSpace, we’ll provide an update on Starliner development and plans for regular crew flights to and from the @Space_Station. Watch live Monday, Sept. 28 at 3pm ET: https://t.co/bxg2gpZzog https://t.co/OJaD49OyHh","created_at": "Fri Sep 25 22:19:09 +0000 2026","metrics": {"likes": 2463,"retweets": 312,"replies": 119,"bookmarks": 103,"quotes": 44,"views": 559374}}]}
recent_posts holds the pinned post and the latest posts X shows publicly (usually about 5); one is shown here. Each also has media, entities, link_preview, quoted_post and reply_to.
The Overview tab shows the main columns (type, link, text, date, author, likes, reposts, replies, views); All fields shows everything.
Pricing
Pay-per-event. You pay only for results saved to your dataset:
| Event | When |
|---|---|
| Result | Each post or profile row saved to the dataset. A profile's recent_posts are included in its one result |
| Author profile | Each unique author whose full profile is attached, only when Include full author profile is on and only once per author per run |
Links that fail (deleted posts, wrong links, private accounts) are never charged. They are named in the run log instead. The run also stops cleanly when it reaches your maximum charge limit, so you never pay for more than you allowed.
See the Pricing tab for current rates.
Free plan
Free Apify plans can scrape up to 5 links per run (post and profile links combined), with every feature available. Paid plans have no cap.
Limits
- Public data only: what X shows to a visitor who is not logged in. Protected accounts and deleted posts are skipped.
- Replies: only the top replies X shows publicly under a post (usually up to 3), not the full thread.
- Profile posts: only the pinned post and latest posts X shows publicly on the profile (usually about 5), not the full history. Need a profile post as its own row with replies? Add its link to Post URLs.
- Views are missing on very old posts, because X did not count them back then.
- Counts change constantly. Schedule the Actor to track them over time.
You are responsible for using collected data in line with applicable laws and X's terms of service.
FAQ
Do I need an X account or API key? No.
Can I scrape a whole profile or search results? This Actor returns what X shows publicly without logging in: a profile with its pinned and latest posts, and a post with its top replies.
Why did a link fail? The post was deleted, the account is private or suspended, or the link is not a post or profile link. The run log names each failed link, and failed links are not charged.
Will one post be saved twice? No. A post that is both a reply and an input link is saved once, under your input link.
Can I get the video file? Yes: media[].video_url is the best-quality MP4. Turn Flatten output off to get every quality.