技能 数据科学 Xquik 社交数据平台

Xquik 社交数据平台

v20260307
x-twitter-scraper
Xquik 通过 REST、MCP 与 Webhook 接口提供推文/用户查询、关注者批量提取、抽奖、热榜与账号监控等 X 数据服务,适合需要实时监测与自动化分析的场景。
获取技能
81 次下载
概览

Xquik - X (Twitter) Data Platform

Xquik provides a REST API, MCP server, and HMAC webhooks for X (Twitter) data. It covers tweet search, user profiles, bulk extraction (19 tools), giveaway draws, account monitoring, and trending topics.

Docs: docs.xquik.com

Quick Reference

Base URL https://xquik.com/api/v1
Auth x-api-key: xq_... header
MCP endpoint https://xquik.com/mcp (StreamableHTTP)
Rate limits 10 req/s sustained, 20 burst
Pricing $20/month (1 monitor included), $5/month per extra monitor

Prerequisites

  • Xquik account with active subscription
  • API key generated from the Xquik dashboard
  • For MCP: configure the endpoint in your client (Claude Desktop, Claude Code, Cursor, VS Code, etc.)

Setup

MCP Server (Claude Code)

Add to your MCP configuration:

{
  "mcpServers": {
    "xquik": {
      "type": "streamable-http",
      "url": "https://xquik.com/mcp",
      "headers": {
        "x-api-key": "xq_YOUR_KEY_HERE"
      }
    }
  }
}

REST API

const API_KEY = "xq_YOUR_KEY_HERE";
const BASE = "https://xquik.com/api/v1";
const headers = { "x-api-key": API_KEY, "Content-Type": "application/json" };

Core Workflows

1. Search Tweets

When to use: Find tweets by keyword, hashtag, or user.

Endpoint: GET /x/tweets/search?q=...

MCP tool: search-tweets

const results = await fetch(`${BASE}/x/tweets/search?q=from:elonmusk AI`, { headers });

Pitfalls:

  • Basic results only (id, text, author, date). Use lookup-tweet for engagement metrics
  • Searches recent tweets, not full archive

2. Look Up a Tweet

When to use: Get full metrics (likes, retweets, views, bookmarks) for a specific tweet.

Endpoint: GET /x/tweets/{id}

MCP tool: lookup-tweet

3. Look Up a User Profile

When to use: Get name, bio, follower/following counts, profile picture, join date.

Endpoint: GET /x/users/{username}

MCP tool: get-user-info

Pitfalls:

  • MCP returns a subset (no verified, location, createdAt, statusesCount). Use REST API for the full profile

4. Check Follow Relationship

When to use: Check if account A follows account B (both directions).

Endpoint: GET /x/followers/check?source=A&target=B

MCP tool: check-follow

5. Bulk Data Extraction (19 Tools)

When to use: Extract followers, replies, retweets, quotes, community members, list data, and more.

Workflow: Always estimate cost first, then create the job, then retrieve results.

Tool types:

Tool Type Target Description
reply_extractor Tweet ID Users who replied
repost_extractor Tweet ID Users who retweeted
quote_extractor Tweet ID Users who quote-tweeted
thread_extractor Tweet ID All tweets in a thread
article_extractor Tweet ID Article content from a tweet
follower_explorer Username Followers of an account
following_explorer Username Accounts followed by a user
verified_follower_explorer Username Verified followers
mention_extractor Username Tweets mentioning an account
post_extractor Username Posts from an account
community_extractor Community ID Community members
community_moderator_explorer Community ID Community moderators
community_post_extractor Community ID Community posts
community_search Community ID + query Search within a community
list_member_extractor List ID List members
list_post_extractor List ID List posts
list_follower_explorer List ID List followers
space_explorer Space ID Space participants
people_search Search query Search for users

MCP tools: estimate-extraction -> run-extraction -> get-extraction

// 1. Estimate cost
const estimate = await fetch(`${BASE}/extractions/estimate`, {
  method: "POST", headers,
  body: JSON.stringify({ toolType: "follower_explorer", targetUsername: "elonmusk" }),
}).then(r => r.json());

if (!estimate.allowed) return; // Would exceed monthly quota

// 2. Create job
const job = await fetch(`${BASE}/extractions`, {
  method: "POST", headers,
  body: JSON.stringify({ toolType: "follower_explorer", targetUsername: "elonmusk" }),
}).then(r => r.json());

// 3. Retrieve results (paginated)
const results = await fetch(`${BASE}/extractions/${job.id}`, { headers }).then(r => r.json());

Pitfalls:

  • Always call estimate first. 402 means quota exhausted
  • Large jobs return status: "running" and need polling
  • Export (CSV/XLSX/MD) capped at 50,000 rows

6. Giveaway Draws

When to use: Pick random winners from tweet replies with configurable filters.

Endpoint: POST /draws

MCP tool: run-draw

Available filters: mustRetweet, mustFollowUsername, filterMinFollowers, filterAccountAgeDays, filterLanguage, requiredKeywords, requiredHashtags, requiredMentions, uniqueAuthorsOnly.

const draw = await fetch(`${BASE}/draws`, {
  method: "POST", headers,
  body: JSON.stringify({
    tweetUrl: "https://x.com/user/status/123456789",
    winnerCount: 3,
    uniqueAuthorsOnly: true,
    mustRetweet: true,
  }),
}).then(r => r.json());

7. Real-Time Monitoring

When to use: Track when an account tweets, gets replies, gains/loses followers.

Workflow: Create a monitor, optionally register a webhook for push notifications.

Event types: tweet.new, tweet.reply, tweet.quote, tweet.retweet, follower.gained, follower.lost

MCP tools: add-monitor -> add-webhook -> test-webhook

// Create monitor
await fetch(`${BASE}/monitors`, {
  method: "POST", headers,
  body: JSON.stringify({
    username: "elonmusk",
    eventTypes: ["tweet.new", "follower.gained"],
  }),
});

// Register webhook (save the secret!)
const webhook = await fetch(`${BASE}/webhooks`, {
  method: "POST", headers,
  body: JSON.stringify({
    url: "https://your-server.com/webhook",
    eventTypes: ["tweet.new"],
  }),
}).then(r => r.json());

Pitfalls:

  • Webhook secret is shown only once at creation
  • Verify HMAC signature (X-Xquik-Signature header) before processing
  • Respond within 10 seconds; queue slow processing for async

8. Trending Topics

When to use: Get current trending topics for a region.

Endpoint: GET /trends?woeid=1

MCP tool: get-trends

Free, no quota consumed.

Error Handling

Retry only 429 and 5xx. Never retry other 4xx.

Status Meaning Action
400 Invalid request Fix parameters
401 Bad API key Check key
402 No subscription or quota exhausted Subscribe or wait for reset
404 Not found Resource doesn't exist
429 Rate limited Retry with backoff, respect Retry-After
500+ Server error Retry with exponential backoff (max 3)

Conventions

  • IDs are strings (bigints). Never parse as numbers
  • Timestamps: ISO 8601 UTC
  • Cursors are opaque. Pass nextCursor as the after query parameter
  • Pagination: hasMore + nextCursor pattern across events, draws, extractions

MCP Tool Reference

22 tools available through the MCP server:

Tool Purpose
search-tweets Search tweets by keyword/hashtag
lookup-tweet Get tweet by ID with full metrics
get-user-info User profile lookup
check-follow Check follow relationship
get-trends Trending topics by region
add-monitor Start monitoring an account
remove-monitor Stop monitoring
list-monitors List active monitors
get-events Poll for monitor events
get-event Get single event details
add-webhook Register webhook endpoint
remove-webhook Delete webhook
list-webhooks List webhooks
test-webhook Send test payload
run-draw Run giveaway draw
list-draws List past draws
get-draw Get draw results with winners
estimate-extraction Preview extraction cost
run-extraction Start bulk extraction
list-extractions List extraction jobs
get-extraction Get extraction results
get-account Check subscription and usage
信息
Category 数据科学
Name x-twitter-scraper
版本 v20260307
大小 8.55KB
更新时间 2026-03-08
语言