Twitter scraper & X scraper for tweets, replies, profiles, lists & search from $0.00015 per delivered tweet on every Apify plan. Use it as a Twitter API alternative with 63 fields per tweet & 50+ filters. No X login. World's fastest & cheapest X (Twitter) scraper service. Not affiliated with X Corp.
2026-11-06. In flat rows, videoUrls now starts with each video's MP4 files,
best quality first. GIF rows do the same in gifUrls. Before, these fields
held only the thumbnail and the post link.
2026-11-06. The withinTime field now says which units it takes, and m
means minutes.
2026-11-06. A mentions run now keeps the mentions it finds on a page X answers
out of time order. Before, a run could leave those posts out.
2026-11-05. A mentions run now returns the mentions X's own pages skip. On one
account's mentions over 8 hours, that was 598 posts instead of 585.
2026-11-05. Auto mode now returns each account's own posts, newest first. This
holds with maxItemsPerTarget, the media boxes or the exclude boxes in
tweetTypes. Set maxItemsPerTarget to 1 to get each account's newest post.
Before, these runs could return an older post or none.
2026-11-05. The media boxes now read "Only posts with". Ticking several
keeps posts with any of them. Before, a post needed all of them, so a run
could find few or no posts.
2026-11-05. When filters remove every post, the status now names the filter to
untick.
2026-11-06. Apify now refuses a maximum cost per run that can't pay for 1
result and the platform usage before it. Its error names the least limit that
can. Before, such a run started and returned nothing.
2026-11-06. A run whose maximum cost per run can't pay for 1 result now says
so and names the least limit that does. Before, it asked you to check the
targets and filters.
2026-11-05. A run now retries a briefly unavailable search page sooner, and
still tries it at most 13 times. Runs that meet such pages finish sooner.
2026-11-06. A run no longer writes an error to its log when a progress report
to Xquik fails to send. Results were never affected.
2026-11-05. When a page is briefly unavailable, a run now keeps trying it
until the page loads or a much longer wait runs out. Before, the run gave up
after 4 tries and ended with partial_failure.
2026-11-03. A profile link in twitterHandles, like x.com/nasa, now reads
that account. Before, the run skipped it.
2026-11-03. A skipped input now says what was wrong, like a link to another
site or to a post.
2026-11-01. Runs with a short time limit now read for longer before they stop.
Before, a short run that waited to start could save nothing.
2026-11-01. The "Why use" section adds the run cost estimate, multi-target
runs & field descriptions.
2026-11-01. A replies run finishes up to a minute sooner when it finds as many
replies as the post's replyCount. The replies stay the same.
2026-11-01. Runs no longer wait out their time limit when mentions stop
loading.
2026-10-31. A run whose batch of results fails to save once keeps those
results and no longer ends as partial.
2026-10-31. A search X can't run as typed, or a post whose likes X hides, no
longer ends the run with partial_failure. The diagnostic still names it &
its fix.
2026-10-30. The Store description now starts with "Twitter scraper & X
scraper". Runs, inputs & prices stay the same.
2026-10-29. When you pay platform usage, a run stops at the last result that
fits your maximum cost per run.
2026-10-28. Posts that belong to a live event, such as an election, carry
liveEventContext. It has the event's title, url & imageUrl.
2026-10-28. A run now stops at your maximum cost per run, platform usage
included, & says so instead of ending as aborted.
2026-10-28. A post URL in listIds now returns that post, & a list URL
returns that list's posts. The run skips any other listIds entry & says so
in its status.
2026-10-28. A run that still has time left no longer stops early with a
time-limit status. It keeps reading until it saves maxItems results, X has
no more or the run reaches its time limit.
2026-10-28. Runs without a time limit no longer fail targets as busy while
their other targets still get results.
2026-10-27. The README adds a "Why use" section of highlights & features above
its data.
2026-10-28. The run status now says replies to posts older than 7 days can be
incomplete.
2026-10-28. The dataset schema now describes the start & end offsets of each
text highlight.
2026-10-27. Runs with a time limit no longer fail targets as busy.
2026-10-27. A post author's affiliate label now lists the other labels X shows
beside it, each with its text, badge, link & label type.
2026-10-27. The What you get list now says newest-first results come back in
date order & profile exports keep the author's whole threads.
2026-10-26. The README now lists what you get from each run. Input & output
field descriptions now say what you get.
2026-10-23. A search listed more than once now runs once. A repeated search of
a suspended account no longer counts as failed.
2026-10-24. Each photo in media carries editedWithNativeEditor: true when
its author edited it in X's own editor.
2026-10-21. softIntervention holds the label X shows on a tweet it limits.
2026-10-17. A run now ends as soon as its work is done, even while Xquik is
down.
2026-10-18. sinceTime & untilTime take ISO 8601 times or dates, as their
help says. A time without a zone reads as UTC.
2026-10-18. A run now says X was unavailable when X's outage stops a target.
2026-10-17. Each post lists the counts X did not send in unknownCounts.
Those counts read 0, so treat them as unknown. Rows in snake_case name them
like their fields, such as bookmark_count.
2026-10-16. A fast read now ends as soon as its last rows arrive.
2026-10-15. A verified-author or no-repost search drops & never bills a post
that fails that filter.
2026-10-15. A run waits out a brief Xquik outage & keeps its faster reads.
2026-10-14. A profile link by user ID, like x.com/i/user/11348282, now reads
that account.
2026-10-14. A slow X answer no longer holds up a run's tweets.
2026-10-14. A replies run with missing replies now gives the right reason. It
no longer says that X hides them.
2026-10-14. A false or 0 you set yourself now wins over another Actor's
field.
2026-10-14. Place searches work with names in 6 languages.
2026-10-14. Place searches return tweets from the place you name.
2026-10-14. near takes a country or a city, such as United States.
2026-10-14. The README explains topCountry, lang, the inputs of the
translation & embed modes, isPinned & subscriberBadge more plainly.
2026-10-14. The Store text & the top of the README use plainer sentences.
2026-10-14. mode: "topTweets" lists now come back reliably. A list X leaves
empty now ends at once.
2026-10-14. Search pages & post lookups by ID now arrive sooner after a
missing answer.
2026-10-13. Each post's author now holds profilePictureOriginal, the profile
picture at full size, to download. profilePicture stays the 48 px image.
2026-10-13. An account can be named by its user ID of 16 to 19 digits, like a
handle. This works in X handles, profile links & from: search terms.
2026-10-13. The example task that unrolls a thread returns the author's own
posts of the conversation, without the replies of others.
2026-10-13. New example tasks search Twitter by date, build a sentiment
analysis dataset, search brand mentions & find the most liked tweets on a
topic.
2026-10-13. A list X does not show now says X did not find it & that it may be
private. Before, the run told you to check usernames & choose public accounts.
2026-10-13. The Store title reads X (Twitter) Tweet Scraper, & the README
opens with scraping Twitter tweets.
2026-10-13. Field help & the README drop colons & semicolons.
2026-10-13. The run status & the input messages drop their colons. An aborted
run starts Aborted., & the batching tip has no label.
2026-10-13. An empty reply run of a post whose replies X hides now says so.
Before, its status told you to check targets & filters.
2026-10-12. Paging can no longer loop until the run's time runs out. The run
never charges a row twice.
2026-10-12. Shape your rows with fields, omitFields, renameFields,
flatten, joinFields & constantFields. Name totalEngagement,
engagementRate or engagementPerView in fields to add it.
2026-10-12. The Actor reads more input names of other tweet Actors. They
include flat filter names such as engagementMinLikes, usersFromUsers,
timeSince & mediaTypes. They include snake case names such as
search_query, from_users & min_likes. They also include
timeWindowHours, onlyVerifiedUsers, placeObjectId & modes named in
words. A value it cannot read as asked stops the run before any read or
charge.
2026-10-12. Authors carry email & contactInfo, the emails, phones & links
their profile publishes, when X sends the bio.
2026-10-12. A run with a filter & its opposite both on, such as
tweetTypes.replies & tweetTypes.excludeReplies, stops before any read &
names both fields. Before, each of its searches failed after a long wait.
2026-10-12. subscriberBadge names the creator whose Subscriber badge a reply
shows.
2026-10-11. The schema says X sends source, the posting app, for some posts
only.
2026-10-10. Tweets carry cashtagAttachments, the price charts their authors
attached to cashtags. Tags in entities, hashtags included, add their
SmartTag id & active when X sends them.
2026-10-10. A target named in startUrls & another field is read once. A
suspended account named twice no longer fails the run.
2026-10-09. Each Grok image in media carries grokImageAnnotation, the
prompt it came from, when X sends one.
2026-10-09. A place search that finds no tweets names the place in its status
& suggests removing it. Before, it suggested a wider time window.
2026-10-09. mode: "topTweets" returns the tweets X ranks highest by likes,
replies, quotes, bookmarks, shares or views over a day, week or month.
2026-10-09. Successful runs with rows end their status with a short review
request.
2026-10-08. A run that finds no tweets says what to change in its status, such
as a broader search.
2026-10-08. near & geo.near find tweets again for a 1-word place, such as
Germany. Before, such a search returned no tweets.
2026-10-08. A search that finds nothing now never writes a diagnostics
record.
2026-10-08. A poll that got only posts outside its time window writes no
diagnostics record.
2026-10-08. A search that finds nothing because its own operators, such as
-is:retweet, ruled out every post writes no diagnostics record.
2026-10-07. Stalled reads now recover on their own, so runs lose less time.
2026-10-07. Community tweets can carry communityName beside communityId
when X sends the community's name.
2026-10-07. A run that reads every target & gets no row back writes no
diagnostics record. Its status says why, & the run costs less.
2026-10-06. Tweet IDs runs skip entries that name no tweet & return the rest.
Before, 1 such entry could empty the whole run.
2026-10-05. Runs with many targets save progress less often, finish sooner &
cost less.
2026-10-05. Large runs upload their rows faster.
2026-10-05. mode: "translation" returns X's translation of each tweet into
translateTo, at the usual row price.
2026-10-05. mode: "embed" returns the HTML that embeds each tweet on a
website, at the usual row price.
2026-10-05. Runs of under 5 IDs or handles end with a tip to batch them.
2026-10-04. mode: "profileMentions" returns the posts that mention each
handle, newest first, at the usual row price.
2026-10-04. An account X suspended now reads "X suspended 1 account." with the
cause target_suspended & the reason suspended in unavailableTargets.
2026-10-04. When X refuses a run's only search, the status now says what to
change.
2026-10-04. A tweet with few replies now returns them sooner & costs less.
2026-10-04. The Actor version in diagnostics & run reports is now the Apify
build number.
2026-10-04. A run no longer stops early when an upload's answer is lost. Its
rows are charged once.
1.12.210, 2026-10-04
A profile run on a renamed handle now saves the posts X shows for it.
1.12.209, 2026-10-04
Dates such as 31/01/2026 & 01/31/2026 now work in Since date & Until date.
A date that fits both orders, such as 04/01/2026, reads month first.
Since time & Until time now take ISO 8601 times as well as Unix seconds.
A comma or semicolon after a date in a search term no longer empties it.
1.12.208, 2026-10-04
A lookup now names each tweet ID X returned no tweet for.
The input examples now use tweets that still exist.
1.12.207, 2026-10-04
Card filters now check each tweet & return the tweets you asked for.
A search with Source app, Geocode or Within radius now stops at once.
The run says X no longer supports that filter.
1.12.206, 2026-10-04
Every run uses 256 MB again, which is faster & more reliable for small runs.
1.12.205, 2026-10-04
Maximum likes, retweets & replies now keep posts that hit the maximum.
The -min_faves, -min_retweets & -min_replies fields now say fewer than the
count.
Rows above a maximum are never charged.
1.12.204, 2026-10-04
When X stops returning new replies, the run now says so.
1.12.203, 2026-10-04
An account whose likes X hides now ends right away & says why.
So does a post whose likes X hides.
1.12.202, 2026-10-01
When Xquik stays busy, each retry waits longer than the last.
If Xquik stays busy too long, that target fails & the run says why.
Busy answers are never charged.
1.12.201, 2026-09-30
A run near its time limit stops before a read it can't finish.
A refused search or a missing or protected account now ends right away.
1.12.200, 2026-09-29
A run that started late says how long it waited, out of its time limit.
1.12.199, 2026-09-29
Requests to Xquik never follow a redirect, so the key stays with Xquik.
1.12.198, 2026-09-29
A run waits out a brief Xquik outage instead of failing.
Rows saved before an outage stay saved & are charged once.
1.12.197, 2026-09-29
Runs with more than 5 targets keep 256 MB, whatever field names them.
Author data no longer includes a follow flag that did not describe the author.
1.12.196, 2026-09-29
Runs up to maxItems 50 with up to 5 targets use 128 MB & cost less.