X Twitter Unlimited Scraper $9 Only 💸 avatar
X Twitter Unlimited Scraper $9 Only 💸

Pricing

$9.00/month + usage

Go to Apify Store
X Twitter Unlimited Scraper $9 Only 💸

X Twitter Unlimited Scraper $9 Only 💸

Developed by

Iñigo Garcia Olaizola

Iñigo Garcia Olaizola

Maintained by Community

Low-cost X.com/Twitter scraper for search and user timelines. Filter by dates, media, replies/retweets/quotes, verified, links, news, safe, and location. Use query, username, or both to search within a user. Export JSON/CSV/XLSX.

0.0 (0)

Pricing

$9.00/month + usage

0

2

2

Last modified

3 hours ago

X (Twitter) Scraper — Low-Cost, Reliable Tweet Extraction for Search, Users & Filters

🤖 What does X (Twitter) Scraper do?

This Apify Actor scrapes tweets from X.com (Twitter) using a rich set of filters (date range, media types, replies/retweets/quotes, verified, links, news, NSFW safety, geolocation via near). It's engineered to be LowCost yet reliable — perfect when you need a lot of tweets without burning budget.

Great for: social listening, brand monitoring, competitor research, trend mining, influencer discovery, lead gen, and academic/market research.

SEO keywords: Twitter scraper, X scraper, scrape tweets, download tweets, Twitter search, Twitter username scraper, Twitter API alternative, Apify actor, low cost Twitter scraper.

🚀 Quick Start

  1. Set query, username, or both

    • query alone → search across X.
    • username alone → user timeline.
    • query + usernamesearch within that user's tweets.
  2. Add filters (optional): replies/retweets/quotes, verified, links, media/images/videos/native videos/pro videos, news, safe, near, and minDate/maxDate.

  3. Run the Actor and download the dataset as JSON/CSV/Excel.

📝 Input Parameters

ParameterTypeRequiredDescription
maxItemsIntegerYesMax tweets to scrape. Min 1. Default 10.
queryStringNo*Search text. If used with username, it filters that user's tweets.
usernameStringNo*X handle (without @). If used with query, only tweets from this user that match the query are returned.
minDateStringNoLower bound date YYYY-MM-DD.
maxDateStringNoUpper bound date YYYY-MM-DD.
repliesEnumNo"" (Any) · "only" · "exclude".
retweetsEnumNo"" (Any) · "only" · "exclude".
quotesEnumNo"" (Any) · "only" · "exclude".
verifiedEnumNo"" (Any) · "only" (Verified only) · "exclude".
linksEnumNo"" (Any) · "only" · "exclude".
mediaEnumNo"" (Any) · "only" · "exclude".
imagesEnumNo"" (Any) · "only" · "exclude".
videosEnumNo"" (Any) · "only" · "exclude".
nativeVideosEnumNo"" (Any) · "only" · "exclude".
proVideosEnumNo"" (Any) · "only" · "exclude".
newsEnumNo"" (Any) · "only" · "exclude".
safeEnumNo"" (Any) · "only" (Safe only) · "exclude".
nearStringNoLocation bias for search (e.g., "Madrid", "New York").
proxyConfigurationObjectNoApify proxy settings (prefill uses RESIDENTIAL).

*Provide query or username (or both).

Example inputs

Global search

{
"maxItems": 50,
"query": "pizza",
"images": "only",
"retweets": "exclude",
"minDate": "2024-05-01",
"maxDate": "2024-08-31",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

User timeline only

{
"maxItems": 100,
"username": "elonmusk",
"replies": "exclude",
"retweets": "exclude"
}

Search within a user's tweets (combined)

{
"maxItems": 100,
"username": "elonmusk",
"query": "pizza",
"images": "only"
}

📊 Results (Output Schema)

Each dataset item (tweet) looks like:

{
"id": "1819469673169408242",
"permalink": "https://x.com/elonmusk/status/1819469673169408242",
"userUrl": "https://x.com/elonmusk",
"username": "elonmusk",
"fullname": "Elon Musk",
"avatar": "https://pbs.twimg.com/profile_images/.../kqqe2iWO_bigger.jpg",
"verified": "blue",
"text": "I did all my coding with just Diet Coke, burgers & pizza",
"html": "I did all my coding with just Diet Coke, burgers & pizza",
"isRetweet": false,
"retweetedBy": "",
"replyingTo": ["growing_daniel"],
"relativeTime": "2 Aug 2024",
"displayTime": "Aug 2, 2024 · 8:25 PM UTC",
"createdAt": "2024-08-02T20:25:00Z",
"images": null,
"links": null,
"comments": 430,
"retweets": 156,
"quotes": 59,
"likes": 3890
}

Field reference: id, permalink, userUrl, username, fullname, avatar, verified, text, html, isRetweet, retweetedBy, replyingTo[], relativeTime, displayTime, createdAt, images, links, comments, retweets, quotes, likes.

🧭 Common Recipes

  • Original tweets only: replies="exclude", retweets="exclude", quotes="exclude".
  • Videos only: videos="only" or nativeVideos="only".
  • News-only: news="only".
  • Verified only: verified="only".
  • Geo-biased search: set near (e.g., "San Francisco").
  • Event window: combine minDate + maxDate.
  • Search inside a user: set both username and query (e.g., "username":"nasa","query":"mars").

🏎️ Performance & LowCost Tips

  • Set a realistic maxItems to avoid over-fetching.
  • Combine username + query to cut noise (cheaper & faster).
  • Use media filters (images="only", videos="only") to focus on assets.

🌍 Proxy Usage

Default prefill enables Apify RESIDENTIAL proxies to avoid being blocked or rate limited.

  • Respect X.com's Terms of Service and robots rules.
  • Privacy: Handle personal data responsibly (e.g., GDPR).
  • Scope & rate: Avoid abusive request patterns.
  • Attribution: When publishing analyses, follow fair-use and platform policies.

❓FAQ

Do I need both query and username? No. Provide either. If you provide both, the Actor searches the query within that user's tweets.

How do I keep only original tweets? Set replies="exclude", retweets="exclude", quotes="exclude".

Can I filter by media? Yes — use images, videos, nativeVideos, or general media with "only" / "exclude".

How do I restrict by date? Use minDate and/or maxDate in YYYY-MM-DD.

Is this really LowCost? Yes. It's optimized to minimize bandwidth/requests while preserving accuracy — cheaper per result than heavy browser solutions.

🛟 Support

Need a custom field or export? Open an issue or contact me at https://igolaizola.com/#contact I can adapt the scraper to your workflow.