Twitter (X) Tweets Profiles Scraper
Pricing
from $3.99 / 1,000 results
Twitter (X) Tweets Profiles Scraper
Twitter (X) Tweets Profiles Scraper extracts tweets, user profiles, bios, follower counts, engagement metrics, timestamps, hashtags, and other public data. Automate social media research, competitor monitoring, audience analysis, influencer discovery, and lead generation.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperForge
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Twitter (X) Tweets Profiles Scraper — Tweets by Profile or Keyword, with Full User Data
Scrape tweets from X (Twitter) by profile or keyword. Paste profile URLs, @usernames or plain search terms — mixed freely in one run — and get each tweet with its text, timestamp, direct URL, likes, replies, retweets and quotes, media, links, and the complete author profile attached to every row.
Include or exclude replies, toggle profile data, and let the proxy chain escalate automatically when X pushes back.
What is Twitter (X) Tweets Profiles Scraper?
Most X scrapers make you choose: profile mode or search mode. This one takes both in the same input field and works out what each line is.
A line that looks like a profile URL or handle is read as a timeline; anything else is treated as a keyword search. That means a single run can cover the three accounts you monitor and the two topics you track, without splitting it into separate jobs.
Every tweet carries a full user object — bio, location, website, join date, follower and following counts, total tweets, total likes and media count — so engagement-rate analysis needs no second lookup.
What data can you extract?
Tweet
| Field | Description |
|---|---|
id | Tweet ID |
url | Direct link to the tweet |
text | Tweet text |
timestamp | Publication time |
username, fullname | Author handle and display name |
verified | Verification status |
links | Links contained in the tweet |
media | Attached images and video |
likes, replies, retweets, quotes | Engagement counts |
isPinned, isQuote, isRetweet, isReply | Content-type flags |
tweetUserId | Author's user ID |
user — the full author profile
username, userFullName, userId, avatar, description (bio), location, website, url, joinDate, verified, totalFollowers, totalFollowing, totalTweets, totalLikes, totalMediaCount.
Why teams scrape X tweets and profiles
For social listening
Keyword lines let you monitor topics, not just accounts — brand mentions, product complaints, competitor launches — and every match arrives with the author's follower count so you can triage by reach immediately.
For influencer research
totalFollowers and totalTweets sit in the same row as likes and retweets, so engagement rate is a single division rather than a join across two datasets.
For competitor monitoring
Track rival accounts and the keywords they care about in one run, then compare cadence and engagement.
For lead generation
Author bios, locations and websites are in every row. Filtering a keyword search by bio keywords is a fast route to qualified prospects.
For content research
The isRetweet, isQuote and isReply flags let you separate original content from amplification — essential when studying what an account actually produces.
For journalism and research
Timestamped, permalinked posts with author context make a citable dataset.
How to scrape X step by step
- Open the Actor and add your targets — one per line. Profile URLs,
@usernamesand keywords can all be mixed. - Set Maximum Tweets per Target (1–100).
- Decide whether to Include Replies and Include User Information.
- Click Start, then export the Output tab as JSON (recommended) or CSV.
⬇️ Input
Example input
{"startUrls": ["https://x.com/elonmusk","mrbeast","ai tools"],"maxTweets": 50,"withReplies": true,"includeUserInfo": true}
Input reference
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — (required) | One target per line. Profile URLs (https://x.com/username), usernames (username or @username), or keywords/topics (crypto, ai tools). Profiles and keywords can be mixed in one run. |
maxTweets | integer | 10 | Tweets to collect per target, from 1 to 100. |
withReplies | boolean | true | Include reply tweets. Turn off to collect only main tweets. |
includeUserInfo | boolean | true | Attach the detailed profile object to each tweet. |
proxyConfiguration | object | off | Optional. Auto-fallback: datacenter first, then residential if blocked. Use residential for stricter blocking. |
⬆️ Output
Example output (trimmed)
{"id": "1789012345678901234","url": "https://x.com/exampleuser/status/1789012345678901234","username": "@exampleuser","fullname": "Example User","verified": true,"timestamp": "2026-08-04T14:22:31.000Z","text": "Shipped a big update today. Full changelog in the replies 👇","links": ["https://example.com/changelog"],"likes": 18420,"replies": 612,"retweets": 2140,"quotes": 184,"isPinned": false,"isQuote": false,"isRetweet": false,"isReply": false,"media": [],"tweetUserId": "44196397","user": {"username": "exampleuser","userFullName": "Example User","userId": "44196397","avatar": "https://pbs.twimg.com/profile_images/…","description": "Building things on the internet.","location": "Berlin, Germany","website": "https://example.com","joinDate": "Tue Mar 21 20:50:14 +0000 2017","verified": true,"totalFollowers": 482100,"totalFollowing": 913,"totalTweets": 26410,"totalLikes": 19430,"totalMediaCount": 1204}}
Illustrative values — a live run returns current X data.
Usage recipes
Monitor accounts and topics together
{"startUrls": ["yourcompetitor","https://x.com/industrypublication","your brand name","your product category"],"maxTweets": 100}
One run, four data sources, one dataset.
Original content only
{"startUrls": ["yourcompetitor"],"maxTweets": 100,"withReplies": false}
Then filter the export for rows where isRetweet and isQuote are both false.
Compute engagement rate
Divide likes by user.totalFollowers directly in your export — both values are already in the same row.
Find prospects by bio
Run a keyword search, then filter user.description for the role or industry you sell to, and user.location for your territory.
Lightweight, high-volume pass
{"startUrls": ["topic one", "topic two", "topic three"],"maxTweets": 100,"includeUserInfo": false}
Turning off user info produces smaller rows when you only need tweet text and engagement.
How does this compare to X's official API?
X's official API is now a paid, tiered product. The free tier is effectively write-only for most purposes, and meaningful read access — timelines and search at any useful volume — sits behind Basic, Pro or Enterprise pricing with monthly post caps.
This Actor reads publicly visible timelines and search results without an API key or subscription. If you need X's official guarantees, SLAs and full-archive search, the paid API is the right route. For research and monitoring at ordinary volumes, this is the practical alternative.
Integrate and automate
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperforge/twitter-x-tweets-profiles-scraper").call(run_input={"startUrls": ["elonmusk", "ai tools"],"maxTweets": 50,})for t in client.dataset(run["defaultDatasetId"]).iterate_items():followers = (t.get("user") or {}).get("totalFollowers")print(t["username"], "|", t["likes"], "likes /", followers, "followers |", t["text"][:60])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperforge/twitter-x-tweets-profiles-scraper').call({startUrls: ['elonmusk'],maxTweets: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
REST API
curl -X POST "https://api.apify.com/v2/acts/scraperforge~twitter-x-tweets-profiles-scraper/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"startUrls":["elonmusk"],"maxTweets":50}'
n8n, Make, Zapier and AI agents
Call the Actor from n8n, Make, Zapier or an MCP-capable agent — for example, an agent that watches a keyword and summarises high-reach mentions daily.
Schedules and webhooks
Attach a Schedule for continuous monitoring and deduplicate on id, then use webhooks or the Google Sheets / Airtable / Slack integrations to route results.
Pricing and what you are charged for
Pay-per-event: a small Actor-start charge plus a charge per tweet row delivered. maxTweets multiplied by the number of targets is your ceiling.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run. If the run escalates to residential proxies, that traffic is billed separately by the platform.
Limits, reliability and blocking
- Maximum 100 tweets per target. For deeper history, use several targets or run repeatedly.
maxTweetsis per target, so five targets at 100 each can return up to 500 rows.- Public profiles only. Protected accounts are not accessible.
- X limits timeline and search depth, so very old posts may be unreachable regardless of your limit.
- Engagement counts are point-in-time and change constantly — timestamp runs for trend work.
- Media URLs expire — they point at X's CDN.
- Turning off
includeUserInforemoves theuserobject, which also removes your ability to compute engagement rate. Keep it on unless row size matters. - Keyword lines return search results, which X ranks and filters — they are not an exhaustive archive of every matching post.
- Default run options are 4 GB memory and a 1-hour timeout.
Is it legal to scrape X (Twitter)?
This Actor collects only publicly available X content — the same posts and profiles any visitor can see without logging in. It does not log in, post, follow, or access private data or direct messages.
Posts and media remain the property of their authors, and handles, bios, locations and avatars are personal data. Ensure your use complies with X's terms, copyright, and GDPR or comparable regulations, and do not use scraped profile data for unsolicited bulk messaging.
❓ Frequently asked questions
Do I need an X API key or paid subscription?
No. The Actor reads public timelines and search results without a developer account.
Can I mix profiles and keywords in one run?
Yes — that is the main design feature. Each line is detected independently.
How many tweets can I get per target?
Up to 100. Add more targets or run repeatedly for greater volume.
Do I get the author's follower count?
Yes, in the user object on every row — provided includeUserInfo is on.
How do I exclude retweets?
Turn withReplies off to drop replies, then filter the export on isRetweet and isQuote for genuinely original content.
Can I scrape protected accounts?
No. Only public profiles are accessible.
Why do keyword searches return fewer results than expected?
X ranks and filters search results; they are not a complete archive. Use several keyword variations for broader coverage.
Do I need a proxy?
Not for small runs. Enable Apify Proxy for larger or repeated jobs — the Actor falls back from datacenter to residential automatically.
Which export format should I use?
JSON — user, media and links are nested. CSV works if you only need tweet text and counts.
🔗 Related scrapers
- X Posts Search Scraper — search-focused, with full X search-operator support.
- Twitter Profile Scraper — profile-level data without the tweets.
- X (Twitter) Posts Scraper — deeper timeline extraction per profile.
- Truth Social Scraper — the same monitoring approach on another platform.
Browse the full collection on the ScraperForge profile.
💬 Feedback
Need higher per-target limits, extra fields, or a custom X monitoring pipeline? Open an issue on the Issues tab of this Actor.