Skip to main content
GET
Twitter extraction status & result progress
Free - does not consume credits

Headers

string
required
Your API key. Session cookie authentication is also supported. Generate a key from the dashboard.

Path parameters

string
required
Extraction job ID returned from Create Extraction or List Extractions.

Query parameters

number
Number of results to return per page. Default and maximum: 1000.
string
Pass the previous nextCursor unchanged. Do not send offset; it returns 400.
number
Wait up to 10 seconds when the job is active. Defaults to 0.
string
Use compact for core fields and tweet counts. Use full for nested enrichment. Use raw for a source copy. Defaults to full.
string
Keep enrichment nested or merge it with flat.
string
Field names: source, camelCase, or snake_case.
boolean
Deprecated. Use outputMode=raw.

Response

200 OK

object
Extraction job metadata. Job object fields.
string
Unique extraction job ID.
string
Tool type used for this extraction.
string
Job status: completed, failed, or running.
number
Total number of extracted results.
string
Target tweet ID. Present for tweet-based tools.
string
Target username. Present for user-based tools.
string
Target X user ID. Present for user-based tools.
string
Target community ID. Present for community_extractor, community_moderator_explorer, community_post_extractor, community_search.
string
Search query. Present for people_search, community_search.
string
Error description. Only present for failed jobs.
string
ISO 8601 timestamp of when the job was created.
string
ISO 8601 timestamp of when the job finished. Only present for completed jobs.
object[]
Array of extracted user/tweet records for the current page.
Only id and xUserId are guaranteed on every result. All other fields are omitted entirely when unavailable (never set to null). Always check for the presence of a field before accessing it.
Result object fields.
string
required
Unique result ID.
string
required
X user ID.
string
X username (handle). Omitted if unavailable.
string
X display name. Omitted if unavailable.
number
Follower count at time of extraction. Omitted if unavailable.
boolean
Whether the user has a verified badge. Omitted if unavailable.
string
URL to the user’s profile image. Omitted if unavailable.
string
Tweet ID. Omitted for non-tweet-based extractions.
string
Canonical X post URL. Omitted for non-tweet-based extractions.
string
Tweet text content. Omitted for non-tweet-based extractions.
string
ISO 8601 timestamp of the tweet. Omitted for non-tweet-based extractions.
object[]
Attached media with outputPreset=flat. Full nested output stores it at enrichmentData.tweet.media.
number
Likes. Omitted when unavailable.
number
Reposts. Omitted when unavailable.
number
Replies. Omitted when unavailable.
number
Quotes. Omitted when unavailable.
number
Views. Omitted when unavailable.
number
Bookmarks. Omitted when unavailable.
string
ISO 8601 timestamp of when the result was created.
object
Additional profile, Tweet, media, and article metadata. Compact output omits this object. Full output keeps it nested. Flat output merges its fields into the result.
boolean
Whether more results exist beyond this page.
number
Recommended delay before another immediate check.
string
Relative polling URL. It waits 10 seconds and returns 1 compact row.
string
Cursor for the next cursor parameter. Only present when hasMore is true.
With outputMode=compact, tweet results keep tweetUrl, likeCount, retweetCount, replyCount, quoteCount, viewCount, and bookmarkCount. Compact output omits xProfileImageUrl and enrichmentData.

401 Unauthenticated

Missing or invalid API key.

404 Not found

No extraction job exists with this ID, or it belongs to a different account.

429 Rate limited

Wait for the Retry-After value before polling again.

Paginating results

Results are ordered by ID ascending. To iterate through all results for a large extraction:
  1. Make the initial request without the cursor parameter.
  2. Check hasMore. Pass nextCursor as the next cursor value.
  3. Repeat until hasMore is false.

Cursor handoff

Use GET /extractions/{id} when an integration needs structured JSON rows, incremental checkpoints, or more rows than a file export can return. Treat nextCursor as an opaque checkpoint and pass it back as cursor.

Page checkpoint

Store extraction_id, page_index, page_cursor, next_cursor, has_more, and result_count after each successful page.

Row shape

Persist selected fields such as row_id, x_user_id, x_username, tweet_id, and tweet_text. Do not dump raw result arrays into shared logs.

Large jobs

Stream pages to xquik-extraction-results.jsonl when you need replayable rows or results beyond the export row cap.

File handoff

Use Export Extraction when CSV, JSON, XLSX, Markdown, PDF, or TXT files are enough.
Store page checkpoints separately from row data:
Next steps. Export Extraction to download all results as CSV, XLSX, or Markdown, or List Extractions to browse your job history.