X (Twitter) Scraper
Pricing
from $2.50 / 1,000 results
X (Twitter) Scraper
Scrapes public X (Twitter) profiles and tweets: follower, following and post counts, bios, recent tweets with engagement, media, hashtags and links — from profile URLs, handles or tweet IDs.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Anyx Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share

X (Twitter) Scraper
Turn public X (Twitter) profiles and posts into structured data — followers, bios, recent tweets, engagement and media.
The X (Twitter) Scraper reads public X profile pages and individual posts and returns clean JSON: account bios, follower/following/post counts, join dates, plus each account's most recent tweets with like, repost and reply counts, language, media, hashtags, mentions and links. Feed it profile URLs, handles or tweet IDs — no login, no API keys. Built for brand monitoring, influencer research, competitive analysis and social-listening pipelines.
⚡ Quick start
{"startUrls": [{ "url": "https://x.com/vercel" }, { "url": "https://x.com/vercel/status/1683920951807971329" }],"maxItems": 5}
Handles and tweet IDs work without URLs:
{"handles": ["nasa", "@vercel"],"tweetIds": ["1683920951807971329"],"maxItems": 5}
🧩 Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | array | no | — | Public X (Twitter) profile or tweet URLs, e.g. https://x.com/vercel or https://x.com/vercel/status/1683920951807971329. twitter.com links work too. |
handles | array | no | — | Account handles to scrape as profiles, with or without the @. Each handle counts as its own start URL. |
tweetIds | array | no | — | Numeric tweet IDs to scrape individually. Full status URLs are accepted as well. |
maxItems | integer | no | 5 | Maximum number of items (the profile plus its recent tweets) per start URL, handle or tweet ID. |
proxyConfiguration | object | no | { "useApifyProxy": false } | Apify proxy settings used for the run. Public pages load without a proxy by default. |
At least one of startUrls, handles or tweetIds must be provided.
📤 Output
Every dataset item carries an itemType of profile or tweet. A profile URL or handle yields one profile item followed by the account's most recent tweets as tweet items (up to maxItems in total). A tweet URL or ID yields a single tweet item. Missing values are null.
Fields
| Field | Type | Description |
|---|---|---|
itemType | string | profile or tweet. |
id | string | Profile: opaque account ID. Tweet: the numeric tweet ID. |
rest_id | string | Profile only — numeric account ID. |
name | string | Profile only — display name. |
screen_name | string | Profile only — handle without the @. |
description | string | Profile only — bio text. |
location | string | Profile only — free-text location from the bio. |
website | string | Profile only — website link from the bio. |
profile_image_url | string | Profile only — avatar image URL. |
created_at | string | ISO 8601 date the account joined (profile) or the tweet was posted (tweet). |
followers_count | number | Profile only — follower count. |
friends_count | number | Profile only — number of accounts followed. |
statuses_count | number | Profile only — total number of posts. |
url | string | Canonical x.com URL of the profile or tweet. |
text | string | Tweet only — full post text. |
lang | string | Tweet only — ISO language code detected by X. |
reply_count | number | Tweet only — number of replies. |
retweet_count | number | Tweet only — number of reposts. |
favorite_count | number | Tweet only — number of likes. |
view_count | number | Tweet only — view count when X exposes it, otherwise null. |
isReply | boolean | Tweet only — true when the post replies to another post. |
inReplyToId | string | Tweet only — ID of the post being replied to. |
quotedTweetId | string | Tweet only — ID of the quoted post, if any. |
media | array | Tweet only — attached media as { type, url, width, height } where type is photo or video. |
hashtags | array | Tweet only — hashtags without the #. |
mentions | array | Tweet only — mentioned handles without the @. |
urls | array | Tweet only — expanded links in the post. |
user | object | Tweet only — author as { id, name, screen_name, url, profile_image_url, verified }. |
💡 Use cases
- Brand and competitor monitoring — track follower growth and what competitor accounts post, on a schedule.
- Influencer research — pull bios, audience size and recent engagement for a list of handles in one run.
- Social listening — archive specific posts with their like, repost and reply counts as they evolve.
- Content analytics — collect an account's recent tweets with media, links and hashtags for reporting.
- Lead enrichment — attach website, location and audience size to a list of X handles.
❓ FAQ
- Does it need an X account or API key? No. It reads only what X serves publicly to logged-out visitors.
- Can it scrape a full timeline, search results or hashtags? No. X shows logged-out visitors a profile's roughly 20 most recent posts; search, hashtag pages, replies, likes and followers lists require a login and are not supported.
- Why does a profile return fewer tweets than
maxItems?maxItemscovers the profile item plus its recent tweets, and X exposes at most ~20 recent posts per account publicly. Protected (private), suspended and post-less accounts have no public timeline and return no items. - Why is
view_countoftennull? X exposes view counts only on some server-rendered pages; when they are not available the field isnullrather than a guess. - Which URLs are supported?
https://x.com/<handle>(alsotwitter.com) andhttps://x.com/<handle>/status/<id>. Anything else is rejected at start. - Do I need a proxy? Not by default. If runs start failing with blocked responses, enable Apify Proxy in
proxyConfiguration.
🔗 More scrapers by Anyx
- Bluesky Scraper
- Threads Scraper
- Reddit Scraper
- TikTok Trending Hashtags Scraper
- YouTube Channel Scraper
🤝 Anyx Solutions
We build custom scrapers and data-extraction pipelines.
- Email: tantosthor@gmail.com