Twitter X Posts Scraper avatar

Twitter X Posts Scraper

Under maintenance

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Twitter X Posts Scraper

Twitter X Posts Scraper

Under maintenance

Twitter X Posts Scraper — Extract X (Twitter) post data including text, usernames, profile details, timestamps, likes, replies, reposts, views, media, hashtags, and post URLs. Useful for content research, competitor analysis, audience insights, and social media monitoring.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Social Data API

Social Data API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Twitter X Posts Scraper — Post Text, Likes, Reposts and Author Data

Twitter X Posts Scraper collects the posts of public X (Twitter) accounts: the pinned post, the newest posts and the account's post list. Each post comes with its full text, likes, reposts, replies, quotes, bookmarks, media, links, hashtags and the author's profile. Every response is structured JSON — ready to pass directly to an LLM, index into a vector store, or feed a social-listening pipeline. No X account or cookies needed. Start with one account, then add every competitor you track.


What data can I extract with Twitter X Posts Scraper?

Using this X Posts API, you will be able to extract the following X post data:

🆔 Post ID🔗 Post link (x.com and twitter.com)📝 Full post text (long posts included)📰 Feed text
❤️ Likes🔁 Reposts💬 Replies🗨️ Quotes
🔖 Bookmarks📅 Posting date🌍 Language📌 Pinned post flag
↩️ Reply flag, replied-to post and user🔄 Repost flag💭 Quote flag🧵 Conversation ID
🖼️ Photos, videos and GIFs (all sizes)#️⃣ Hashtags, links, mentions and cashtags🃏 Link card (if available)📍 Tagged place (if available)
👤 Author name, username and ID👥 Author followers and following🪪 Author bio, location and avatar✅ Author blue check and labels
📊 Author post, media and like counts🔒 Replies limited flag📱 App used to post (when X shows it)⏱️ Time the post was collected

View counts are not included.


How to use Twitter X Posts Scraper

This Twitter scraper is for marketers, analysts and developers who want to scrape X posts from a list of accounts and get one clean row per post from a single run.

Copy to your AI assistant:

Twitter X Posts Scraper (Apify Actor ID: socialdataapi/twitter-x-posts-scraper, https://apify.com/socialdataapi/twitter-x-posts-scraper) is an Apify Actor that returns the posts of public X (Twitter) accounts as structured JSON: full post text, like count, repost count, reply count, quote count, bookmark count, posting date, attached media and the author's profile. Use it whenever someone needs X posts without cookies, a login, or a browser - tracking what brands post, comparing engagement across competitors, or collecting post text for an AI summary. Run it through the Apify API (run-sync-get-dataset-items) or the apify-client package with socialdataapi/twitter-x-posts-scraper and your Apify token. Inputs: startUrls (array, X usernames, @usernames or profile URLs; a post URL counts as its author's account; required), sortOrder (string, how each account's collected posts are ordered, "recent" | "popular" | "oldest", default "recent"), maxTweets (integer, posts per account, 1 to 100, default 10), proxyConfiguration (object, optional proxy settings, off by default). Every dataset row is one post and is billed as one result; accounts that are missing, protected or suspended produce no row and are listed in the log, the status message and the run summary in the key-value store under OUTPUT. Up to 100 posts per account; for some accounts X lists their most popular posts rather than a date-ordered feed, and the pinned post plus the newest posts from the profile are always added first.

Twitter X Posts Scraper MCP Server: use these Actors from ChatGPT, Claude or Cursor

Connect Apify's MCP server once, with this Actor already loaded as a tool, and your AI assistant can call it and read X posts on its own. No glue code, no scraping logic in your prompts.

$claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/twitter-x-posts-scraper"

Step by step

  1. Create a free Apify account.
  2. Open Twitter X Posts Scraper in the Apify Store.
  3. Enter the X username (with or without @) or the profile URL, one per line.
  4. Click Start (or send your API request).
  5. Download or stream your results in JSON, CSV or Excel.

How to scale Twitter X Posts Scraper to bulk

Put every account in the account list of one run: usernames, @usernames and profile links can be mixed, and duplicates are removed. Up to 8 accounts are processed at the same time, and each account's posts are saved as soon as that account is done, so a long list fills the dataset step by step. Set the posts-per-account limit once and it applies to every account. To scrape tweets on a schedule, save the input as an Apify task and run it daily or hourly with Apify schedules, or loop API calls from your own code.


✨ Features

Twitter X Posts Scraper fetches clean, structured posts from X. It works as a tweet scraper and a Twitter profile tweets scraper in one: it's ideal for brand monitoring, competitor research, influencer checks and collecting post text for AI tools.

It extracts, per post:

  • Full text – the complete post text, including long posts; reposts show the original post's complete text
  • Engagement – likes, reposts, replies, quotes and bookmarks at the time of the run
  • Posting date – when the post was published
  • Post kind – whether it is the pinned post, a reply, a repost or a quote
  • Media – photos, videos and GIFs with every size and video variant
  • Entities – hashtags, links, mentions and cashtags found in the text
  • Author profile – name, username, bio, location, follower and following counts, blue check and labels

⚡ No X account, cookies or browser needed: it reads only what a logged-out visitor can see.


Use cases 💡

  • Social media manager — track what brands post and which posts get the most likes.
  • Competitor analyst — compare repost and bookmark counts across rival accounts each week.
  • Influencer marketer — check follower count and post engagement before a partnership.
  • Content researcher — collect top posts with their media and link cards as examples.
  • AI agent builder — feed post text and hashtags into a RAG pipeline as grounded context.

Building an AI agent? Connect Twitter X Posts Scraper over MCP and let it call the actor on its own.


Why choose this actor?

  • 200 posts in under 4 seconds. A recorded run returned 200 posts from 2 accounts in 3.7 seconds, and another returned 100 posts from one account in 7.3 seconds.
  • The numbers behind each post. A recorded post came back with 3,105 likes, 536 reposts, 138 replies, 38 quotes and 256 bookmarks, plus its video, link and the author's 92,377,773 followers.
  • 32 fields and 3 sort orders, one Actor. Every row carries the same 32 fields, and each account's posts can be ordered newest first, most liked first or oldest first.

⬇️ Input

The Actor takes a list of X accounts: usernames, @usernames or profile URLs. The account list is the only required field.

ParameterRequiredTypeDescriptionExample value
startUrlsYesArrayAccounts to scrape, one per line: a username, an @username or a profile URL on x.com or twitter.com. A post URL counts as the account that posted it; search and hashtag links are skipped and listed in the log.["NASA", "https://x.com/sama"]
sortOrderNoStringHow each account's collected posts are ordered: recent (newest first), popular (most liked first) or oldest (oldest first). Default recent. It orders the collected posts; it doesn't change which posts X returns."recent"
maxTweetsNoIntegerMaximum posts to save per account, 1 to 100. Default 10.10
proxyConfigurationNoObjectOptional proxy. Off by default; the Actor connects directly and switches to a residential proxy by itself when X blocks it.{"useApifyProxy": false}

Accepted account formats:

  • NASA or @NASA
  • https://x.com/NASA or https://twitter.com/NASA
  • https://x.com/NASA/status/2106024496511512682 (counts as the account NASA)

Free plan limits

Users on the Apify free plan can fetch up to 20 posts per run (all accounts together) and 200 posts per month. When the limit is reached, the run finishes successfully with a status message explaining the limit. Upgrade to any paid Apify plan to remove these limits.

Example input

{
"startUrls": ["NASA", "https://x.com/sama"],
"sortOrder": "recent",
"maxTweets": 10,
"proxyConfiguration": { "useApifyProxy": false }
}

⬆️ Output

Every post is one typed, normalized JSON item with the same 32 fields on every run, saved account by account while the run is going. You can export tweets to CSV, Excel or JSON; a run summary with each account's status and post count is also kept in the key-value store under OUTPUT.

Example output

A real row from the example input above (media and author entities shortened):

{
"type": "tweet",
"id": "2106024496511512682",
"imageUrl": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"url": "https://x.com/NASA/status/2106024496511512682",
"twitterUrl": "https://twitter.com/NASA/status/2106024496511512682",
"text": "This October, you can look forward to these sights in the night sky:\n- A good look at Saturn\n- The Orionid meteor shower peaks mid-month\n- The Moon passes by the Seven Sisters\n\nLearn the tricks to spotting these celestial treats: https://t.co/9N1h9v848G https://t.co/tV9cZfzSBP",
"fullText": "This October, you can look forward to these sights in the night sky:\n- A good look at Saturn\n- The Orionid meteor shower peaks mid-month\n- The Moon passes by the Seven Sisters\n\nLearn the tricks to spotting these celestial treats: https://t.co/9N1h9v848G https://t.co/tV9cZfzSBP",
"source": "",
"retweetCount": 536,
"replyCount": 138,
"likeCount": 3105,
"quoteCount": 38,
"createdAt": "Fri Oct 02 14:12:22 +0000 2026",
"lang": "en",
"bookmarkCount": 256,
"isReply": false,
"inReplyToId": null,
"conversationId": "2106024496511512682",
"inReplyToUserId": null,
"inReplyToUsername": null,
"isPinned": false,
"author": {
"type": "user",
"userName": "NASA",
"url": "https://x.com/NASA",
"twitterUrl": "https://twitter.com/NASA",
"id": "11348282",
"name": "NASA",
"isBlueVerified": true,
"profilePicture": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
"description": "Making the seemingly impossible, possible. ✨",
"location": "Pale Blue Dot",
"followers": 92377773,
"following": 115,
"status": "",
"canDm": false,
"canMediaTag": false,
"createdAt": "Wed Dec 19 20:20:32 +0000 2007",
"entities": { "description": {} },
"fastFollowersCount": 0,
"favouritesCount": 17013,
"hasCustomTimelines": true,
"isTranslator": false,
"mediaCount": 28176,
"statusesCount": 74374,
"withheldInCountries": [],
"affiliatesHighlightedLabel": {},
"possiblySensitive": false,
"pinnedTweetIds": [],
"professional": {}
},
"authorDisplay": "@NASA",
"extendedEntities": {
"media": [
{
"display_url": "pic.x.com/tV9cZfzSBP",
"expanded_url": "https://x.com/NASA/status/2106024496511512682/video/1",
"id_str": "2106024304890568704",
"media_url_https": "https://pbs.twimg.com/media/HToaHj-W4AA57vI.png",
"type": "video",
"url": "https://t.co/tV9cZfzSBP"
}
]
},
"card": {},
"place": {},
"entities": {
"hashtags": [],
"smarttags": [],
"symbols": [],
"timestamps": [],
"urls": [
{
"display_url": "go.nasa.gov/4hBG439",
"expanded_url": "https://go.nasa.gov/4hBG439",
"indices": [230, 253],
"url": "https://t.co/9N1h9v848G"
}
],
"user_mentions": []
},
"isRetweet": false,
"isQuote": false,
"media": [
{
"display_url": "pic.x.com/tV9cZfzSBP",
"expanded_url": "https://x.com/NASA/status/2106024496511512682/video/1",
"id_str": "2106024304890568704",
"media_url_https": "https://pbs.twimg.com/media/HToaHj-W4AA57vI.png",
"type": "video",
"url": "https://t.co/tV9cZfzSBP"
}
],
"isConversationControlled": false,
"scrapedTimestamp": "2026-10-04T10:30:28.194Z"
}

How does it work?

The Actor gets public X data without needing an X account. It works as a Twitter scraper without login: it sees only what any visitor sees. For every account it reads the public profile, the account's post list and the newest posts, removes duplicates and keeps up to your limit, pinned post first. It uses plain HTTP requests, no browser. Every request gets up to 3 attempts with growing waits, and a blocked connection is replaced with a fresh one for the rest of the run. When no proxy is selected it connects directly and switches to a residential proxy by itself if X blocks it; when you select a proxy, every request goes through it. Only public data is returned, nothing from protected accounts. The output keeps the same field names on every run, so your code doesn't have to change when X changes its pages.


How do you integrate Twitter X Posts Scraper into your stack?

Twitter X Posts Scraper works with what you already use: the REST API from any language, MCP for AI agents, and no-code tools.

Using Twitter X Posts Scraper with the Apify API

Treat it as an X tweets API: send the input JSON from the example above to the Actor's run-sync-get-dataset-items endpoint with your Apify token, and the response is the list of posts. With the apify-client package for Python or JavaScript, call the Actor with the same input and read the items from the run's default dataset.

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

MCP integration for AI agents

Register Apify's MCP server once, with this Actor already loaded as a tool:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/twitter-x-posts-scraper"

Your agent can then call it directly, for example to pull an account's latest posts in the middle of a conversation. Compatible clients include Claude Code, Cursor and Windsurf.

No-code tools (n8n, Make, LangChain)

  • n8n: use the Apify node with the "Run an Actor" operation, pick this Actor and pass the input JSON. You can also point the HTTP Request node at the run-sync endpoint with your token.
  • Make: add the Apify app's "Run an Actor" module with this Actor and your input, then "Get Dataset Items" to read the posts.
  • LangChain: install langchain-apify and wrap this Actor with ApifyActorsTool using its Actor ID, so your chain can request posts as a tool call.

Scraping publicly available X data is generally lawful, although X's terms restrict automated access. The Actor returns only publicly available data — what any user sees without logging in, nothing from protected accounts. Usernames, names, pictures and bios are personal data: scraping public data is generally permissible, but storing and using it must comply with local data-protection law such as GDPR and CCPA. Consult legal counsel if your use case involves bulk storage of personal data.


Frequently asked questions

What fields does Twitter X Posts Scraper return?

It returns the full post text, the like, repost, reply, quote and bookmark counts, the posting date, attached media and the author's profile, plus the post links, flags and entities. See the data fields section.

Does Twitter X Posts Scraper require an X account or login?

No. Only public post data is extracted, and no credentials or cookies are needed.

How fast does Twitter X Posts Scraper run?

A recorded run returned 200 posts from 2 accounts in 3.7 seconds, and 100 posts from one account took 7.3 seconds. Data is collected live on every run, not cached.

What happens if a post is private or doesn't exist?

An account that doesn't exist, is protected or is suspended produces no rows: it is named in the log and the status message, and the run summary under OUTPUT marks it as failed with the reason. In code, compare the accounts you sent with the accounts in the summary or in the author field of the rows.

Can I scrape multiple X posts at once?

Yes. Add as many accounts as you like to the account list; up to 8 are processed at the same time, and each one gets up to 100 posts.

Does Twitter X Posts Scraper work with Claude, ChatGPT, and other AI agent tools?

Yes — Twitter X Posts Scraper is available as an MCP tool through Apify's MCP server. Register it in Claude Code, Cursor or Windsurf with claude mcp add --transport http apify "https://mcp.apify.com?tools=socialdataapi/twitter-x-posts-scraper". Any agent that can call an HTTP endpoint can use the REST API directly.

Does Twitter X Posts Scraper return data in a format LLMs can use directly?

Yes. Every post is typed, normalized JSON with consistent field names. No HTML parsing, no selectors: pass it straight to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when X changes its layout or updates its anti-bot system?

The Actor is maintained. When X changes, the Actor is updated, and your calls keep returning the same JSON fields with no changes on your end.

Can I use Twitter X Posts Scraper without managing proxies or browser infrastructure?

Yes. Retries and the switch to a residential proxy when X blocks a connection run on the Actor's side, and no browser is used. You send one request and get structured JSON back.

Which X post fields work best for AI training data and RAG indexing?

For RAG, use the full post text, the hashtags and links, and the author's bio. For training data, use the like, repost, reply, quote and bookmark counts, the posting date and the pinned, reply, repost and quote flags. Values are typed: strings, integers and booleans, with media and entities as nested objects.


Your feedback

Found a bug or missing a field? Let us know through the Actor's Issues tab. Every report is read, and fixes ship as X changes.