Twitter (X) Scraper avatar

Twitter (X) Scraper

Pricing

from $0.40 / 1,000 scraped tweets

Go to Apify Store
Twitter (X) Scraper

Twitter (X) Scraper

The best Apify Twitter (X) scraper. It offers a variety of filter options without needing any account credentials.

Pricing

from $0.40 / 1,000 scraped tweets

Rating

0.0

(0)

Developer

Maxime

Maxime

Maintained by Community

Actor stats

0

Bookmarked

19

Total users

7

Monthly active users

a day ago

Last modified

Share

Find Twitter/X posts and track conversations around your topic

Twitter Scraper helps you search Twitter/X for public posts about a topic, brand, person, or trend, so you can find the posts that matter and follow the conversation around them. Start with the prefilled Exact phrase, keep Maximum items at 10, and review matching posts in minutes.

  • Flexible post discovery - combine phrase, word, author, hashtag, list, date, language, and engagement filters in one run.
  • Conversation context included - keep quoted-post context and reply relationships when X exposes them, so each match is easier to review.
  • Search-mode control - choose newest-first latest results or X top-search ordering depending on how you want to track the conversation.
  • Small first run - one search filter plus a low Maximum items cap is enough to test the search before you widen it.
  • Partial-result guardrail - later-page failures can still return rows already collected.

⚡️ TRY IT FOR FREE


🏆 Benefits

  • 🔁 Turn manual Twitter/X searching into a repeatable export you can hand to analysts, founders, or ops workflows.
  • 🔗 Keep canonical post URLs and IDs so your team can review, join, or dedupe results later.
  • 🧠 Feed raw text, timestamps, authors, and engagement counts into your own scoring, alerts, or AI prompts.
  • 💬 Preserve quoted-post and reply-to context when X exposes it, so downstream review keeps more conversation context.
  • 🛟 Keep useful rows even when a later page fails, instead of losing everything from the run.

🚀 Quick start

  1. Open the Input tab and keep Exact phrase as the prefilled openai, or replace it with your own phrase.
  2. Keep Include original posts, Include quote posts, and Include replies on. Leave Include reposts off unless you also want reposts without added text.
  3. Leave Use top search off for newest-first results, keep the date fields empty unless you need a time window, and set Maximum items to 10 for a small first run.
  4. Run the actor, then review the dataset rows in the finished run or through the API.

⚙️ Features

  • 🔎 Runs one search across exact phrases, required words, optional words, excluded words, accounts, mentions, hashtags, list scope, date bounds, language, post IDs, and engagement thresholds.
  • 🧾 Emits one raw post contract with text, author identity, timestamps, engagement metrics, media URLs, hashtags, quoted-post fields, and reply-to fields.
  • 🧭 Switches between latest-style results and X top-search ordering.
  • 🎛️ Lets you include or exclude original posts, reposts, quote posts, and replies.
  • 🩹 Keeps rows even when some X fields are unavailable.
  • 📚 Keeps dataset order aligned with the selected search mode.

📊 Output

See the full Output tab for the complete contract.

Example

{
"postId": "2042296046009626989",
"postUrl": "https://x.com/OpenAI/status/2042296046009626989",
"postText": "Our existing $200 Pro tier still remains our highest usage option. And as a thank you to our existing Pro users on the $200 tier, we’re extending our 2x Codex usage promo (until May 31st) and we’ve reset your Codex rate limits (yes, again).",
"postDateTime": "2026-04-09T17:38:16.000Z",
"authorHandle": "OpenAI",
"authorDisplayName": "OpenAI",
"authorAvatarUrl": "https://pbs.twimg.com/profile_images/1885410181409820672/ztsaR0JW_normal.jpg",
"nbLikes": 5231,
"nbReposts": 291,
"nbReplies": 366,
"nbViews": 765606,
"nbBookmarks": 440,
"imageUrls": [],
"videoUrls": [],
"hashtags": [],
"quotedPostId": "2042295688323875316",
"quotedPostText": "We’re updating our ChatGPT Pro and Plus subscriptions to better support the growing use of Codex.\n\nWe’re introducing a new $100/month Pro tier. This new tier offers 5x more Codex usage than Plus and is best for longer, high-effort Codex sessions. \n\nIn ChatGPT, this new Pro tier still offers access to all Pro features, including the exclusive Pro model and unlimited access to Instant and Thinking models.\n\nTo celebrate the launch, we’re increasing Codex usage for a limited time through May 31st so that Pro $100 subscribers get up to 10x usage of ChatGPT Plus on Codex to build your most ambitious ideas.",
"quotedAuthorHandle": "OpenAI",
"replyToHandle": null,
"replyToPostId": null
}

Params

FieldTypeDescription
postIdstring or nullX post ID when available.
postUrlstring or nullCanonical X post URL when available.
postTextstring or nullRaw post text.
postDateTimestring or nullPost timestamp in ISO 8601 format.
authorHandlestring or nullAuthor handle without @.
authorDisplayNamestring or nullAuthor display name.
authorAvatarUrlstring or nullAuthor avatar image URL.
nbLikesnumber or nullLike count.
nbRepostsnumber or nullRepost count.
nbRepliesnumber or nullReply count.
nbViewsnumber or nullView count.
nbBookmarksnumber or nullBookmark count.
imageUrlsstring[]Image media URLs from the post.
videoUrlsstring[]Video media URLs from the post.
hashtagsstring[]Hashtags extracted from the post.
quotedPostIdstring or nullQuoted post ID when the result quotes another post.
quotedPostTextstring or nullQuoted post text when available.
quotedAuthorHandlestring or nullQuoted post author handle when available.
replyToHandlestring or nullReplied-to handle when the post is a reply.
replyToPostIdstring or nullReplied-to post ID when available.

🛠️ Input

Example

{
"fromUsers": ["OpenAI"],
"language": "en",
"shouldUseTopSearch": true,
"startDate": "2026-03-15",
"maxNbItemsToScrape": 10
}

Params

ParamTypeDescriptionDefault / empty behavior
includePhrasestringExact contiguous phrase that must match.Empty means unused.
includeWordsstring[]All listed words must be present somewhere in the post.Empty means unused.
optionalWordsstring[]Any listed words may be present.Empty means unused.
excludeWordsstring[]Exclude posts containing these words.Empty means unused.
mentionsstring[]Require posts that mention these handles. Do not include @.Empty means unused.
fromUsersstring[]Require posts from these handles. Do not include @.Empty means unused.
hashtagsstring[]Require these hashtags. Do not include #.Empty means unused.
toUsersstring[]Require posts addressed to these handles. Do not include @.Empty means unused.
quotedPostIdstringReturn posts that quote this X post ID.Empty means unused.
shouldIncludeOriginalPostsbooleanKeep original posts in the output.Defaults to true.
shouldIncludeRepostsbooleanKeep reposts without added text in the output.Defaults to false.
shouldIncludeQuotePostsbooleanKeep quote posts in the output.Defaults to true.
shouldIncludeRepliesbooleanKeep replies in the output.Defaults to true.
postTypeall / link / textRestrict the search to all posts, link posts, or text-only posts.Defaults to all.
shouldUseTopSearchbooleanUse X top search instead of latest-style search.Defaults to false.
startDatestringOnly include posts on or after this ISO 8601 or YYYY-MM-DD value.Empty searches from 30 days before run start.
endDatestringOnly include posts on or before this ISO 8601 or YYYY-MM-DD value.Empty leaves the upper bound open.
languagestringRestrict the search to a language code such as en.Empty means unused.
liststringRestrict the search to an X list ID.Empty means unused.
maxIdstringOnly include posts at or before this X post ID.Empty means unused.
sinceIdstringOnly include posts after this X post ID.Empty means unused.
minLikesintegerOnly include posts with at least this many likes.Empty means unused.
minRepliesintegerOnly include posts with at least this many replies.Empty means unused.
minRetweetsintegerOnly include posts with at least this many reposts.Empty means unused.
maxNbItemsToScrapeintegerMaximum number of dataset rows to emit.Defaults to 0, which keeps all collected rows after filtering and ordering.
shouldIncludePromotedPostsbooleanKeep promoted search results in the output.Defaults to false.

Important

  • You must provide at least one positive selector: includePhrase, includeWords, optionalWords, mentions, fromUsers, hashtags, toUsers, quotedPostId, or list.
  • At least one of shouldIncludeOriginalPosts, shouldIncludeReposts, shouldIncludeQuotePosts, or shouldIncludeReplies must stay true.
  • Latest mode emits newest-first results. Top mode preserves X top-search ordering.
  • maxNbItemsToScrape: 0 keeps all collected rows after filtering and ordering.
  • You only provide search filters. Account rotation and proxy selection stay managed inside the actor.

🔍 Error handling

  • Invalid input combinations fail before any Twitter/X requests start. This includes runs with no positive selector or runs with all four content-type switches turned off.
  • If the actor cannot initialize the required Apify residential proxy path, the run fails before sending live Twitter/X traffic.
  • When Twitter/X rejects or exhausts one internal account, the actor rotates to another account and retries the page when possible.
  • If the first search page cannot be completed with any account, the run fails with a clear error.
  • If a later page fails after rows were already collected, the run still finishes successfully with partial results and a concise status message explaining the early stop.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡


🔗 Other actors

  • Reddit Scraper - Search Reddit posts and comments to track conversations around a topic or brand.
  • Product Hunt Scraper - Turn Product Hunt launches into lead-ready rows with optional website enrichment.
  • Website Emails Scraper - Turn any list of websites into one row per discovered contact email.
  • Uneed Scraper - Collect Uneed launches with maker links, ranks, and optional website emails.
  • Tiny Startups Scraper - Export Tiny Startups listings with promoted-listing control and optional email enrichment.
  • TinySeed Scraper - Scrape the TinySeed portfolio into company rows with descriptions and optional website emails.

Made with ❤️ by Maxime Dupré