> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/twitter>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/twitter.mdx>

---

# X (Twitter) scraper API. Every tweet, as JSON.

Profiles, tweets, replies, followers and search in one request. No developer account, no app approval and no X API tier to buy.

- No developer account
- Lists, communities and Spaces
- Batch profiles and posts

Pull public X data as JSON: profiles and follower counts, timelines, single posts with engagement metrics, reply threads, follower and following lists, operator search, hashtags, communities, lists, and video transcripts.

X's official API requires a developer account, app approval, and paid tiers before you get meaningful read volume. Social Fetch skips all of that: no developer contract, no OAuth, and no scraper or proxy fleet of your own to keep alive when X changes its front end.

Requests run live on one API key that covers all 25 platforms, with the same response envelope everywhere. You pay per lookup in credits, and `meta.creditsCharged` shows exactly what each call cost. New accounts get 100 free credits, no credit card required.

## What you can get

- Profile card by handle — bio, avatar, verification flags, and follower/post metrics from `GET /v1/twitter/profiles/{handle}`.
- Handle timeline with cursor pagination (`limit` up to 100) and optional `includeReplies` / `includePinned` toggles.
- Single tweet by permalink or numeric id — text, engagement metrics, media, entities, and quote/reply/retweet flags, with an optional `trim` mode for a smaller body.
- Reply thread under a status URL, cursor-paged, with `conversationId` and `inReplyToStatusId` linkage.
- Video tweet transcripts — a plain spoken-text string, an explicit null when speech isn't detected, and a typed rejection for clips too long to transcribe.
- Operator-first search with `section` tabs (`top` / `latest` / `people` / `photos` / `videos`). Use the advanced search query builder to compile a query.
- Hashtag-led discovery with the same section-tab pattern plus `data.people` rows.
- Community metadata (member count, join policy, rules, creator) and paged community post feeds by permalink.

## X (Twitter) endpoints

| Endpoint | Request | Credits | Docs |
| --- | --- | --- | --- |
| Profile | GET /v1/twitter/profiles/{handle} | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/get) |
| Profiles | GET /v1/twitter/profiles | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/get) |
| About account | GET /v1/twitter/profiles/{handle}/about | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/about/get) |
| Profile followers | GET /v1/twitter/profiles/{handle}/followers | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/followers/get) |
| Verified followers | GET /v1/twitter/profiles/{handle}/followers/verified | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/followers/verified/get) |
| Follower ids | GET /v1/twitter/profiles/{handle}/followers/ids | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/followers/ids/get) |
| Profile following | GET /v1/twitter/profiles/{handle}/following | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/following/get) |
| Following ids | GET /v1/twitter/profiles/{handle}/following/ids | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/following/ids/get) |
| Subscriptions | GET /v1/twitter/profiles/{handle}/subscriptions | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/subscriptions/get) |
| Friendship | GET /v1/twitter/friendships | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/friendships/get) |
| Profile tweets | GET /v1/twitter/profiles/{handle}/tweets | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/profiles/handle/tweets/get) |
| Tweet | GET /v1/twitter/tweets | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/get) |
| Tweets | GET /v1/twitter/tweets/batch | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/batch/get) |
| Tweet quotes | GET /v1/twitter/tweets/quotes | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/quotes/get) |
| Retweeters | GET /v1/twitter/tweets/retweets | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/retweets/get) |
| Tweet replies | GET /v1/twitter/tweets/replies | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/replies/get) |
| Transcript | GET /v1/twitter/tweets/transcript | 1 credit +10 credits per started minute of transcribed video, up to 60 minutes (allowLongTranscription) Max 601 credits Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/tweets/transcript/get) |
| Search | GET /v1/twitter/search | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/search/get) |
| Hashtag search | GET /v1/twitter/hashtags | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/hashtags/get) |
| Community | GET /v1/twitter/communities | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/communities/get) |
| Community tweets | GET /v1/twitter/communities/tweets | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/communities/tweets/get) |
| Community members | GET /v1/twitter/communities/members | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/communities/members/get) |
| Community search | GET /v1/twitter/communities/search | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/communities/search/get) |
| List | GET /v1/twitter/lists | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/lists/get) |
| List tweets | GET /v1/twitter/lists/tweets | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/lists/tweets/get) |
| List members | GET /v1/twitter/lists/members | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/lists/members/get) |
| List followers | GET /v1/twitter/lists/followers | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/lists/followers/get) |
| Space | GET /v1/twitter/spaces | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/spaces/get) |
| Space stream | GET /v1/twitter/spaces/stream | 1 credit Failed requests are free | [docs](https://www.socialfetch.dev/docs/api/v1/twitter/spaces/stream/get) |

## How to start

1. **Create an API key.** Sign up at Social Fetch and copy a key (`sfk_…`). New accounts get 100 free credits — enough to check a profile card, pull one tweet, and run a search page against live X data.
2. **Call a Twitter route.** Start with `GET /v1/twitter/profiles/{handle}` for identity, then add `.../tweets`, `GET /v1/twitter/tweets`, `.../replies`, `.../transcript`, `search`, `hashtags`, or `communities` as the job needs. Send `x-api-key` on every request.
3. **Read the shared envelope.** Branch on `data.lookupStatus` before writing a row. Log `meta.requestId` for support. Bill against `meta.creditsCharged` — Twitter lookups and timeline, search, hashtag, and reply-thread pages each run 1 credit, and the field is the source of truth.

## Pricing

Twitter routes charge 1 credit per successful request, including `GET /v1/twitter/profiles/{handle}`, `GET /v1/twitter/profiles/{handle}/tweets`, `GET /v1/twitter/search`, `GET /v1/twitter/hashtags`, and `GET /v1/twitter/tweets/replies`. Each paginated page is billed separately. Credits never expire on pay-as-you-go packs, and signup includes 100 free credits. Always confirm the actual cost from `meta.creditsCharged` on the response — this note is a guide, not the source of truth.

## Compared with the official API

X official API is for posting, account management, and enterprise products under your own developer contract — paid tiers with rate limits. Social Fetch is public-data lookup with a Social Fetch API key, credit-metered per request, same envelope as the rest of the marketplace.

## FAQ

### Is there an X / Twitter API that doesn't require a developer account?

Yes. Social Fetch's nine Twitter routes read public profiles, timelines, single tweets, reply threads, video transcripts, search, hashtags, and communities over REST. You authenticate with a Social Fetch API key only — no X developer account, app approval, or OAuth.

### What X / Twitter data can I pull with Social Fetch?

Profile cards (`GET /v1/twitter/profiles/{handle}`), handle timelines (`.../tweets`), single tweets by URL or id (`GET /v1/twitter/tweets`), reply threads (`.../replies`), video tweet transcripts (`.../transcript`), operator-first and hashtag search (`GET /v1/twitter/search`, `GET /v1/twitter/hashtags`), and community metadata plus community posts (`GET /v1/twitter/communities`, `.../tweets`). Exact parameters and response fields are on each endpoint page linked from this hub.

### How do I fetch a single tweet by URL?

Call `GET /v1/twitter/tweets` with a required `url` query param — a tweet permalink (`x.com` or `twitter.com` `/status/...`) or a bare numeric id. Read `data.lookupStatus`, then `data.tweet` and `data.author`. Pass `trim=true` for a smaller payload that omits author and tweet core detail.

### How do I list tweets for a handle?

Call `GET /v1/twitter/profiles/{handle}/tweets`. Optional params: `limit` (default 40, max 100), `cursor`, `includeReplies` (default false), and `includePinned` (default false, first page only). Page forward with `data.page.nextCursor` while `data.page.hasMore` is true.

### Can I get replies to a specific tweet?

Yes. `GET /v1/twitter/tweets/replies` takes the same `url` (or numeric id) input as the single-tweet route and returns `data.replies` with `conversationId` / `inReplyToStatusId` linkage, cursor-paged the same way as profile tweets.

### Can I get a transcript of a video tweet?

Yes, via `GET /v1/twitter/tweets/transcript`. `data.transcript` is a plain string when speech is detected, or null when it isn't — a `found` lookupStatus does not guarantee text. Videos that exceed the supported length return HTTP 400 `video_too_long_for_transcription` rather than a null string on 200.

### What is the difference between Twitter search and hashtag search?

`GET /v1/twitter/search` is operator-first search — `from:`, `OR`, quotes, `#hashtag`, `filter:`, and `-negation` belong in `query`, and typed extras compile after it. `GET /v1/twitter/hashtags` is discovery for one specific tag. Both share the same `section` tabs (`top`, `latest`, `people`, `photos`, `videos`) and cursor pagination, but they are separate operations with separate credit charges — a `#tag` inside search is not the same call as the hashtag route.

### What are X Communities, and can I pull their posts?

Communities are X's topic rooms, addressed by an `x.com/i/communities/{id}` permalink. `GET /v1/twitter/communities` returns the card — name, member count, `joinPolicy` (`open` or `restricted`), rules, and creator. `GET /v1/twitter/communities/tweets` pages the posts published inside. Both take the community URL, not a handle or hashtag.

### What happens for private, suspended, or deleted accounts and tweets?

Social Fetch does not invent public data for inaccessible accounts or posts. Branch on `data.lookupStatus` (`found`, `not_found`, and related typed outcomes documented per route) before writing a row. A `found` profile can still page zero tweets under a restrictive filter, and a `found` community-tweets call can return an empty `tweets` array when the room has no matching posts — check the array length, not just the status.

### How much does the Twitter API cost on Social Fetch?

1 credit per successful request, including profile cards, single tweets, transcripts, communities, handle timelines, search, hashtag search, and reply threads. Each paginated page is a separate billed call. Pack pricing is on `/pricing`; confirm the actual cost on every response with `meta.creditsCharged`.

## Related

- [X profile lookup API](https://www.socialfetch.dev/platforms/twitter/profiles-handle): Public profile card by handle — bio, avatar, verification, and metrics.
- [X profile tweets API](https://www.socialfetch.dev/platforms/twitter/profiles-handle-tweets): Page a handle's public timeline with cursor pagination and reply/pinned toggles.
- [X single tweet API](https://www.socialfetch.dev/platforms/twitter/tweets): Resolve one public tweet by permalink or numeric id.
- [X tweet replies API](https://www.socialfetch.dev/platforms/twitter/tweets-replies): List the reply thread under a status URL, cursor-paged.
- [X video tweet transcript API](https://www.socialfetch.dev/platforms/twitter/tweets-transcript): Spoken text from a video tweet, or an explicit null when speech isn't detected.
- [X search API](https://www.socialfetch.dev/platforms/twitter/search): Operator-first post search with section tabs, typed extras that compile after query, and date filters.
- [X community lookup API](https://www.socialfetch.dev/platforms/twitter/communities): Community card by permalink — member count, join policy, rules, creator.
- [Ask in plain English](https://www.socialfetch.dev/ask): POST /v1/ask routes a natural-language question to the matching X or social operation.
- [Hosted MCP server](https://www.socialfetch.dev/mcp): Call the same Twitter tools from Cursor, VS Code, or Claude with OAuth — same credits as REST.
- [Social monitoring use case](https://www.socialfetch.dev/use-cases/social-media-monitoring-api)
- [Monitor accounts → webhook](https://www.socialfetch.dev/monitoring): Watch a public X profile and get a signed webhook when they post.
- [X API pricing guide](https://www.socialfetch.dev/blog/twitter-x-api-pricing): Official X pricing tiers vs public-data credits — when to stay on X, when Social Fetch is cheaper.
