Tweets
Twitter replies scraper & profile timeline
Retrieve one user’s X With Replies timeline with cursor pagination, parent tweet context, author fields, engagement metrics, and media. 1 credit per tweet.
- 200
- 400
- 401
- 402
- 403
- 404
- 409
- 410
- 424
- 429
- 502
- 503
GET
Twitter replies scraper & profile timeline
When to use the With Replies timeline
Use this route when every page must include replies. It can include parent context for each reply row. Use the standard user timeline when original posts are the primary target. Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page or ID list, Xquik returns fewer results. If zero paid results are affordable, it returns402 insufficient_credits.
1 credit per tweet returned · All plans from $0.00012/credit · Supports guest paid reads
Omit
mode for automatic maximum coverage. Xquik combines available views
within a short request window. It keeps the existing response shape.
Pass next_cursor back unchanged as cursor. Keep the same endpoint, target,
query, and filters.after, limit, and
pageSize aliases also keep working. Billing still counts only returned rows.
Use mode=standard only to force legacy single-view pagination.
A page can be empty or underfilled. Continue while has_next_page is true.
Stop only after the response reports has_next_page=false.
First-page requests do not support Idempotency-Key retries.
Repeating a cursorless request starts a separate extraction.
Results returned by that extraction incur their normal charges.
Save each response before requesting its next page.
You cannot replay earlier or terminal responses after their cursors become unavailable.
If automatic coverage is busy, an initial request returns a standard data page.
Live coverage cursors remain atomic. Concurrent use returns
409 coverage_cursor_unavailable with exact Retry-After seconds. Wait, then
retry the same cursor once.
Repeated busy responses never authorize restarting with another cursor.
Finished, expired, superseded, or identity-mismatched cursors return
410 coverage_cursor_gone. The response omits Retry-After. Restart without
a cursor. Keep received results. Deduplicate restarted results by id.
Malformed cursors return 400 invalid_coverage_cursor. Restart without them.
This route returns the With Replies timeline for one
public X profile. It includes replies by default. You do not need
includeReplies=true on GET /api/v1/x/users/{id}/tweets.Protected accounts return HTTP 403 with x_account_protected. Choose a public account.
This applies to every mode, including continuation requests. Xquik collects no results and charges nothing.
Public profile lookup remains available.User replies handoff
UseGET /x/users/{id}/replies when a support queue, community workflow,
research job, or agent needs a profile’s With Replies timeline. This endpoint
accepts a username or numeric user ID. It includes replies by default and
returns one JSON page at a time.
Store source_user_id_or_username, tweet_id, text, author fields,
created_at, reply context, conversation_id, engagement counts, media_urls,
page_cursor, has_next_page, and next_cursor. Treat next_cursor as
opaque and pass it back as cursor only when has_next_page is true.
Build a with replies sync
Use these checkpoints when a timeline sync needs reply rows, parent context, and a cursor to resume.Dedicated replies route
Call
GET /x/users/{id}/replies when every page should include replies by
default.Parent context
Set
includeParentTweet=true when reply rows need the parent tweet for
triage, moderation, or conversation joins.Route chooser
Use
Get user timeline when replies are
optional. Use this route when replies are required.Cursor checkpoint
Store
page_cursor, next_cursor, and has_next_page before requesting
another page.Which timeline endpoint?
- Use
GET /api/v1/x/users/{id}/repliesfor one user’s With Replies timeline. It includes replies by default. - Use
GET /api/v1/x/users/{id}/tweetsfor one user’s profile timeline when replies are optional or excluded by default. - Add
includeParentTweet=truewhen reply rows need parent tweet context. - Use
GET /api/v1/x/users/{id}/mediawhen every returned row should contain profile media. - Use
GET /api/v1/x/tweets/{id}/repliesfor replies under one specific tweet.
Build a profile reply archive
Use this route to collect replies authored by one profile. Keep the source profile ID with every reply. Also keep the replied-to tweet ID when available. Useful reply columns include:- Reply tweet ID, text, and creation time.
- Author username and numeric user ID.
- Parent or conversation identifiers.
- Like, reply, repost, quote, and view counts.
- Media URLs, cursor, and collection time.
Path parameters
string
required
X username or numeric user ID. Use a username such as
elonmusk when the
profile handle is known, or a numeric ID such as 44196397 when you store
stable user IDs.Query parameters
string
Pagination cursor for the With Replies timeline. Omit it for the first page,
then pass the
next_cursor value from the previous response to fetch the next
page.number
default:"20"
Automatic pages accept
1 through 300. Unprefixed legacy cursors accept
1 through 100. Source availability, filters, or credits can return fewer.boolean
default:"false"
Include parent tweet context for returned replies. Defaults to
false. Set it
to true when replies need conversation context.Tweet result filters
These optional filters apply totweets[] returned by this route. They keep the
same user target. Xquik filters rows after it fetches each page. Selective
filters can return fewer rows than an unfiltered page.
string
Filter to posts from this username. The
@ prefix is optional.string
Filter to replies directed to this username.
string
Filter to posts that mention this username.
string
Only include posts with this language code.
string
Include posts created on or after this date or timestamp.
string
Include posts before this date or timestamp.
string
Use
images, videos, gifs, media, links, or none.integer
Require this minimum like count.
integer
Require this minimum repost count.
integer
Require this minimum reply count.
integer
Require this minimum quote count.
integer
Require this minimum view count.
integer
Require this minimum bookmark count.
integer
Allow this maximum like count. Missing counts pass.
integer
Allow this maximum repost count. Missing counts pass.
integer
Allow this maximum reply count. Missing counts pass.
integer
Allow this maximum quote count. Missing counts pass.
boolean
When
true, only return posts from Blue-verified authors.boolean
When
true, only return posts from verified authors.string
Use
include, exclude, or only for replies.
This setting overrides includeReplies when the endpoint supports both.string
Use
include, exclude, or only for reposts.string
Match this literal phrase, including any hyphens.
string
Exclude comma-separated or whitespace-separated terms.
string
Require at least 1 comma-separated or whitespace-separated term.
string
Match these hashtags. Separate values with commas or spaces.
string
Match these cashtags. Separate values with commas or spaces.
string
Use
include, exclude, or only for quote posts.string
URL substring or domain that must appear in tweet URL entities.
string
Filter to tweets in this conversation thread.
string
Only include replies to this tweet ID.
string
Filter to quote tweets of this tweet ID.
string
Filter to retweets of this tweet ID.
string
Match the Tweet card name.
string
Match the source application.
string
Exclude Tweets from this source application.
string
Match latitude, longitude, and radius in X search syntax.
string
Return Tweets whose IDs exceed this ID.
string
Return Tweets at or below this ID.
string
Match this place name.
string
Set the radius for the
near filter.string
Match Tweets inside this recent time window.
boolean
When
true, only return native reposts.boolean
When
true, enable X safe-search filtering.boolean
When
true, only return news results.Headers
string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.Response
200 OK
object[]
Array of tweets from the user’s With Replies timeline.
Tweet object fields.
string
Tweet ID.
string
Tweet text content.
string
Tweet type. Omitted if unavailable.
string
ISO 8601 creation timestamp. Omitted if unavailable.
boolean
Whether this is a Note Tweet (long-form post). Omitted if unavailable.
number
Like count. Omitted if unavailable.
number
Retweet count. Omitted if unavailable.
number
Reply count. Omitted if unavailable.
number
Quote tweet count. Omitted if unavailable.
number
View count. Omitted if unavailable.
number
Bookmark count. Omitted if unavailable.
string
Permalink URL on X. Omitted if unavailable.
string
Tweet language code. Omitted if unavailable.
boolean
Whether the tweet is a reply. Omitted if unavailable.
string
Tweet ID being replied to. Omitted if not a reply.
string
User ID being replied to. Omitted if not a reply.
string
Username being replied to. Omitted if not a reply.
string
Conversation thread ID. Omitted if unavailable.
string
Client used to post the tweet. Omitted if unavailable.
number[]
Start and end offsets for rendered tweet text. Omitted if unavailable.
boolean
Whether replies are limited. Omitted if unavailable.
boolean
Whether this tweet quotes another tweet. Omitted if unavailable.
boolean
Whether this row is a retweet.
text carries the original post in full.object
Parsed entities (URLs, hashtags, mentions). Omitted if unavailable.
object
Disclosure metadata for paid partnership and AI-generated media labels. Includes
advertising.isPaidPromotion and aiGenerated.hasAiGeneratedMedia when X returns them. Omitted if unavailable.object
Tweet author profile. Omitted if unavailable.
Author object fields.
string
Author user ID.
string
Author X username.
string
Author display name.
number
Follower count. Omitted if unavailable.
boolean
Whether the author is verified. Omitted if unavailable.
string
Profile picture URL. Omitted if unavailable.
object[]
object
Embedded quoted tweet. Omitted if not a quote tweet.
object
Original retweeted tweet. Omitted if not a retweet.
boolean
Whether more results are available.
string
Opaque cursor for the next page. Empty string when no more results.
400 Invalid user ID
404 User not found
401 Unauthenticated
Anonymous requests getWWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.
402 Payment required
Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.502 X API unavailable
429 Rate limit exceeded
Retry-After header before retrying.
424 Dependency failed
Related. Get user timeline · Tweet replies · User media