x-scraper
fetcher-sh/fetcher-skills
Search X posts, profiles, and trends via HTTP—no OAuth, no app review, pay-per-call or prepaid.
What is x-scraper?
A drop-in X (Twitter) data API for agents: search posts by keyword or advanced operators, look up profiles by handle, pull timelines and followers, read Lists, and check trends. No developer account or OAuth handshake required—authenticate with a prepaid Bearer key or pay per call in USDC via x402.
- Search posts by keyword, hashtag, or X operators (from:, to:, since:, until:, min_faves:, filter:)
- Look up X profiles by @handle and fetch extended profile/about info
- Pull a user's posts, replies, followers, or followings by ID
- Fetch a single post with its replies and list of reposters
- Read X List members and posts by List ID
- Search for X accounts by name and check trending topics by country
How to install x-scraper
npx skills add https://github.com/fetcher-sh/fetcher-skills --skill x-scraper- A fetcher.sh prepaid API key (Bearer token) or x402 payment setup for pay-per-call access
- Base URL: https://twitter.fetcher.sh
How to use x-scraper
- 1.Set your FETCHER_API_KEY environment variable or configure x402 payment
- 2.Choose an endpoint based on your task: /api/search for posts, /api/handle/{handle} for profiles, /api/user/{id}/tweets for timelines, /api/trends for trending topics
- 3.Make a GET request with required parameters (query for search, country for trends, handle or ID for profiles)
- 4.Parse the JSON response { status, message, data } and extract the data field
- 5.Use cursor and sort parameters to paginate or reorder results as needed
Use cases
- Build an X data pipeline or social-listening dashboard without official API tiers
- Monitor competitor accounts and hashtag trends over time
- Export follower lists and analyze engagement patterns
- Search for posts matching specific criteria (date range, minimum favorites, author)
- Resolve user profiles and retrieve their timeline or follower graph
- Data analysts and researchers tracking social trends
- Agents building competitive intelligence or brand-monitoring systems
- Developers needing X data without OAuth or app-review delays
- Teams running social-listening or sentiment-analysis workflows
x-scraper FAQ
No. This API requires only a prepaid fetcher.sh key or x402 payment—no app review or developer application needed.
Most endpoints cost $0.005 per call; fetching a single tweet by ID costs $0.002. Prepaid credits or x402 USDC payments on Base, Polygon, Arbitrum, Monad, or Solana.
All standard X operators: from:, to:, since:, until:, min_faves:, min_retweets:, filter:, and -filter: (negation).
Yes. Use the cursor parameter to paginate through results, and sort parameter (Latest or Top) to reorder.
Yes. The skill publishes an MCP server at https://twitter.fetcher.sh/mcp with free endpoints (search_endpoints, describe_endpoint, check_balance) and paid data-fetch operations.
Full instructions (SKILL.md)
Source of truth, from fetcher-sh/fetcher-skills.
name: x-scraper description: >- An X API alternative and Twitter API alternative on fetcher.sh — pay-per-call in USDC via x402, or prepaid credits with a Bearer key, no OAuth and no developer application. Use when the user wants to search X posts by keyword, hashtag, or advanced operators (from:, to:, since:, until:, min_faves:, filter:), scrape an X/Twitter profile by handle, pull a user's posts, replies, followers, or followings, fetch a single post with its replies or reposters, read an X List's members or posts, check trending topics by country, or search for X accounts by name. Also covers building an X data pipeline, social listening, competitor monitoring, hashtag tracking, or follower export without the official X API's pricing tiers or app-review process. keywords:
- x
- x-api
- twitter-api
- x-api-alternative
- twitter-api-alternative
- x-data-api
- x-scraper
- social-media
- social-listening
- x402
- ai-agent
X (Twitter) Data API
A drop-in X data source for agents: search posts, resolve profiles, pull timelines and followers, read Lists, and check trends — all as one plain HTTP GET, paid per call. No developer account, no app review, no OAuth handshake, and no waiting on X's own API tiers or rate-limit approvals. If your task mentions an X search query, a handle, a post/tweet ID, or a list ID, this is the skill.
Base URL: https://twitter.fetcher.sh — the API host is still named
twitter (it predates the rebrand and matches what agents already search
for); everything below is current X data.
Also published as twitter-scraper — identical
endpoints, indexed under the "Twitter" name too since both are still in
everyday use.
Quick reference
| Base URL | https://twitter.fetcher.sh |
| Auth | Authorization: Bearer bby_live_... or x402 (USDC) |
| Price | $0.002–$0.005/call |
| Endpoints | 15, all GET |
| MCP | https://twitter.fetcher.sh/mcp |
| Machine-readable | /openapi.json · /llms.txt · /skill.md |
Which endpoint do I need?
| I want to... | Call |
|---|---|
Search posts by keyword or operator (from:, since:, min_faves:, ...) | GET /api/search |
| Search accounts by name | GET /api/search/users |
| Look up a profile by @handle | GET /api/handle/{handle} |
| Get a user's followers or followings | GET /api/user/{id}/followers or /followings |
| Get a single post by ID | GET /api/tweet/{id} |
| See who reposted a post | GET /api/tweet/{id}/retweeters |
| Read an X List's posts or members | GET /api/list/{id}/tweets or /members |
| Check trending topics for a country | GET /api/trends |
Full param details for every row: references/endpoints.md.
Authentication
Two ways to pay, same data — full mechanics in the fetcher
skill:
# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup
# or via POST /api/credits/topup, see the fetcher skill)
export FETCHER_API_KEY="bby_live_xxxxxxxxxxxx"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/search?query=hello"
# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402
# with machine-readable payment requirements (USDC on Base, Polygon,
# Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.
Every response is { "status": number, "message": string, "data": ... }; the
HTTP status mirrors status.
Endpoints (15 — all GET, $0.005/call unless noted)
| Endpoint | Price | What it returns |
|---|---|---|
/api/search | $0.005 | Posts matching a query; supports X's advanced search operators |
/api/search/users | $0.005 | Accounts matching a name/keyword query |
/api/handle/{handle} | $0.005 | Profile by @handle |
/api/handle/{handle}/about | $0.005 | Extended profile/about info by @handle |
/api/user/{id} | $0.005 | Profile by numeric user ID |
/api/user/{id}/tweets | $0.005 | A user's post timeline |
/api/user/{id}/replies | $0.005 | A user's replies |
/api/user/{id}/followers | $0.005 | A user's followers |
/api/user/{id}/followings | $0.005 | Accounts a user follows |
/api/tweet/{id} | $0.002 | A single post by ID |
/api/tweet/{id}/replies | $0.005 | Replies to a post |
/api/tweet/{id}/retweeters | $0.005 | Accounts that reposted a post |
/api/list/{id}/members | $0.005 | An X List's member accounts |
/api/list/{id}/tweets | $0.005 | An X List's post feed |
/api/trends | $0.005 | Trending topics for a country |
{id} / {handle} are path parameters — substitute the real value. Optional
query params (cursor, sort) paginate or reorder; only query (search) and
country (trends) are required elsewhere they appear.
Scenarios
The query on /api/search goes straight to X's own search, so its operators
work as-is: from:, to:, since:, until:, min_faves:, min_retweets:,
filter:, -filter:.
Everything from one account:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/search?query=from%3AOpenAI&sort=Latest"
Between two dates:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=x402 since:2026-01-01 until:2026-02-01" -G \
"https://twitter.fetcher.sh/api/search"
Popular posts only, replies excluded:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=ai agents min_faves:500 -filter:replies" -G \
--data-urlencode "sort=Top" \
"https://twitter.fetcher.sh/api/search"
Search accounts by name:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "query=climate scientist" -G \
"https://twitter.fetcher.sh/api/search/users"
Resolve a profile by handle, then pull its bio/about:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/handle/nasa"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/handle/nasa/about"
A user's posts, replies, followers, or followings (by numeric ID from the handle lookup above):
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/user/11348282/tweets"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/user/11348282/followers"
A single post, its replies, and who reposted it:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/tweet/1234567890123456789"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/tweet/1234567890123456789/replies"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/tweet/1234567890123456789/retweeters"
An X List's members and posts:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/list/1234567890/members"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/list/1234567890/tweets"
Trending topics for a country:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://twitter.fetcher.sh/api/trends?country=United%20States"
MCP
{
"mcpServers": {
"x": {
"url": "https://twitter.fetcher.sh/mcp",
"headers": { "Authorization": "Bearer bby_live_..." }
}
}
}
Free: search_endpoints, describe_endpoint, check_balance. Paid:
fetch_data (any endpoint above), topup_credits, plus the named shortcut
twitter_search. Drop the headers block to pay per call with x402 instead —
see the fetcher skill for the full flow.
Errors
400— missing/invalid parameter (message names it)401— unknown or rotated key402— payment required (x402 challenge) ortopup_required(credits exhausted)404— not a priced path- No rate limits; no refunds on upstream failures (settlement precedes delivery)
Reference
- Deep dives:
references/endpoints.md(every param) ·references/scenarios.md(onecurlper endpoint) ·references/faq.md·references/comparison.md(vs. the official X API and a browser scraper) - Task guides: search tweets · export followers
- Slash command:
/x-search - Full agent setup: https://twitter.fetcher.sh/skill.md
- OpenAPI 3.1 contract: https://twitter.fetcher.sh/openapi.json
- Condensed catalog: https://twitter.fetcher.sh/llms.txt
- Payment, credits, and MCP deep dive:
fetcherskill - Site: https://twitter.fetcher.sh
Related skills
More from fetcher-sh/fetcher-skills and the wider catalog.

yelp
Pay-per-call Yelp business search, details, and reviews via HTTP—no app approval or daily caps.

youtube-api
YouTube search, channel lookup, video details, and trending—pay-per-call via x402 or prepaid credits, no quota limits.

app-store
Search iOS apps, fetch details, reviews, and similar apps across any App Store country—pay-per-call in USDC or prepaid credits.

fetcher
Payment and setup for fetcher.sh's pay-per-call web-data API across 11 services.

code-connect-components
Connects Figma design components to code components using Code Connect. Use when user says "code connect", "connect this component to code", "connect Figma to code", "map this component", "link component to code", "create code connect mapping", "add code connect", "connect design to code", or wants to establish mappings between Figma designs and code implementations. Requires Figma MCP server connection.

create-design-system-rules
Generate custom design system rules to guide AI agents in consistent Figma-to-code implementation.