Twitter X profile timeline scraper
Pricing
from $0.65 / 1,000 results
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
Maintained by CommunityActor 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
- In Profiles, paste the accounts you want, one per line.
- In Scrape till, enter the oldest date you want, such as
2026-09-01. - Optional: set a limit per profile and/or for the whole run.
- Click Start, then open Output to watch posts come in.
- 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
| Field | What to enter |
|---|---|
| Profiles | Handles or profile links, one per line. Required. |
| Scrape till | The oldest date to include (UTC). Required. |
| Maximum posts per profile | Optional cap for each profile. Leave blank for no cap. |
| Maximum posts across all profiles | Optional cap for the whole run. Leave blank for no cap. |
Profile formats
All of these work, and duplicates are removed automatically:
elonmusk@NASAhttps://x.com/BillGateshttps://twitter.com/BarackObamax.com/Cristianomobile.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.
| Column | Description |
|---|---|
Profile | The profile you asked for. |
Post_ID | Post ID. Keep it as text in spreadsheets. |
Post_Caption | Full post text. |
Post_Url | Link to the post. |
Post_Date | When it was posted (UTC). |
Likes | Like count. |
Shares | Repost count. |
Comments | Reply count. |
Views | View count, when available. |
Engagement | Likes + reposts + replies. |
Name | Author's display name. |
Username | Author's handle. |
Followers | Author's follower count, when available. |
thumbnail | Preview image of the first photo or video. |
content_type | text, image, video, gif or mixed. |
media_url | Photo 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,UsernameandFollowersbelong to the original author;Profileis still the account you requested. - Counts are captured at scrape time.
media_urlcontains 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 reason | Meaning |
|---|---|
cutoff_reached | Reached your Scrape till date. Complete. |
post_limit | Reached your post limit. Complete. |
timeline_exhausted | No older posts exist. Complete. |
profile_unavailable | The handle doesn't exist, or the account is suspended or private. Check the spelling. |
network_error, http_error, missing_cursor, repeated_cursor, invalid_response | X had a temporary problem that persisted after retries. Running again usually works. |
time_limit | The 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.
Is it legal to scrape X?
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.