Scweet Twitter/X Scraper
Pricing
from $0.25 / 1,000 tweets
Scweet Twitter/X Scraper
Scrape Twitter (X) tweets from search + profiles. Filter keywords/hashtags/users/dates. Export JSON/CSV/XLSX. Fast. $0.30/1k. Free plan.
Pricing
from $0.25 / 1,000 tweets
Rating
5.0
(4)
Developer
JEB
Actor stats
17
Bookmarked
931
Total users
96
Monthly active users
4 days ago
Last modified
Categories
Share
Scweet is a Twitter/X scraper for search results and profile timelines. Extract tweets into JSON, CSV, and XLSX with a simple input model.
Run Actor on Apify | Open-Source Scweet Library
Quick Navigation
💰 Pricing (Effective March 4, 2026)
You are billed for:
- Tweets collected
- A one-time run-start fee per run
| Plan | Tweet Price | Run-start |
|---|---|---|
| Free (No discount) | $3.00 / 1,000 tweets | $0.006 |
| Starter (Bronze) | $0.30 / 1,000 tweets | $0.0006 |
| Scale (Silver) | $0.28 / 1,000 tweets | $0.0006 |
| Business (Gold) | $0.25 / 1,000 tweets | $0.0006 |
Apify currently advertises monthly free platform credit (commonly $5/month, subject to change).
Cost examples (Starter tier): 100 tweets = ~$0.03 · 10,000 tweets = ~$3 · 100,000 tweets = ~$30
Why free pricing is higher:
- Free tier is for evaluation, not high-volume automation.
- Higher free pricing helps reduce abuse and repeated empty runs.
- It helps keep paid-tier pricing low for production users.
Use Cases
- Brand monitoring — track mentions of your company, product, or competitors
- Lead generation — find users discussing problems your product solves
- Market research — analyze sentiment and trends around specific topics
- Academic research — collect datasets for NLP, social network analysis, political science
- OSINT — open-source intelligence gathering from public accounts
- Content strategy — study what performs well in your niche
⚡ Quick Start
- Open Scweet on Apify.
- Paste one of the inputs below.
- Run the Actor.
- Export dataset results.
Input can be partial. Omitted fields use defaults.
In the Apify Console, the form opens with sample prefill values: source_mode="auto", search_query="from:elonmusk", and profile_urls=["@elonmusk"].
These are sample prefills for the Console and store tests, not API defaults. Replace or remove them before running your own job.
🔎 Minimal Twitter Search Input
{"source_mode": "search","search_query": "bitcoin lang:en from:elonmusk -filter:replies min_faves:100","since": "2025-02-17","until": "2026-02-19","search_sort": "Latest","max_items": 1000}
👤 Minimal Twitter Profile Input
{"source_mode": "profiles","profile_urls": ["https://x.com/elonmusk","@apify"],"max_items": 1000}
🔀 Combined Search + Profiles Input
{"source_mode": "auto","all_words": ["ai", "agent"],"since": "2025-02-17","profile_urls": ["https://x.com/apify"],"search_sort": "Top","max_items": 500}
📋 Full Input Template (All Public Keys)
{"source_mode": "auto","search_query": "","profile_urls": [],"max_items": 1000,"since": "","until": "","search_sort": "Latest","lang": "","all_words": [],"any_words": [],"exact_phrases": [],"exclude_words": [],"hashtags_any": [],"hashtags_exclude": [],"from_users": [],"to_users": [],"mentioning_users": [],"tweet_type": "all","verified_only": false,"blue_verified_only": false,"has_images": false,"has_videos": false,"has_links": false,"has_mentions": false,"has_hashtags": false,"min_likes": 0,"min_replies": 0,"min_retweets": 0,"place": "","geocode": "","near": "","within": ""}
✅ Why Choose Scweet
- Actively maintained scraping logic for changing X/Twitter behavior.
- Reliability features: retries, account failover, task requeue, and deduplication.
- Flexible modes: search, profiles, or both in one run.
- Production-friendly export workflow in Apify datasets.
🧩 Inputs
Core fields
| Field | Type | Description |
|---|---|---|
source_mode | string | auto, search, or profiles (default: auto) |
search_query | string | Search path input. Optional raw advanced query string. Ignored in profiles mode. Twitter advanced search operators |
profile_urls | array[string] | Profile path input. Handles or profile URLs (@handle, x.com/<handle>, twitter.com/<handle>). Ignored in search mode. |
max_items | integer | Global run target (default 1000) |
since, until | string | Date or UTC timestamp window |
search_sort | string | Top or Latest (default: Latest) |
Search builder fields (optional)
- Keywords:
all_words,any_words,exact_phrases,exclude_words - Hashtags/users:
hashtags_any,hashtags_exclude,from_users,to_users,mentioning_users - Language:
lang(for example:en,fr,ar) - Tweet type:
tweet_type=all,originals_only,replies_only,retweets_only,exclude_replies,exclude_retweets - Account/content filters:
verified_only,blue_verified_only,has_images,has_videos,has_links,has_mentions,has_hashtags - Minimum engagement:
min_likes,min_replies,min_retweets - Location:
place,geocode,near,within geocodeformat:lat,lon,radius(for example:39.8283,-98.5795,2500km)- Advanced operator reference: Twitter advanced search operators
Important behavior
- Minimum requested run size is enforced: if
max_items < 100, it is auto-adjusted to100. max_itemsis global per run, not per profile.- Unknown input keys are rejected.
- In
auto, search runs only when search input is present, and profiles runs only when validprofile_urlsare present. If both are present, both paths run. - In the Apify Console, the initial form payload is intentionally runnable and uses sample
prefillvalues:search_query="from:elonmusk"andprofile_urls=["@elonmusk"]. These do not become API defaults. source_mode="search"ignores profile input.source_mode="profiles"ignores search input.- Location filters (
place,geocode,near,within) depend on X/Twitter metadata and query matching, so they can be approximate and are not always accurate. - If both
sinceanduntilare missing, lookback defaults to:Top: 4 yearsLatest: 180 days
- Free plan guardrails (current):
1000tweets/day,10runs/day, minimum60sbetween runs.
📤 Output
Results are stored in the Apify dataset for the run.
- Dataset output is deduplicated by tweet ID.
- Export formats: JSON, CSV, XLSX.
- Output includes source labeling fields (
source_root,source_value).
What each item contains
| Field | Description |
|---|---|
id | Tweet ID |
text | Tweet text |
handle | Author handle |
tweet_url | Tweet URL |
favorite_count, retweet_count, reply_count, quote_count, bookmark_count, view_count | Engagement metrics |
created_at, collected_at_utc | Tweet creation time and collection time |
lang | Top-level language convenience field |
conversation_id, in_reply_to_status_id, in_reply_to_user_id, in_reply_to_screen_name, quoted_status_id | Reply / quote / conversation references |
is_quote, is_reply | Top-level convenience flags |
sort_index, entry_type, tweet_display_type | Timeline metadata from X/Twitter GraphQL |
source_root | search or profile_url |
source_value | Effective query or normalized profile URL |
user | Nested author object |
tweet | Nested tweet details object |
Full example output (generated sample values, not real user data)
[{"id": "tweet-1996300676012376299","handle": "FTB_Team","text": "We dug through the first month of StoneBlock 4... and wow!\n\nBig wins, lessons learned, and a peek at what's next.\n\nPlus: Community-picked merch drops with new non-branded designs and Gift Cards!\n\nRead the breakdown 👇 https://t.co/ROWJhSWnQB","favorite_count": 71,"retweet_count": 5,"reply_count": 10,"view_count": "9695","tweet_url": "https://x.com/FTB_Team/status/1996300676012376299","created_at": "Wed Dec 03 19:29:05 +0000 2025","collected_at_utc": "2026-04-07T15:58:33.539740+00:00","sort_index": "2019817995584405484","entry_type": "TimelineTimelineItem","tweet_display_type": "Tweet","source_root": "search","source_value": "(sample OR query) (#tag1 OR #tag2) lang:en since:2025-01-01 until:2025-01-31","user": {"handle": "FTB_Team","name": "Feed The Beast","id": "VXNlcjo5ODM0NDA2ODg=","rest_id": "983440688","verified": false,"is_blue_verified": true,"verified_type": null,"followers_count": 43367,"friends_count": 211,"favourites_count": 3388,"statuses_count": 4242,"listed_count": 245,"media_count": 579,"description": "Feed The Beast (@FTB_Team) - Crafting epic adventures in the world of #Minecraft. Your home for a multitude of #modpacks and custom gaming experiences.","url": "https://t.co/MpFbTbInsi","urls": [{"url": "https://t.co/MpFbTbInsi","expanded_url": "http://www.feed-the-beast.com","display_url": "feed-the-beast.com"}],"location": "","created_at": "Sat Dec 01 22:22:32 +0000 2012","profile_image_url_https": "https://pbs.twimg.com/profile_images/1993352058355793922/pzeJnbaz_normal.jpg","profile_banner_url": "https://pbs.twimg.com/profile_banners/983440688/1764087016"},"tweet": {"text": "We dug through the first month of StoneBlock 4... and wow!\n\nBig wins, lessons learned, and a peek at what's next.\n\nPlus: Community-picked merch drops with new non-branded designs and Gift Cards!\n\nRead the breakdown 👇 https://t.co/ROWJhSWnQB","tweet_url": "https://x.com/FTB_Team/status/1996300676012376299","favorite_count": 71,"retweet_count": 5,"reply_count": 10,"quote_count": 0,"view_count": "9695","bookmark_count": 5,"lang": "en","created_at": "Wed Dec 03 19:29:05 +0000 2025","source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>","rest_id": "1996300676012376299","conversation_id": "1996300676012376299","in_reply_to_status_id": null,"in_reply_to_user_id": null,"in_reply_to_screen_name": null,"quoted_status_id": null,"mentions": [],"hashtags": [],"entities": {"hashtags": [],"mentions": [],"urls": [],"symbols": [],"timestamps": []},"media": [{"id_str": "1996241676629676032","media_key": "3_1996241676629676032","type": "photo","media_url": "https://pbs.twimg.com/media/G7QTOnVXkAAWJDS.jpg","expanded_url": "https://x.com/FTB_Team/status/1996300676012376299/photo/1","display_url": "pic.x.com/ROWJhSWnQB","width": 600,"height": 1012}],"is_quote_status": false,"possibly_sensitive": false,"is_translatable": false,"edit_control": {"edit_tweet_ids": ["1996300676012376299"],"editable_until_msecs": "1764793745000","is_edit_eligible": false,"edits_remaining": "5"}},"quote_count": 0,"bookmark_count": 5,"lang": "en","conversation_id": "1996300676012376299","in_reply_to_status_id": null,"in_reply_to_user_id": null,"in_reply_to_screen_name": null,"quoted_status_id": null,"is_quote": false,"is_reply": false}]
FAQ
Do I need a Twitter API key? No. The actor uses X's internal GraphQL API — no developer account or API key required.
Do I need to provide cookies or an account? No. Account management, proxies, and rate limiting are all handled automatically by the actor.
Can I scrape private accounts? No. Only publicly visible content is accessible.
What export formats are supported? JSON, CSV, and XLSX — download directly from the Apify dataset tab.
Is there a free tier? Yes — Apify provides monthly free platform credit. The actor's free plan allows up to 1,000 tweets/day and 10 runs/day.
Power users: the full open-source Python library is available at github.com/Altimis/Scweet — install with pip install Scweet for programmatic access, async support, resume, and full control over accounts and proxies.
⚖️ Responsible Usage
Use this Actor lawfully and ethically, and comply with applicable platform terms and local regulations.
🔒 Data and Privacy Note
Run metadata (such as user ID, timestamps, input payload, and counters) may be stored for rate-limiting, support, and stability operations. This data is used internally and is not shared with third parties.
🤝 Support
For help with query tuning, limits, or workflow design, contact us on the Actor page or open an issue in the open-source repository.