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

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Turn Twitter search filters into raw public post rows

Twitter Scraper runs one Twitter/X search with your filters and returns raw public post rows you can inspect, store, or feed into your own downstream workflow.

Fastest way to try it

Start with one phrase or one small word set, keep the defaults, and inspect the first output rows in the Output tab before you widen the search.

Why people use it

  • 🔎 Search Twitter/X with phrase, word, account, hashtag, list, and engagement filters in one run.
  • 📄 Get raw post rows instead of opinionated enrichment or scoring.
  • 🔁 Keep or exclude original posts, reposts, quote posts, and replies with simple switches.
  • 📈 Choose latest or top search behavior depending on how you want the results ordered.
  • ⚠️ Keep partial results when a later Twitter/X page fails instead of losing the rows that were already collected.

How to use in 3 simple steps

  1. Open the Input tab and add at least one positive search selector such as includePhrase, includeWords, mentions, or hashtags.
  2. Keep the default content-type switches unless you want to narrow or widen the output.
  3. Run the actor, then inspect the Output tab or API dataset rows.

Inputs, defaults, and behavior

  • 🔎 You must provide at least one positive search selector.
  • 🗓️ When startDate is omitted, I search the last 30 days by default.
  • 📄 By default I keep original posts, quote posts, and replies, while reposts are excluded.
  • 🧾 postType lets you keep all posts, link posts, or text-only posts.
  • 📈 shouldUseTopSearch switches between latest ordering and top ordering.
  • 📣 Promoted posts are excluded by default.
  • 🔢 maxNbItemsToScrape uses 0 for all available results.
  • ⚠️ If a later search page fails, I keep the rows already collected and finish with partial results instead of dropping them.

Input example

{
"includePhrase": "supabase edge functions",
"hashtags": ["buildinpublic"],
"shouldIncludeReposts": false,
"shouldIncludeQuotePosts": true,
"shouldIncludeReplies": true,
"postType": "all",
"maxNbItemsToScrape": 25
}

What data can Twitter Scraper extract?

See the full Output tab for the complete schema.

FieldWhat you getWhy it matters
postIdThe X post ID when it was availableJoin results back to your own systems
postUrlThe canonical X URL when it was availableOpen the exact post quickly
postTextThe raw post textFeed your own downstream analysis
authorHandleThe posting account handle when it was availableGroup or filter by author
nbLikes, nbReposts, nbRepliesEngagement counts when they were availableCompare reach and traction
imageUrls, videoUrlsAttached media URLsKeep the media context with the post

Output example

[
{
"postId": "1905632012345678901",
"postUrl": "https://x.com/alice/status/1905632012345678901",
"postText": "Supabase Edge Functions just shipped a nice DX update.",
"postDateTime": "2026-03-27T11:22:33.000Z",
"authorHandle": "alice",
"authorDisplayName": "Alice",
"authorAvatarUrl": "https://pbs.twimg.com/profile_images/example.jpg",
"nbLikes": 52,
"nbReposts": 8,
"nbReplies": 4,
"nbViews": 1200,
"nbBookmarks": 7,
"imageUrls": [],
"videoUrls": [],
"hashtags": ["supabase"],
"quotedPostId": null,
"quotedPostText": null,
"quotedAuthorHandle": null,
"replyToHandle": null,
"replyToPostId": null
}
]

FAQ

Do I need to provide my own Twitter account?

No. You only provide search filters.

Does the actor enrich or score the posts?

No. The output is raw post data only.

What happens when some attributes are missing?

I still emit the row. Missing scalar fields become null and missing collections become empty arrays.

What happens if a later page fails?

I keep the rows already collected and finish with partial results when possible.

Where do I report a missed filter or site-specific failure?

Open the Issues page with the input you used, the output you expected, and the run log.

Explore the rest of the collection

Missing a filter or output field?

File an issue and I'll add it in less than 24h 🫡