Skip to main content
GET
/
extractions
/
{id}
Get extraction
curl --request GET \
  --url https://api.example.com/extractions/{id} \
  --header 'x-api-key: <x-api-key>'
Free — does not consume credits
curl -X GET "https://xquik.com/api/v1/extractions/a1b2c3d4-e5f6-7890-abcd-ef1234567890?limit=100" \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq

Headers

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

Path parameters

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

Query parameters

limit
number
Number of results to return per page. Default: 100. Maximum: 1000.
after
string
Result ID cursor for pagination. Use the nextCursor value from the previous response to fetch the next page.

Response

job
object
Extraction job metadata.
results
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.
Enrichment data is returned directly in the API response via the enrichmentData field and is also available through Export Extraction in CSV, XLSX, or Markdown format with flattened columns.
hasMore
boolean
Whether more results exist beyond this page.
nextCursor
string
Cursor to pass as the after parameter for the next page. Only present when hasMore is true.
{
  "job": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "toolType": "reply_extractor",
    "status": "completed",
    "totalResults": 150,
    "targetTweetId": "1893704267862470862",
    "createdAt": "2026-02-24T10:00:00.000Z",
    "completedAt": "2026-02-24T10:00:12.000Z"
  },
  "results": [
    {
      "id": "b2c3d4e5-f6a1-7890-abcd-ef2345678901",
      "xUserId": "44196397",
      "xUsername": "elonmusk",
      "xDisplayName": "Elon Musk",
      "xFollowersCount": 210500000,
      "xVerified": true,
      "xProfileImageUrl": "https://pbs.twimg.com/profile_images/el0n.jpg",
      "tweetId": "1893710452812718080",
      "tweetText": "This is a great thread, thanks for sharing.",
      "tweetCreatedAt": "2026-02-24T10:05:00.000Z",
      "createdAt": "2026-02-24T10:00:05.000Z"
    },
    {
      "id": "c3d4e5f6-a1b2-7890-abcd-ef3456789012",
      "xUserId": "1849726401547751424",
      "xUsername": "xquik_",
      "xDisplayName": "Xquik",
      "xFollowersCount": 2400,
      "xVerified": false,
      "xProfileImageUrl": "https://pbs.twimg.com/profile_images/xquik.jpg",
      "tweetId": "1893712000288563200",
      "tweetText": "Agreed, very useful tool.",
      "tweetCreatedAt": "2026-02-24T10:08:30.000Z",
      "createdAt": "2026-02-24T10:00:06.000Z"
    }
  ],
  "hasMore": true,
  "nextCursor": "c3d4e5f6-a1b2-7890-abcd-ef3456789012"
}

Paginating results

Results are ordered by ID ascending. To iterate through all results for a large extraction:
  1. Make the initial request without the after parameter.
  2. Check hasMore in the response. If true, use nextCursor as the after value in the next request.
  3. Repeat until hasMore is false.
const extractionId = "a1b2c3d4-e5f6-7890-abcd-ef1234567890";
let cursor = undefined;
const allResults = [];

do {
  const params = new URLSearchParams({ limit: "1000" });
  if (cursor) params.set("after", cursor);

  const response = await fetch(
    `https://xquik.com/api/v1/extractions/${extractionId}?${params}`,
    { headers: { "x-api-key": "xq_YOUR_KEY_HERE" } },
  );
  const data = await response.json();

  allResults.push(...data.results);
  cursor = data.hasMore ? data.nextCursor : undefined;
} while (cursor);
Next steps: Export Extraction to download all results as CSV, XLSX, or Markdown, or List Extractions to browse your job history.