Scweet Twitter/X Scraper
Pricing
$0.30 / 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
$0.30 / 1,000 tweets
Rating
5.0
(4)
Developer

JEB
Actor stats
15
Bookmarked
550
Total users
15
Monthly active users
48 days
Issues response
4 days ago
Last modified
Categories
Share
Scweet on Apify
Scweet lets you scrape X (formerly Twitter) search results and profile timelines at scale with a simple, flexible input model.
- Scale-friendly scraping
- Flexible query builder for keywords, hashtags, users, language, and location.
- Profile timeline scraping via handles or profile URLs.
- Clean, deduplicated output in Apify datasets (JSON, CSV, XLSX).
Responsible Usage
This Actor is intended for lawful and ethical use only. Please comply with X terms of service.
Quickstart
- Open the Actor in your Apify console.
- Set the input parameters.
- Run the Actor.
- Download results from the Apify dataset.
Example Input
JSON input can be partial. Omitted fields use defaults.
Minimal Search Example
{"source_mode": "search","search_query": "(bitcoin OR eth) (#bitcoin OR #ethereum) lang:en min_faves:100 min_retweets:25 -filter:replies filter:images","since": "2025-01-01","until": "2025-01-31","search_sort": "Latest","max_items": 1000}
Profile Timelines Only
{"source_mode": "profiles","profile_urls": ["https://x.com/elonmusk", "@apify"],"max_items": 1000}
Combined Search + Profiles
{"source_mode": "auto","all_words": ["bitcoin", "solana"],"profile_urls": ["https://x.com/elonmusk"],"search_sort": "Latest","max_items": 500}
Full Template (All Public Keys)
{"source_mode": "auto","search_query": "","profile_urls": [],"max_items": 1000,"since": "","until": "","search_sort": "Latest","all_words": [],"any_words": [],"exact_phrases": [],"exclude_words": [],"hashtags_any": [],"hashtags_exclude": [],"from_users": [],"to_users": [],"mentioning_users": [],"lang": "","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": ""}
Inputs
Section A: Start Here
| Field | Type | Default | Description |
|---|---|---|---|
source_mode | string | auto | auto, search, or profiles. |
search_query | string | empty | Optional raw advanced query. Advanced syntax reference |
profile_urls | list[string] | [] | Profile sources (@handle, handle, x.com/<handle>, twitter.com/<handle>, full URLs). |
max_items | integer | 1000 | Global run target (minimum 100). |
since | string | empty | Start date/time. Date-only values are normalized to start of day UTC. |
until | string | empty | End date/time. Date-only values are normalized to end of day UTC. |
search_sort | string | Latest | Search sort: Top or Latest. |
Section B: Search Builder (Guided)
| Field | Type | Default | Description |
|---|---|---|---|
all_words | list[string] | [] | All terms must appear. |
any_words | list[string] | [] | At least one term must appear. |
exact_phrases | list[string] | [] | Exact phrases to include. |
exclude_words | list[string] | [] | Terms to exclude. |
hashtags_any | list[string] | [] | Include any listed hashtag. |
hashtags_exclude | list[string] | [] | Exclude listed hashtags. |
from_users | list[string] | [] | Tweets authored by these users. |
to_users | list[string] | [] | Tweets directed to these users. |
mentioning_users | list[string] | [] | Tweets mentioning these users. |
lang | string | empty | Language code (example: en). |
Section C: Search Filters
| Field | Type | Default | Description |
|---|---|---|---|
tweet_type | string | all | all, originals_only, replies_only, retweets_only, exclude_replies, exclude_retweets. |
verified_only | boolean | false | Only verified users. |
blue_verified_only | boolean | false | Only blue-verified users. |
has_images | boolean | false | Must contain images. |
has_videos | boolean | false | Must contain videos. |
has_links | boolean | false | Must contain links. |
has_mentions | boolean | false | Must contain mentions. |
has_hashtags | boolean | false | Must contain hashtags. |
min_likes | integer | 0 | Minimum likes threshold. |
min_replies | integer | 0 | Minimum replies threshold. |
min_retweets | integer | 0 | Minimum retweets threshold. |
Section D: Location (Search Only)
| Field | Type | Default | Description |
|---|---|---|---|
place | string | empty | Place operator value. |
geocode | string | empty | lat,lon,radius (example: 39.8283,-98.5795,2500km). |
near | string | empty | Location text (city/place). |
within | string | empty | Radius for near (example: 10km). |
Defaults and Behavior
-
source_mode=autoenables search only when search criteria exist, and profiles only when validprofile_urlsexist. -
source_mode=searchignores profiles input. -
source_mode=profilesignores search input. -
If search is enabled but search criteria are empty, the run fails validation.
-
If
source_mode=autowould enable neither search nor profiles, the run fails validation. -
Date defaults:
- If both
sinceanduntilare missing:search_sort=Topuses the last 4 years (date intervals are mandatory for concurrency)search_sort=Latestuses the last 180 days (date intervals are mandatory for concurrency)
- If only
sinceis provided:until=now (UTC). - If only
untilis provided:since=until-lookback(lookback depends onsearch_sort). - If both are provided:
sincemust be earlier thanuntil.
- If both
-
Precedence rule: if
search_queryalready contains an operator/filter, guided equivalents are not appended for overlapping items (since:,until:,lang:,min_*,filter:*, and location operators). -
List entries are treated as individual values; comma-separated terms inside one entry are not auto-split.
-
Unknown keys are rejected. Removed keys (including
allow_broad_search) are rejected.
Output
Results are stored in the Apify dataset for the run. Output is deduplicated by tweet ID.
tweets: canonical JSON dataset items (nesteduserandtweetobjects).- In Apify dataset UI, use the built-in Table/JSON toggle to switch views.
- CSV export is available from the dataset export options.
- The default
tweetstable view flattens keyuser.*andtweet.*columns for readability. - JSON items may include timeline metadata (
sort_index,entry_type,tweet_display_type,collected_at_utc).
Example JSON output:
[{"id": "tweet-1234567890123456789","sort_index": "1999999999999999999","entry_type": "TimelineTimelineItem","tweet_display_type": "Tweet","collected_at_utc": "2026-02-08T05:08:42.531721+00:00","source_root": "search","source_value": "(sample OR query) (#tag1 OR #tag2) lang:en since:2025-01-01 until:2025-01-31","user": {"id": "VXNlcjoxMjM0NTY3OA==","rest_id": "12345678","name": "Sample Account","verified": false,"verified_type": "None","is_blue_verified": true,"created_at": "Mon Jan 01 00:00:00 +0000 2020","description": "Sample profile description.","url": "https://t.co/example","urls": [{"url": "https://t.co/example","expanded_url": "https://example.com","display_url": "example.com"}],"favourites_count": 1200,"followers_count": 98000,"friends_count": 350,"listed_count": 45,"statuses_count": 15000,"location": "Sample City","media_count": 420,"handle": "sample_handle","profile_banner_url": "https://pbs.twimg.com/profile_banners/12345678/sample","profile_image_url_https": "https://pbs.twimg.com/profile_images/sample_normal.jpg"},"tweet": {"rest_id": "1234567890123456789","conversation_id": "1234567890123456789","in_reply_to_status_id": null,"in_reply_to_user_id": null,"quoted_status_id": null,"source": "<a href=\"https://example.com\" rel=\"nofollow\">Example App</a>","created_at": "Wed Jan 15 10:00:00 +0000 2025","mentions": ["example_user"],"tweet_url": "https://x.com/sample_handle/status/1234567890123456789","view_count": "150000","text": "This is a sample tweet text for documentation.","hashtags": ["tag1", "tag2"],"favorite_count": 1234,"quote_count": 56,"reply_count": 78,"retweet_count": 90,"bookmark_count": 12,"is_quote_status": false,"possibly_sensitive": false,"is_translatable": false,"edit_control": {"edit_tweet_ids": ["1234567890123456789"],"editable_until_msecs": "1762993800000","is_edit_eligible": true,"edits_remaining": "5"},"entities": {"hashtags": ["tag1", "tag2"],"mentions": ["example_user"],"urls": [{"url": "https://t.co/example","expanded_url": "https://example.com/page","display_url": "example.com/page"}],"symbols": [],"timestamps": []},"lang": "en","media": [{"id_str": "5555555555555555555","media_key": "3_5555555555555555555","type": "photo","media_url": "https://pbs.twimg.com/media/sample.jpg","expanded_url": "https://x.com/sample_handle/status/1234567890123456789/photo/1","display_url": "pic.x.com/sample","width": 1200,"height": 800}]}}]
Note
Each output tweet includes source labeling:
source_root:searchorprofile_urlsource_value: source descriptor (effective query for search root, normalized profile URL for profile root)
Support
We welcome feedback from researchers, analysts, journalists, and developers. If you want a feature or have a request, open an issue or message us on the Actor page.
Disclaimer
We store run metadata (user ID, timestamps, input payload, counts, dataset ID) for rate limiting, stability, and support. This data is used internally and is not shared with third parties.