Scweet Twitter/X Scraper avatar
Scweet Twitter/X Scraper

Pricing

$0.30 / 1,000 tweets

Go to Apify Store
Scweet Twitter/X Scraper

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

JEB

Maintained by Community

Actor stats

15

Bookmarked

550

Total users

15

Monthly active users

48 days

Issues response

4 days ago

Last modified

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

  1. Open the Actor in your Apify console.
  2. Set the input parameters.
  3. Run the Actor.
  4. 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

FieldTypeDefaultDescription
source_modestringautoauto, search, or profiles.
search_querystringemptyOptional raw advanced query. Advanced syntax reference
profile_urlslist[string][]Profile sources (@handle, handle, x.com/<handle>, twitter.com/<handle>, full URLs).
max_itemsinteger1000Global run target (minimum 100).
sincestringemptyStart date/time. Date-only values are normalized to start of day UTC.
untilstringemptyEnd date/time. Date-only values are normalized to end of day UTC.
search_sortstringLatestSearch sort: Top or Latest.

Section B: Search Builder (Guided)

FieldTypeDefaultDescription
all_wordslist[string][]All terms must appear.
any_wordslist[string][]At least one term must appear.
exact_phraseslist[string][]Exact phrases to include.
exclude_wordslist[string][]Terms to exclude.
hashtags_anylist[string][]Include any listed hashtag.
hashtags_excludelist[string][]Exclude listed hashtags.
from_userslist[string][]Tweets authored by these users.
to_userslist[string][]Tweets directed to these users.
mentioning_userslist[string][]Tweets mentioning these users.
langstringemptyLanguage code (example: en).

Section C: Search Filters

FieldTypeDefaultDescription
tweet_typestringallall, originals_only, replies_only, retweets_only, exclude_replies, exclude_retweets.
verified_onlybooleanfalseOnly verified users.
blue_verified_onlybooleanfalseOnly blue-verified users.
has_imagesbooleanfalseMust contain images.
has_videosbooleanfalseMust contain videos.
has_linksbooleanfalseMust contain links.
has_mentionsbooleanfalseMust contain mentions.
has_hashtagsbooleanfalseMust contain hashtags.
min_likesinteger0Minimum likes threshold.
min_repliesinteger0Minimum replies threshold.
min_retweetsinteger0Minimum retweets threshold.

Section D: Location (Search Only)

FieldTypeDefaultDescription
placestringemptyPlace operator value.
geocodestringemptylat,lon,radius (example: 39.8283,-98.5795,2500km).
nearstringemptyLocation text (city/place).
withinstringemptyRadius for near (example: 10km).

Defaults and Behavior

  • source_mode=auto enables search only when search criteria exist, and profiles only when valid profile_urls exist.

  • source_mode=search ignores profiles input.

  • source_mode=profiles ignores search input.

  • If search is enabled but search criteria are empty, the run fails validation.

  • If source_mode=auto would enable neither search nor profiles, the run fails validation.

  • Date defaults:

    • If both since and until are missing:
      • search_sort=Top uses the last 4 years (date intervals are mandatory for concurrency)
      • search_sort=Latest uses the last 180 days (date intervals are mandatory for concurrency)
    • If only since is provided: until=now (UTC).
    • If only until is provided: since=until-lookback (lookback depends on search_sort).
    • If both are provided: since must be earlier than until.
  • Precedence rule: if search_query already 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 (nested user and tweet objects).
  • 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 tweets table view flattens key user.* and tweet.* 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: search or profile_url
  • source_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.