X (Twitter) Profile & Post Scraper – Bio, Followers, Posts
Under maintenancePricing
$1.50 / 1,000 result scrapeds
X (Twitter) Profile & Post Scraper – Bio, Followers, Posts
Under maintenanceX (Twitter) Scraper for public profiles and posts without login or API key: bio, follower/following/post counts, avatar, banner, plus the latest posts X shows (likes, reposts, replies, views) and single posts with visible replies. Pay per result; failed sources are free error rows.
Pricing
$1.50 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Ani Björkström
Maintained by CommunityActor stats
1
Bookmarked
79
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
X (Twitter) Profile & Post Scraper – Bio, Followers, Latest Posts
X (Twitter) Scraper for public profiles and posts, with no X account, no login and no developer API key. Give it usernames, profile URLs or post URLs and get clean JSON rows: profile bio, follower and following counts, post count, avatar and banner, plus the latest posts X shows publicly, with likes, reposts, replies, quotes, bookmarks and views. You pay only for rows delivered. Sources that fail produce a free error row explaining why.
What this X (Twitter) Scraper does today
X (formerly Twitter) shows logged-out visitors less than it used to. This scraper only claims what works without a login right now:
| Source | Example | What you get |
|---|---|---|
| Profile | https://x.com/NASA or NASA in usernames | 1 profile row + the latest posts X shows on the public profile (typically about 5, including a pinned post) |
| Single post | https://x.com/paulg/status/2106663759221543263 | The post + the replies X displays under it to logged-out visitors |
| Search / hashtag | searchQueries, https://x.com/hashtag/AI | Needs an X login. You get a free error row, not tweets |
| Followers / following / lists / likes | https://x.com/NASA/followers | Needs an X login. You get a free error row |
x.com and twitter.com links both work. /with_replies profile URLs are treated as profiles.
Output fields
Profile rows (type: "profile")
| Field | Description |
|---|---|
userId, username, name | X account ID, handle and display name |
bio, location, website | Profile text, with t.co links expanded |
followerCount, followingCount, tweetCount | Public counters |
verified, blueVerified, isPrivate | Account flags |
createdAt | Account creation date (ISO 8601, UTC) |
avatarUrl, bannerUrl, profileUrl | Images and the canonical x.com URL |
Post rows (type: "tweet")
| Field | Description |
|---|---|
tweetId, tweetUrl, text, createdAt, language | The post itself; long posts include their full text |
likeCount, retweetCount, replyCount, quoteCount, bookmarkCount, viewCount | Engagement |
isReply, inReplyToTweetId, inReplyToUser, isQuote, quotedTweet | Thread and quote context |
media, urls, hashtags, mentions | Photo and video URLs, expanded links, entities |
author | username, name, blueVerified, followersCount, followingCount, avatarUrl, userId |
scrapedAt | When the row was collected |
Error rows (type: "error") contain source, sourceType and a plain-English error. They are not charged.
Input
| Parameter | Description | Default |
|---|---|---|
directUrls | Profile URLs or post URLs | [{"url": "https://x.com/elonmusk"}] (demo, ignored when you pass usernames or searchQueries) |
usernames | Handles, with or without @ | [] |
searchQueries | Kept for compatibility. X requires login for search, so each query returns an error row | [] |
resultsLimit | Maximum total rows (profiles + posts) per run | 100 |
tweetsPerSource | Maximum posts per profile | 50 (X usually shows fewer logged-out) |
includeReplies | Keep reply posts from profiles | false |
minLikes, minRetweets, minViews, postedAfter, postedBefore, excludeReplies, excludeRetweets | Post filters | off |
proxyConfiguration | Optional proxy. Residential is used automatically when available | auto |
Example: several profiles
{"usernames": ["NASA", "OpenAI", "paulg"],"resultsLimit": 50}
Example: a post and its visible replies
{"directUrls": [{ "url": "https://x.com/paulg/status/2106663759221543263" }]}
Use cases
- Marketing & growth teams – track follower counts and the latest posts of competitors and partners every day
- Influencer research – vet creators by bio, audience size and engagement on recent posts
- PR & comms – monitor what executives and brands posted most recently
- Investors & analysts – log official company and founder accounts on a schedule
- AI / RAG builders – feed fresh profile and post data into agents and LLM pipelines (flat JSON, MCP-ready)
- Researchers – build longitudinal datasets of public account statistics
Pricing
Pay per event: you are charged per profile or post row delivered. Error rows are free. If a run delivers nothing, it ends as FAILED with the reason, so an empty run never looks successful. The current per-result price is shown on the Pricing tab.
Integrations
Use the Apify API, scheduled runs, webhooks, n8n, Make, Zapier, or the Apify MCP server for AI agents.
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("nourishing_courier/x-scraper-pro").call(run_input={"usernames": ["NASA"]})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["type"], item.get("username") or item.get("text"))
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<APIFY_TOKEN>' });const run = await client.actor('nourishing_courier/x-scraper-pro').call({ usernames: ['NASA'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
curl
curl -X POST "https://api.apify.com/v2/acts/nourishing_courier~x-scraper-pro/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" -d '{"usernames":["NASA"]}'
Limits & fair use
- Logged-out view only. Profiles return about 5 latest posts, not the full timeline. Search, hashtags, followers, following, lists and likes need an X login, which this scraper does not use.
- X can block individual IPs. A blocked or non-existent account becomes a free error row, and the run continues with the next source.
- Only public data is collected. Respect X's terms and privacy law (e.g. GDPR) when you store or process personal data.
FAQ
Can I scrape X (Twitter) without login?
Yes, for public profiles and individual posts. Search, hashtags, followers and lists require login on X today, so they return an error row.
How many tweets do I get per profile?
As many as X shows logged-out visitors, which is typically about 5 recent posts (including a pinned post). For a deeper history, run the scraper on a schedule and collect posts over time.
Can I scrape X search results or hashtags?
Not without login. X redirects logged-out search and hashtag pages to its sign-in screen. Each query returns a free error row explaining this.
Can I get a user's followers list?
No. Follower and following pages require login. Follower and following counts are included in every profile row.
What happens if an account does not exist?
You get a free error row for that source and the run continues. If no source delivers anything, the run fails with a clear status message.
Does it work with n8n, Make or Zapier?
Yes. Use the Apify integration in those tools or call the API endpoint above.
Do I need an X API key or proxies?
No API key. Residential proxy is used automatically when your Apify plan has it. You can also set your own proxy.
What format is the output?
Flat JSON rows that you can export as JSON, CSV, Excel or XML from Apify.