Twitter X profile timeline scraper avatar

Twitter X profile timeline scraper

Pricing

from $0.65 / 1,000 results

Go to Apify Store
Twitter X profile timeline scraper

Twitter X profile timeline scraper

Scrape multiple X profiles from latest posts to a UTC cutoff with optional per-profile and total post limits.

Pricing

from $0.65 / 1,000 results

Rating

5.0

(1)

Developer

Mark Pandit

Mark Pandit

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

12 hours ago

Last modified

Categories

Share

X (Twitter) Profile Timeline Scraper

Collect posts from any public X (Twitter) profile, going back to the date you choose. Get the post text, likes, reposts, replies, views, follower counts, photos and video links, ready to download as CSV, Excel or JSON.

  • No X account, cookies or API key needed. Just paste profiles and pick a date.
  • Many profiles in one run. One handle or link per line.
  • Live results. Posts appear in the Output tab while the run is still going.
  • Lightweight and low-cost. No browser runs; photos and videos are returned as links, not downloaded.

Quick start

  1. In Profiles, paste the accounts you want, one per line.
  2. In Scrape till, enter the oldest date you want, such as 2026-09-01.
  3. Optional: set a limit per profile and/or for the whole run.
  4. Click Start, then open Output to watch posts come in.
  5. Click Export to download your data.

Example input

{
"profiles": "elonmusk\nNASA\nhttps://x.com/BillGates",
"scrapeTill": "2026-09-01",
"maxPostsPerProfile": 50,
"maxPostsTotal": 150
}

This collects up to 50 recent posts each from Elon Musk, NASA and Bill Gates, stopping at September 1, 2026 or at 150 posts in total, whichever comes first.

Inputs

FieldWhat to enter
ProfilesHandles or profile links, one per line. Required.
Scrape tillThe oldest date to include (UTC). Required.
Maximum posts per profileOptional cap for each profile. Leave blank for no cap.
Maximum posts across all profilesOptional cap for the whole run. Leave blank for no cap.

Profile formats

All of these work, and duplicates are removed automatically:

elonmusk
@NASA
https://x.com/BillGates
https://twitter.com/BarackObama
x.com/Cristiano
mobile.twitter.com/YouTube

Use profile links, not links to individual posts.

How the date works

The scraper starts from the newest post and works backwards. 2026-09-01 means everything from September 1, 2026 (00:00 UTC) up to now, not just that one day.

Need a specific time or time zone? Use a full timestamp, for example 2026-09-01T00:00:00Z (UTC) or 2026-09-01T09:00:00-04:00.

How the limits work

  • Both limits are optional and can be used together.
  • Profiles are processed in the order you list them. Once the total limit is reached, the remaining profiles are skipped.
  • Want everything back to your date? Leave both limits blank.

Example: with 100 per profile and 150 total, if the first profile gives 100 posts, the second can add at most 50.

Output

Each row is one post from a requested profile.

ColumnDescription
ProfileThe profile you asked for.
Post_IDPost ID. Keep it as text in spreadsheets.
Post_CaptionFull post text.
Post_UrlLink to the post.
Post_DateWhen it was posted (UTC).
LikesLike count.
SharesRepost count.
CommentsReply count.
ViewsView count, when available.
EngagementLikes + reposts + replies.
NameAuthor's display name.
UsernameAuthor's handle.
FollowersAuthor's follower count, when available.
thumbnailPreview image of the first photo or video.
content_typetext, image, video, gif or mixed.
media_urlPhoto and video links (see below).

Sample row

{
"Profile": "NASA",
"Post_ID": "1830000000000000000",
"Post_Caption": "A new view of Jupiter's Great Red Spot...",
"Post_Url": "https://x.com/NASA/status/1830000000000000000",
"Post_Date": "2026-09-15T14:02:11+00:00",
"Likes": 18234,
"Shares": 2410,
"Comments": 512,
"Views": 1204331,
"Engagement": 21156,
"Name": "NASA",
"Username": "NASA",
"Followers": 89000000,
"thumbnail": "https://pbs.twimg.com/media/EXAMPLE.jpg",
"content_type": "image",
"media_url": "{\"photo\":[\"https://pbs.twimg.com/media/EXAMPLE?format=jpg&name=orig\"]}"
}

Values are illustrative.

Good to know:

  • For reposts, Name, Username and Followers belong to the original author; Profile is still the account you requested.
  • Counts are captured at scrape time.
  • media_url contains original-size photos and the best-quality MP4 for videos and GIFs. Posts without media show {}.
  • Only posts visible on the profile's Posts tab are included. Replies, deleted posts and posts from private accounts can't be collected.

Progress and troubleshooting

The run log shows progress for each profile:

@NASA: 40 posts saved

Temporary hiccups on X's side, such as timeouts or incomplete pages, are retried automatically, so you may occasionally see lines like:

@NASA: request failed (network_error); retrying 1/2
@NASA: data collection stopped at 120 posts (missing_cursor); retry 1/2 from the last saved page in 15s

If a profile still can't be finished, the posts collected so far stay in your dataset, the other profiles continue, and the log explains why it stopped.

Run summary

Every run saves a SUMMARY record under Storage → Key-value store, showing per profile how many posts were saved and why collection stopped:

Stop reasonMeaning
cutoff_reachedReached your Scrape till date. Complete.
post_limitReached your post limit. Complete.
timeline_exhaustedNo older posts exist. Complete.
profile_unavailableThe handle doesn't exist, or the account is suspended or private. Check the spelling.
network_error, http_error, missing_cursor, repeated_cursor, invalid_responseX had a temporary problem that persisted after retries. Running again usually works.
time_limitThe run ran out of time. Give it a longer timeout.

A run is marked failed if any profile couldn't be finished for a reason other than an unavailable profile. Your collected data is still available.

Tips

  • Large date ranges take longer. Busy accounts can have thousands of posts per month; set a generous run timeout.
  • Test first with a small post limit, then remove it for the full collection.
  • Rerunning is safe. Each run starts fresh, so if a run stops early, just start it again.

This Actor only collects publicly available posts. Make sure your use complies with X's terms and applicable data-protection laws, such as GDPR, especially if you store or process personal data.