X (Twitter) Tweet Scraper by URL - Media & Video, No Login
Pricing
from $1.70 / 1,000 tweet delivereds
X (Twitter) Tweet Scraper by URL - Media & Video, No Login
Get X (Twitter) tweet data by tweet URL or ID: full text, date, likes, replies, hashtags, mentions, expanded links, photos, MP4 video link, quoted tweet and author. A Twitter API alternative with no login, cookies or browser. Bulk links, only-new mode. Deleted or private tweets are free.
Pricing
from $1.70 / 1,000 tweet delivereds
Rating
0.0
(0)
Developer
Scrapewise Data
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
5
Monthly active users
8 hours ago
Last modified
Categories
Share
X (Twitter) Tweet Scraper by URL
Paste a list of X/Twitter post links (or bare tweet ids) and get one clean row per tweet: the full text, the date, likes and replies, hashtags, mentions, expanded links, photos, the direct MP4 link of videos and GIFs, the quoted tweet, the account it replies to, and the author's name, handle, avatar and verified badge.
No X account, no cookies, no browser, no API key. It reads the same public endpoint that renders an embedded post card on any website, so it works as a lightweight Twitter API alternative for tweet lookup by URL. Export the result as JSON, CSV or Excel, or read it from the Apify API.
X tweet scraper pricing at a glance
| Your Apify plan | Price per 1,000 tweets |
|---|---|
| Free | US$ 2.00 |
| Bronze | US$ 1.90 |
| Silver | US$ 1.80 |
| Gold and above | US$ 1.70 |
- 33 fields per row (29 about the tweet and its author, plus
source,scrapedAt,error,errorCode), all in the field reference. - Pay only for tweets delivered. No monthly fee, no start fee. Deleted, private, invalid and duplicate links are free error rows, so a list with dead links never inflates the bill.
- Old tweets work. The first tweet ever, id
20from 2006, comes back complete. x.com,twitter.com,mobile.twitter.com, links with query strings and bare ids are all accepted, and duplicates are removed before anything is charged.onlyNewfor schedules: a daily run over a growing list only delivers, and bills, the tweets it has not delivered before.
What you can do with tweet data
- Enrich a list of tweet links you already have. A spreadsheet of brand mentions, a monitoring export, links collected by a social listening tool or a form: turn each link into text, date, engagement and author.
- Archive and evidence. Keep the exact text, date, media links and author of posts before they are edited or
deleted.
isEditedtells you if X marks the post as edited. - Download media.
mediaUrlshas the photos andvideoUrlthe highest bitrate MP4 of a video or GIF, withvideoDurationMs. - Research and AI datasets. Clean text with language, hashtags, mentions and expanded links, ready for sentiment analysis, classification or an LLM prompt.
- Check a campaign. Paste the links of the posts in a campaign and compare likes and replies across them.
What the X tweet scraper does not do, on purpose
Search, profile timelines, followers, likes lists and the list of replies. On X these need a logged-in account, and this Actor never logs in. It takes post links you already have and turns them into structured rows. If you need keyword search or timelines, this is not the tool.
X tweet scraper input
Three tweets, one of them a twitter.com link with a query string and one a bare id:
{"tweetUrls": ["https://x.com/jack/status/20","https://twitter.com/jack/status/20?s=20","20"]}
The three lines point to the same tweet, so this run delivers and charges one row.
A daily Task over a list that keeps growing, charging only the new tweets:
{ "tweetUrls": ["https://x.com/jack/status/20"], "onlyNew": true }
| Field | What it does |
|---|---|
tweetUrls | Post links or numeric ids, one per line. Also read from urls, startUrls, tweetIds, postUrls or url |
onlyNew | Skip tweets delivered in earlier runs (default off). Also accepts onlyNewTweets |
lang | Language of X's own labels (default en). The tweet text always comes as written |
proxyConfiguration | Off by default; turn Apify Proxy on for lists in the thousands |
An empty input runs the example tweet, so you can see the output before pasting your list.
What data the X tweet scraper returns
One real row (run on 2026-10-15):
{"type": "tweet","id": "20","url": "https://x.com/jack/status/20","text": "just setting up my twttr","createdAt": "2006-03-21T20:50:14+00:00","lang": "en","likeCount": 309441,"replyCount": 18090,"isEdited": false,"hashtags": [],"mentions": [],"links": [],"mediaType": null,"mediaUrls": [],"videoUrl": null,"quotedTweetId": null,"inReplyToUser": null,"authorName": "jack","authorHandle": "jack","authorUrl": "https://x.com/jack","authorAvatarUrl": "https://pbs.twimg.com/profile_images/1661201415899951105/azNjKOSH_normal.jpg","authorVerified": true,"source": "https://x.com/jack/status/20","errorCode": null,"scrapedAt": "2026-10-15T18:17:40.153261+00:00"}
Every row has the same keys, so the CSV and Excel exports keep the same columns from run to run. Fields that a
tweet does not have (no media, no quote, not a reply) are null or an empty list.
Tweet field reference
| Field | What it is |
|---|---|
type | tweet, or error for a free error row |
id, url | Tweet id and its canonical x.com link |
text | Full text of the tweet, HTML entities decoded |
createdAt | Publication date and time, ISO 8601 in UTC |
lang | Language code X detected for the text |
isEdited | X marks the tweet as edited |
possiblySensitive | X marks the media as sensitive (when X sends it) |
likeCount | Likes |
replyCount | Replies in the conversation |
hashtags, mentions | Hashtags without # and mentioned handles without @ |
links | Links in the text, already expanded past t.co |
mediaType | photo, video or animated_gif (first attachment) |
mediaCount | Number of attachments |
mediaUrls | Image link of every attachment (photos, video thumbnails) |
videoUrl, videoDurationMs | Direct MP4 of the highest bitrate variant and its duration |
altText | Accessibility text of the media |
quotedTweetId, quotedTweetText, quotedTweetAuthor | The quoted tweet, when there is one |
inReplyToUser | Handle this tweet replies to |
authorName, authorHandle, authorUrl, authorAvatarUrl | Who posted it |
authorVerified, authorVerifiedType | Verified badge (blue or legacy) and its type, such as Business or Government |
source | The input line that produced the row |
scrapedAt | When the row was collected |
error, errorCode | Empty on a tweet; filled on a free error row |
Retweet, quote and view counts are not in the public embed card, so they are not in the output.
Error rows (never charged)
| errorCode | Meaning |
|---|---|
TWEET_NOT_FOUND | Deleted, private, age-restricted or never existed |
INVALID_URL | The line is not an X/Twitter status link or numeric id |
BLOCKED | X refused every retry for that tweet. Run again, or turn the proxy on |
ITEM_UNREADABLE | One tweet came in a shape this Actor cannot read; only that tweet is lost |
NOT_REACHED | The run timeout arrived before this tweet |
UNEXPECTED | Something unforeseen broke on that tweet; the rest of the run still delivers |
Monitor tweets daily: pay only for tweets you have not received
Turn on onlyNew when the same list comes back every day. The Actor remembers which tweets it already delivered,
in a Key-Value Store named x-tweet-scraper-only-new in your own Apify account, and skips them: not delivered
and not charged. A day with nothing new ends green with the status "No new tweets since the last run" and costs
nothing for results. Delete the store to start over.
Integrations, scheduling and AI agents
Video guides from Apify: how to schedule an Actor and how to connect it to other apps.
- Schedule the input as a Task in Apify schedules, with
onlyNewon, and only new links are billed. - Export as JSON, CSV, Excel, XML or HTML, or read the dataset from the Apify API.
- Connect it to Make, n8n, Zapier, Google Sheets, Slack or a webhook through Apify integrations: for example, a new row in a sheet of links starts a run and the tweet text comes back to the same sheet.
- AI agents: the Actor works as a tool through the Apify MCP server in Claude, ChatGPT, Cursor and other MCP clients, for example "read these 20 tweet links and summarize what people complain about".
- API call:
scrapewise/x-tweet-scraperwith the Apify API or the Python and JavaScript clients.
X tweet scraper FAQ
Does it need my X account or an X API key? No. It reads the public embed endpoint, the same one that renders a tweet card on any website.
Why not the official X API? The official X API needs a developer account, and reading posts is billed by access tier, with very few reads on the free tier. This Actor needs no account or key, charges only for the tweets it delivers, and returns text, likes, replies, media and MP4 links per tweet.
Can it search X or read a profile timeline? No, by design. Search, timelines, followers and reply lists need a logged-in account. This Actor turns the links you already have into rows.
Do deleted or private tweets cost anything?
No. They come back as free TWEET_NOT_FOUND rows.
How much does a list cost? 1,000 tweets cost US$ 2.00 on the Free plan and US$ 1.70 on Gold; 100 tweets cost US$ 0.20 or less. Duplicates and error rows are free.
Does it download videos?
It gives you the direct MP4 link of the highest bitrate variant in videoUrl. Open or download it while it is
fresh; X can rotate media links over time.
Do I need a proxy? Not usually. The proxy is off by default because this endpoint rarely blocks. For lists in the thousands, turn Apify Proxy on to spread the requests over more IPs.
Notes
- Only what X publishes in a public embed card comes out: text, numbers, media and the author's public profile. No e-mail, no phone, nothing behind a login.
- Independent tool, not affiliated with X Corp.
Related scrapers
- Threads Scraper: Threads profile posts, search and hashtags, no login.
- Social Video Downloader: download TikTok, Instagram, Facebook and X videos as files.
- Instagram Comments Scraper: comments from Instagram posts and reels, no login.
- Facebook Page Posts Scraper: Facebook page posts with text, reactions and media.
- Weibo Scraper: Weibo posts, comments, profiles and hot search.
Changelog
- 16 Oct 2026: price per plan (US$ 2.00 Free down to US$ 1.70 Gold and above), field reference for every column, integrations section and input examples on this page.
- 2026-10-04:
onlyNewoption for scheduled runs: tweets delivered in earlier runs are skipped and not charged. - 2026-09-22, 0.1: first release. Tweets by link or id, media and MP4 links, quoted tweet, author, free error rows.