curl -X GET "https://xquik.com/api/v1/extractions?limit=20&toolType=reply_extractor" \
-H "x-api-key: xq_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" | jq
Your API key. Session cookie authentication is also supported. Generate a key from the dashboard.
Query parameters
Number of extractions to return per page. Default: 50. Maximum: 100.
Filter by tool type. One of: reply_extractor, retweet_extractor, quote_extractor, follower_explorer, verified_follower_explorer, community_extractor, mention_tracker, user_search.
Filter by job status. One of: completed, failed, running.
Cursor for pagination. Use the nextCursor value from the previous response to fetch the next page.
Response
200 OK
401 Unauthenticated
Array of extraction job summaries.Show Extraction object properties
Unique extraction job ID.
Tool type used for this extraction.
Job status: completed, failed, or running.
Total number of extracted results.
ISO 8601 timestamp of when the job was created.
ISO 8601 timestamp of when the job finished. Only present for completed jobs.
Whether more results exist beyond this page.
Cursor to pass as the after parameter for the next page. Only present when hasMore is true.
{
"extractions": [
{
"id": "77777",
"toolType": "reply_extractor",
"status": "completed",
"totalResults": 150,
"createdAt": "2026-02-24T10:00:00.000Z",
"completedAt": "2026-02-24T10:00:12.000Z"
},
{
"id": "77770",
"toolType": "follower_explorer",
"status": "completed",
"totalResults": 4832,
"createdAt": "2026-02-23T18:30:00.000Z",
"completedAt": "2026-02-23T18:31:45.000Z"
},
{
"id": "77768",
"toolType": "retweet_extractor",
"status": "failed",
"totalResults": 0,
"createdAt": "2026-02-23T12:00:00.000Z"
}
],
"hasMore": true,
"nextCursor": "eyJjIjoiMjAyNi0wMi0yM1QxMjowMDowMC4wMDBaIiwiaSI6Ijc3NzY4In0"
}
{ "error": "unauthenticated" }
Missing or invalid API key.
Results are ordered by creation date (newest first). To iterate through all extractions:
- Make the initial request without the
after parameter.
- Check
hasMore in the response. If true, use nextCursor as the after value in the next request.
- Repeat until
hasMore is false.
let cursor = undefined;
const allExtractions = [];
do {
const params = new URLSearchParams({ limit: "100" });
if (cursor) params.set("after", cursor);
const response = await fetch(`https://xquik.com/api/v1/extractions?${params}`, {
headers: { "x-api-key": "xq_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2" },
});
const data = await response.json();
allExtractions.push(...data.extractions);
cursor = data.hasMore ? data.nextCursor : undefined;
} while (cursor);