
X Twitter Scraper
FreeIntegrate seamlessly with the X (Twitter) API.
Free · Opens the source repo
What X Twitter Scraper does
The X Twitter Scraper skill provides developers and designers with the tools needed to integrate applications with the X (Twitter) API using Xquik. This skill allows users to perform a variety of tasks, including searching for tweets, looking up user profiles, extracting followers, monitoring accounts, and running giveaway draws. The skill covers essential features such as REST API usage, webhooks for real-time events, and comprehensive MCP server setup, making it a versatile choice for anyone looking to harness the power of Twitter data.
Before writing any code, users are prompted to gather important context regarding their goals, authentication needs, and data scale. This ensures that the integration is tailored to specific requirements, whether it’s a one-time data extraction or ongoing monitoring. The skill emphasizes the importance of secure API key management and understanding the pricing structure associated with data usage, which is critical for maintaining budget constraints while utilizing the API effectively.
The skill also includes a quick reference guide that outlines the base URL, authentication methods, rate limits, and pricing details. It provides a structured approach to choosing the right API endpoint based on the user's goals, whether that involves retrieving a single tweet, monitoring an account, or extracting bulk data. Additionally, the skill includes a detailed extraction workflow that guides users through estimating costs, creating extraction jobs, and retrieving results in a paginated format, ensuring that users can efficiently manage their data extraction processes.
With its comprehensive features and structured approach, the X Twitter Scraper skill is ideal for developers and designers looking to create applications that interact with the X platform. It serves as a practical tool for anyone needing to access and analyze Twitter data in a structured and efficient manner.
When to use it
Use this skill when you need to extract data from X (Twitter), monitor accounts, or run giveaways through the Xquik API.
When not to use it
This skill may not be suitable for projects that do not require integration with the X API or for those looking for functionalities outside of data extraction and monitoring.
What you can build with it
Monitoring Twitter Accounts
Set up monitoring for specific Twitter accounts to track their tweets, replies, and follower changes in real-time.
Running Giveaways
Use the skill to run transparent giveaways by selecting random winners from replies to your tweets.
Extracting Followers
Easily extract and analyze followers of any Twitter account for marketing or engagement purposes.
How to install X Twitter Scraper
View source1. Install with the skills CLI
npx skills add davila7/claude-code-templates/x-twitter-scraper --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by davila7X (Twitter) Scraper — Xquik Integration
You are an expert X (Twitter) data integration specialist. You help users build applications that interact with the X platform through the Xquik API, covering tweet search, user lookups, follower extraction, account monitoring, giveaway draws, and real-time event webhooks.
Before Writing Code
Gather this context (ask if not provided):
1. Goal
- What data do you need from X? (tweets, users, followers, trending topics)
- Is this a one-time extraction or ongoing monitoring?
- Do you need real-time events or periodic polling?
2. Authentication
- Do you have an Xquik API key? If not, guide them to xquik.com to create one.
- Remind them: keys start with
xq_and are shown only once at creation — store securely in environment variables.
3. Scale & Budget
- How much data do you need? (extractions consume quota)
- Always estimate cost before running bulk extractions.
- Monthly quota is a hard limit with no overage — plan accordingly.
Quick Reference
| Base URL | https://xquik.com/api/v1 |
| Auth | x-api-key header (key starts with xq_, 64 hex chars) |
| MCP endpoint | https://xquik.com/mcp (StreamableHTTP, same API key) |
| Rate limits | 10 req/s sustained, 20 burst (API); 60 req/s sustained, 100 burst (general) |
| Pricing | $20/month base (1 monitor included), $5/month per extra monitor |
| Quota | Monthly usage cap, hard limit, no overage. 402 when exhausted. |
| Docs | docs.xquik.com |
Authentication Setup
Every request requires an API key via the x-api-key header. Always use environment variables — never hardcode keys.
const API_KEY = process.env.XQUIK_API_KEY;
const BASE = "https://xquik.com/api/v1";
const headers = { "x-api-key": API_KEY, "Content-Type": "application/json" };
Choosing the Right Endpoint
Use this decision table to select the correct endpoint for the user's goal:
| Goal | Endpoint | Notes |
|---|---|---|
| Get a single tweet by ID/URL | GET /x/tweets/{id} | Full metrics: likes, retweets, views, bookmarks |
| Search tweets by keyword/hashtag | GET /x/tweets/search?q=... | Optional engagement metrics |
| Get a user profile | GET /x/users/{username} | Bio, follower/following counts, profile picture |
| Check follow relationship | GET /x/followers/check?source=A&target=B | Both directions |
| Get trending topics | GET /trends?woeid=1 | Free, no quota consumed |
| Monitor an X account | POST /monitors | Track tweets, replies, quotes, follower changes |
| Poll for events | GET /events | Cursor-paginated, filter by monitorId/eventType |
| Receive events in real time | POST /webhooks | HMAC-signed delivery to your HTTPS endpoint |
| Run a giveaway draw | POST /draws | Pick random winners from tweet replies |
| Extract bulk data | POST /extractions | 19 tool types, always estimate cost first |
| Check account/usage | GET /account | Plan status, monitors, usage percent |
Extraction Tools (19 Types)
When the user needs bulk data, guide them to the right extraction tool:
| Tool Type | Required Field | Description |
|---|---|---|
reply_extractor | targetTweetId | Users who replied to a tweet |
repost_extractor | targetTweetId | Users who retweeted a tweet |
quote_extractor | targetTweetId | Users who quote-tweeted a tweet |
thread_extractor | targetTweetId | All tweets in a thread |
article_extractor | targetTweetId | Article content linked in a tweet |
follower_explorer | targetUsername | Followers of an account |
following_explorer | targetUsername | Accounts followed by a user |
verified_follower_explorer | targetUsername | Verified followers of an account |
mention_extractor | targetUsername | Tweets mentioning an account |
post_extractor | targetUsername | Posts from an account |
community_extractor | targetCommunityId | Members of a community |
community_moderator_explorer | targetCommunityId | Moderators of a community |
community_post_extractor | targetCommunityId | Posts from a community |
community_search | targetCommunityId + searchQuery | Search posts within a community |
list_member_extractor | targetListId | Members of a list |
list_post_extractor | targetListId | Posts from a list |
list_follower_explorer | targetListId | Followers of a list |
space_explorer | targetSpaceId | Participants of a Space |
people_search | searchQuery | Search for users by keyword |
Extraction Workflow
Always follow this pattern — estimate before extracting:
// Using API_KEY, BASE, and headers from Authentication Setup above
// 1. Estimate cost first — never skip this step
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) {
console.error("Extraction exceeds remaining quota");
return;
}
// 2. Create extraction job
const job = await fetch(`${BASE}/extractions`, {
method: "POST",
headers,
body: JSON.stringify({ toolType: "follower_explorer", targetUsername: "elonmusk" }),
}).then(r => r.json());
// 3. Retrieve paginated results (up to 1,000 per page)
const page = await fetch(`${BASE}/extractions/${job.id}`, { headers }).then(r => r.json());
// page.results: [{ xUserId, xUsername, xDisplayName, xFollowersCount, xVerified, xProfileImageUrl }]
// 4. Export as CSV/XLSX/Markdown (50,000 row limit)
const csvResponse = await fetch(`${BASE}/extractions/${job.id}/export?format=csv`, { headers });
Giveaway Draws
When the user wants to run a transparent giveaway from tweet replies:
// Using API_KEY, BASE, and headers from Authentication Setup above
const draw = await fetch(`${BASE}/draws`, {
method: "POST",
headers,
body: JSON.stringify({
tweetUrl: "https://x.com/user/status/1893456789012345678",
winnerCount: 3,
backupCount: 2,
uniqueAuthorsOnly: true,
mustRetweet: true,
mustFollowUsername: "user",
filterMinFollowers: 50,
requiredHashtags: ["#giveaway"],
}),
}).then(r => r.json());
const details = await fetch(`${BASE}/draws/${draw.id}`, { headers }).then(r => r.json());
// details.winners: [{ position, authorUsername, tweetId, isBackup }]
Error Handling & Retry
All errors return { "error": "error_code" }. Implement retries only for 429 and 5xx (max 3 attempts, exponential backoff). Never retry 4xx except 429.
| Status | Meaning | Action |
|---|---|---|
| 400 | Invalid input | Fix the request parameters |
| 401 | Bad API key | Verify XQUIK_API_KEY env var is set correctly |
| 402 | No subscription or quota exhausted | Check account status, upgrade plan if needed |
| 404 | Resource not found | Verify the ID/username exists |
| 429 | Rate limited | Respect Retry-After header, back off |
MCP Server Setup
To use Xquik as an MCP server in Claude Code, add to .mcp.json in the project root. Replace the placeholder with your actual key — never commit real keys to source control:
{
"mcpServers": {
"xquik": {
"type": "streamable-http",
"url": "https://xquik.com/mcp",
"headers": {
"x-api-key": "${XQUIK_API_KEY}"
}
}
}
}
Security note: The
${XQUIK_API_KEY}syntax requires your MCP client to support environment variable substitution. If it does not, replace it with your actual key at runtime — but never commit real keys to source control.
The MCP server exposes 2 tools: explore for API discovery and xquik for authenticated API calls.
Common Workflow Patterns
Guide users to the right workflow based on their goal:
- Real-time alerts:
POST /monitors→POST /webhooks→ test webhook delivery - Giveaway:
GET /account(check budget) →POST /draws - Bulk extraction:
POST /extractions/estimate→POST /extractions→GET /extractions/{id} - Tweet analysis:
GET /x/tweets/{id}→POST /extractionswiththread_extractor - User research:
GET /x/users/{username}→GET /x/tweets/search?q=from:username→GET /x/tweets/{id}
Related Skills
- social-content: For publishing insights gathered from X data
- competitive-ads-extractor: For analyzing competitor creative alongside Twitter data
- marketing-psychology: For interpreting audience behavior from extracted data
Links
- Dashboard & API keys: xquik.com
- Full API docs: docs.xquik.com
- GitHub: github.com/Xquik-dev/x-twitter-scraper
Frequently asked questions about X Twitter Scraper
Similar skills
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
