Advanced X (Twitter) Profile Scraper avatar

Advanced X (Twitter) Profile Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Advanced X (Twitter) Profile Scraper

Advanced X (Twitter) Profile Scraper

Scrape all tweets from any X (Twitter) profile — not just recent ones. Uses advanced search with date ranges to capture full history, with rich per-tweet data: text, media, engagement metrics and author details. Fast, stable & API-based.

Pricing

from $0.50 / 1,000 results

Rating

5.0

(20)

Developer

ВAH

ВAH

Maintained by Community

Actor stats

29

Bookmarked

4.2K

Total users

73

Monthly active users

7.5 hours

Issues response

9 days ago

Last modified

Share

What does Advanced X (Twitter) Profile Scraper do?

Advanced X (Twitter) Profile Scraper extracts all tweets from any X (Twitter) profile — not just the most recent ones. It works as an unofficial X (Twitter) API alternative: give it one or more profile URLs and a date range, and it returns clean, structured tweet data with 39 fields per tweet, including text, media URLs, engagement metrics, and full author details.

Unlike simple timeline scrapers that only see a profile's latest posts, this Actor uses X's advanced search with date-range splitting to reach deep into a profile's history. It's fast, stable, and API-based (no slow browser rendering).

Why use Advanced X (Twitter) Profile Scraper?

  • 🗓️ Go beyond the timeline — advanced search reaches older tweets that a plain profile scrape misses.
  • 🎯 Precise date control — set an exact startDate and endDate; scrape a single day or years of history.
  • 🔪 Deep-scrape splitting — split the range by day, week, or month to defeat X's search limits and capture the fullest history.
  • 🖼️ Rich data — text (full length, even 280+ character long posts), image URLs, direct MP4 video URLs, hashtags, mentions, links, and complete engagement stats.
  • 👤 Full author profile — name, handle, bio, followers, following, verification, profile image, and more on every row.
  • 🌐 Language filter — target tweets in any of 40+ languages.
  • Fast & stable — direct API access, not browser automation.
  • 📤 Ready to use — export to JSON, CSV, Excel, XML, or HTML.

How this Actor compares

FeatureThis ActorTypical profile scrapers
Reaches full history✅ Advanced search + date splitting❌ Recent timeline only
Long-post full text (280+)✅ Complete text❌ Often truncated
Media URLs (images + video MP4)✅ Both⚠️ Images only or none
Author profile fields✅ 11 fields⚠️ Handle only
Method✅ Direct API❌ Slow browser

What data can you extract?

Each tweet is one dataset item with the following fields:

FieldTypeDescription
tweetIdstringUnique tweet ID
authorHandlestringAuthor's @handle
authorNamestringAuthor's display name
tweetUrlstringDirect link to the tweet
fullTextstringComplete tweet text (untruncated for long posts)
createdAtstringPost time (UTC)
langstringTweet language code
sourcestringPosting client (e.g. Twitter for iPhone)
replyCountnumberNumber of replies
repostCountnumberReposts (retweets + quotes, as shown on X)
retweetCountnumberRetweets only
quoteCountnumberQuote tweets only
likeCountnumberNumber of likes
viewCountnumberNumber of views
bookmarkCountnumberNumber of bookmarks
isReplybooleanWhether the tweet is a reply
replyToHandlestringHandle being replied to
replyToUrlstringProfile URL being replied to
isQuotebooleanWhether the tweet quotes another
quotedTweetUrlstringLink to the quoted tweet
isRetweetbooleanWhether the tweet is a retweet
isAdbooleanWhether the tweet is promoted
mediaTypestringphoto, video, animated_gif, mixed, or empty
imageUrlsarrayImage URLs
videoUrlsarrayDirect MP4 video URLs
hashtagsarrayHashtags in the tweet
mentionsarrayHandles mentioned
externalUrlsarrayExternal links in the tweet
authorIdstringAuthor's numeric ID
authorUrlstringAuthor's profile URL
authorLocationstringAuthor's location
authorVerifiedbooleanBlue/verified status
authorFollowersnumberAuthor's follower count
authorFollowingnumberAccounts the author follows
authorTweetsCountnumberAuthor's total tweets
authorProfileImagestringAuthor's profile image URL
authorBannerImagestringAuthor's profile banner image URL
authorBiostringAuthor's bio
authorWebsitestringWebsite link on the author's profile
authorCreatedAtstringWhen the author's account was created

How to scrape an X (Twitter) profile

  1. Open the Actor and click Try for free.
  2. Add profile URLs — paste one or more X/Twitter profile URLs (e.g. https://x.com/NASA) into the Account URLs field.
  3. Set the date range — choose your startDate and endDate (format YYYY-MM-DD).
  4. Pick a split mode — use By day for the most thorough scrape, or By week / By month for faster runs over long ranges. Optionally set a Language filter.
  5. Click Start, then download your tweets as JSON, CSV, or Excel from the Storage tab.

How much does it cost?

This Actor uses pay-per-result pricing — you pay only for the tweets you actually collect, with no monthly platform rental. Because it's API-based rather than browser-based, it runs cheaply and quickly.

You can try it for free on the Apify free plan — full features, up to 50 results per run (see below). To collect at scale with no limits, upgrade your Apify plan. See the Pricing section on this page for the current per-1,000-results rate.

💎 Free plan vs paid plan

The free plan gives you the full feature set (all filters, date-splitting, and every data field) — it's only capped on volume per run:

LimitFree planPaid plan
Runs per dayUnlimitedUnlimited
Results per run50 (shared across all account URLs)Unlimited
Features (filters, date-split, all fields)FullFull
Multiple accounts per runCapped by the 50-results totalUnlimited
Date range / split modeUnlimitedUnlimited

To scrape more than 50 results per run, multiple accounts at full volume, or deep historical archives, upgrade your plan.

Input

Provide one or more X (Twitter) profile URLs and a date range. Configure everything visually on the Input tab, or via JSON.

FieldTypeDescriptionDefault
accountUrlsArrayX/Twitter profile URLs, e.g. https://x.com/NASA (free plan: 50 results total per run across all URLs)Required
startDateStringStart date (inclusive), YYYY-MM-DDRequired
endDateStringEnd date (inclusive), YYYY-MM-DDRequired
splitModeStringday, week, or month. day is the most thoroughday
languageStringLanguage filter (e.g. en, ja, es); any to disableany
maxCollectionsIntegerMax tweets per profile; 0 = unlimited (paid plan)0
keywordStringOnly return the profile's tweets containing this keyword/phrase(empty)
excludeRepliesBooleanSkip replies; return only original tweetsfalse
mediaFilterStringany, images (only tweets with images), or videosany
minLikesIntegerOnly tweets with at least this many likes0
minRetweetsIntegerOnly tweets with at least this many reposts0
sortStringTop (most relevant) or Latest (most recent)Top

Input example (JSON)

{
"accountUrls": ["https://x.com/NASA", "https://x.com/elonmusk"],
"startDate": "2025-08-01",
"endDate": "2025-09-02",
"splitMode": "week",
"language": "any",
"maxCollections": 0,
"keyword": "",
"excludeReplies": false,
"mediaFilter": "any",
"minLikes": 0,
"minRetweets": 0,
"sort": "Top"
}

Output

Results are stored in the dataset. Each item is one tweet with full author and engagement details.

Output example (JSON)

{
"tweetId": "2064422103416238295",
"authorHandle": "NASA",
"authorName": "NASA",
"tweetUrl": "https://x.com/NASA/status/2064422103416238295",
"fullText": "Introducing Artemis III.\n\nFour astronauts. Three launches. Two dockings. One splashdown...",
"createdAt": "2026-06-09 18:59:19+00:00",
"lang": "en",
"source": "Twitter Media Studio",
"replyCount": 1026,
"repostCount": 6362,
"retweetCount": 5919,
"quoteCount": 443,
"likeCount": 28601,
"viewCount": 1975399,
"bookmarkCount": 1474,
"isReply": false,
"replyToHandle": "", // populated only when isReply is true
"replyToUrl": "", // populated only when isReply is true
"isQuote": false,
"quotedTweetUrl": "", // populated only when isQuote is true
"isRetweet": false,
"isAd": false,
"mediaType": "video", // "photo" | "video" | "animated_gif" | "mixed" | ""
"imageUrls": ["https://pbs.twimg.com/media/HKZL32MXcAAEvuz.jpg"],
"videoUrls": ["https://video.twimg.com/amplify_video/2064419379664617472/vid/avc1/1920x1080/6jURoc2QL1nJj1tc.mp4"],
"hashtags": [], // e.g. ["Artemis"]
"mentions": [], // e.g. ["Astro_Luca"]
"externalUrls": [], // links included in the tweet
"authorId": "11348282",
"authorUrl": "https://x.com/NASA",
"authorLocation": "Pale Blue Dot",
"authorVerified": true,
"authorFollowers": 92154022,
"authorFollowing": 119,
"authorTweetsCount": 74184,
"authorProfileImage": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"authorBannerImage": "https://pbs.twimg.com/profile_banners/11348282/1775567134",
"authorBio": "Making the seemingly impossible, possible. ✨",
"authorWebsite": "http://www.nasa.gov/",
"authorCreatedAt": "Wed Dec 19 20:20:32 +0000 2007"
}

Tips

  • Get the most complete history — for prolific accounts, X's search won't return everything in a wide date range. Use splitMode: "day" (or week) to break the job into smaller queries and maximize coverage.
  • Control your result count — set maxCollections to cap tweets per profile and keep costs predictable.
  • Scrape multiple profiles — on a paid plan, add many URLs to accountUrls in a single run.
  • Automate itschedule runs or connect the dataset to your app via the Apify API and integrations (Make, Zapier, Google Sheets, and more).

Looking for a different way to scrape X (Twitter)? 😊

FAQ and support

Scraping publicly available data is generally legal. This Actor only collects data that any logged-out user can see. However, you are responsible for how you use the data.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

Why don't I get every single tweet in a large date range?

X's search limits how many results it returns per query. Use splitMode: "day" or "week" to break the range into smaller segments and capture far more.

Can I scrape more than one profile at once?

Yes — add multiple URLs to accountUrls. On the free plan a run still returns up to 50 results total (shared across those URLs); upgrade to a paid plan for unlimited results per account.

Need a custom field or a different scraper?

Reach out via the Apify support channels or leave feedback on the Actor's page. We're happy to help.