Twitter / X Tweet Scraper - Tweets by Username, URL or ID
Pricing
from $0.40 / 1,000 tweets
Twitter / X Tweet Scraper - Tweets by Username, URL or ID
Bulk Twitter/X tweet extraction by username, tweet URL or tweet ID, with no API key and no login. Get text, media, engagement counts, language and reply or retweet flags. Great for sentiment analysis, brand monitoring and content research. One clean row per tweet, filterable by date.
Pricing
from $0.40 / 1,000 tweets
Rating
5.0
(1)
Developer
Goutam Soni
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
6
Monthly active users
7 hours ago
Last modified
Categories
Share
Twitter / X Tweet Scraper Goat - Bulk Tweet Extraction by Handle or URL
Bulk-scrape tweets from Twitter / X by username, tweet URL, or tweet ID. For every tweet you get a clean ordered row: text, engagement (likes / retweets / replies / quotes / views), media URLs, language, reply / retweet flags, timestamp. No API key, no login, no per-run start fee.
What this Twitter tweet scraper does
For each handle, tweet URL, or tweet ID you provide, the actor returns one normalised tweet row containing text, engagement, media URLs, language, reply / retweet flags, and timestamp. All records share a single ordered schema.
Perfect for content research, sentiment analysis, trend tracking, social-listening pipelines, brand-mention monitoring, and bulk archiving.
Why use this Twitter tweet scraper
- No Twitter / X API key required.
- No login. Public tweets only.
- Two modes in one actor - timeline-by-username AND single-tweet-by-URL.
- Media URLs included - photos, videos (highest-bitrate), animated GIFs.
- Engagement counts - likes, retweets, replies, quotes, views per tweet.
- Residential proxy rotation for reliable runs at scale.
What data you get per tweet
{"ok": true,"username": "exampleco","id": "2061625841298317639","url": "https://twitter.com/exampleco/status/2061625841298317639","text": "Outrageous double-standard!","created_at": "2026-06-02T01:47:00.000Z","lang": "en","is_reply": false,"is_retweet": false,"metrics": {"likes": 130300,"retweets": 15800,"replies": 3100,"quotes": 0,"views": 6300000},"media": [{"type": "photo","url": "https://pbs.twimg.com/media/HJwx5MvW0AASf35.jpg","preview_url": "https://pbs.twimg.com/media/HJwx5MvW0AASf35.jpg","alt": null}],"timelineNewestAt": "2026-06-02T01:47:00.000Z","timelineAgeDays": 0,"timelineStale": false,"timelineRescue": "not_needed"}
Freshness fields
Every row carries the age of the timeline it came from, so old data is never mistaken for current data.
| Field | Meaning |
|---|---|
timelineNewestAt | Timestamp of the newest tweet returned for this handle |
timelineAgeDays | How many days old that newest tweet is |
timelineStale | true when the newest tweet is older than staleAfterDays |
timelineRescue | Outcome of the freshness re-check (below) |
timelineRescue tells you why a timeline looks old, which the age alone cannot:
not_needed- the timeline was already inside the freshness windowfresher- the re-check found newer tweets and they replaced the older onesno_fresher- the re-check completed and found nothing newer, so the account is genuinely quietunavailable- the re-check could not complete, so treat the age as unverified
The practical difference is between a quiet account (no_fresher, the data is correct)
and one whose age could not be confirmed (unavailable, worth retrying).
How to use the Twitter Tweet Scraper
- Click Try for free on the actor page.
- Either enter usernames for timeline mode, or paste tweet URLs / IDs for single-tweet mode (or both).
- Set Max tweets per user (default 20).
- Click Save & Start. Download in JSON, CSV, Excel, XML, or HTML.
Top use cases
- Sentiment / brand monitoring - pull a competitor's last 100 tweets for tone analysis.
- Trend tracking - archive trending-hashtag tweets for downstream NLP.
- Content research - find top-performing tweet formats from a list of creators.
- Archive specific tweets - export by URL list for legal / journalism / research.
- Engagement benchmarking - rank a list of accounts by median tweet performance.
- Media bulk download - pipe
media[].urlinto your download tool.
Pricing
Pay-per-result. No subscription and no per-run start fee. Failed lookups are never billed.
| What you pay for | Price |
|---|---|
| Per tweet returned | $0.002 |
Apify's $5 platform free credit applies on first use.
Integrations
Apify API
$curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=json"
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("goat255/twitter-tweet-scraper").call(run_input={"usernames": ["exampleco"],"maxTweetsPerUser": 50,})for tw in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{tw.get('created_at','')[:10]} ❤ {tw['metrics']['likes']:>7,} {tw['text'][:80]}")
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('goat255/twitter-tweet-scraper').call({tweetUrls: ['https://twitter.com/jack/status/20'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(t => console.log(t.text));
No-code
Send results to Google Sheets, Slack, Zapier, Make, Amazon S3, HubSpot, or any webhook via Apify Integrations.
FAQ
Do I need a Twitter / X API key?
No. Public tweets only, no developer account required.
How many tweets per handle?
Up to about 100 per handle per run, subject to availability.
Can I scrape replies / threads?
Threads (multi-tweet conversations) are surfaced via the parent tweet; pass each reply URL explicitly to fetch the reply tree.
What about protected / private accounts?
Not supported - public accounts only.
Can I export to CSV / Google Sheets / Excel?
Yes - JSON / CSV / Excel / XML / HTML all supported, plus native integrations.
Related Apify actors
- 👤 Twitter / X Profile Scraper - profile metadata only.
- 🐦 Twitter / X Scraper - profile + tweets in one run.
- 📷 Instagram Posts Scraper - bulk Instagram posts.
- 🧵 Threads Post Scraper - Meta Threads posts.
Support
Open an issue on the actor page if a field is missing or a handle stops working. Reviews are read and replied to.
Privacy
To improve our actors we collect anonymized usage telemetry (run stats and input patterns). No personal account data is collected.