# Twitter/X (/docs/twitter)
Twitter/X [#twitterx]
X (formerly Twitter) profiles and their tweets, individual tweets in full, community pages and their posts, video transcripts, an AI-answered search over the network, and a composite that returns a profile with computed analytics in one call.
X remains the primary platform for real-time public conversation and news, and it is also the platform with the tightest read limits — most of the design decisions below follow from that.
Base URL: `/v1/twitter/...`
How do I get started with Twitter/X data? [#how-do-i-get-started-with-twitterx-data]
1\. Fetch a profile [#1-fetch-a-profile]
```bash
curl "https://www.socialcrawl.dev/v1/twitter/profile?handle=elonmusk" \
-H "x-api-key: sc_your_api_key_here"
```
2\. Fetch their content [#2-fetch-their-content]
```bash
curl "https://www.socialcrawl.dev/v1/twitter/user/tweets?handle=elonmusk" \
-H "x-api-key: sc_your_api_key_here"
```
3\. Read computed fields [#3-read-computed-fields]
When an endpoint supports a computed field and the required source inputs are present, the unified response includes that optional field. Depending on the endpoint, optional fields can include `engagement_rate`, `language`, `content_category`, and `estimated_reach`. See [Computed fields](/docs/computed-fields.md) for formulas, clamping rules, and null semantics.
What you can get [#what-you-can-get]
**Accounts.** `GET /v1/twitter/profile` (1cr) takes a `handle` and returns follower, following and tweet counts, bio, profile and banner images, and verification status. `GET /v1/twitter/user/tweets` (1cr) returns up to the 100 most recent tweets for that handle with full text, like/retweet/reply counts, media, and timestamps.
**One tweet.** `GET /v1/twitter/tweet` (1cr) takes the tweet `url` and returns the complete record — including the **quote count**, which the user timeline does not carry. If quote volume matters to you, that is the reason to spend the extra call.
**Video speech.** `GET /v1/twitter/tweet/transcript` (10cr) returns the spoken words from a video attached to a tweet, auto-generated captions included. `tweet` returns the media attachment; this returns what is said in it.
**Communities.** `GET /v1/twitter/community` (1cr) takes a community `url` and returns the group itself — name, description, member count, rules, creation date. `GET /v1/twitter/community/tweets` (1cr) returns what has been posted inside it. Both take the community URL, and neither paginates.
**AI search.** `GET /v1/twitter/ai-search` (5cr) takes a plain-English `query` and returns a written answer, the X posts cited as sources, and how many searches the model ran to get there. Narrow it with `from_handles`, `exclude_handles`, `from_date`, and `to_date`.
**The composite.** `GET /v1/twitter/profile/full` (5cr) fans out to the profile and recent-posts endpoints in parallel and returns the unified author, the post list, and computed metrics — average engagement rate, posting cadence with the window it was measured over, the top post, and the format mix. `posts` sets how many recent tweets to average over (1-100, default 25), and `include=computed` drops the raw `posts[]` to save payload.
```bash
curl "https://www.socialcrawl.dev/v1/twitter/profile/full?handle=elonmusk&posts=50" \
-H "x-api-key: sc_your_api_key_here"
```
Reaching further back than 100 tweets [#reaching-further-back-than-100-tweets]
`user/tweets` returns **one page and one page only** — up to 100 recent tweets, with no cursor to follow. This is the constraint most integrations hit first, and there are two ways past it:
* **`GET /v1/twitter/ai-search`** answers questions that would otherwise need a deep timeline walk: what an account said about a topic last week, who was arguing about a launch, which posts cited a claim. It searches rather than paginates, and `from_date` / `to_date` bound the period. 5cr a call.
* **[`/v1/search/everywhere`](/docs/search/everywhere.md)** includes X as a source (named `twitter-ai-search` there, not `twitter`) alongside the other networks, if the question is cross-platform rather than X-specific.
The profile leg is the only critical leg on
`profile/full`
. If the tweets cannot be fetched you still get a
`200`
with the profile and null post-dependent metrics rather than an error, and every leg's outcome is reported in
`legs[]`
. Check
`legs[]`
before you treat a null cadence as a quiet account.
Endpoints [#endpoints]
What should I know about Twitter/X data? [#what-should-i-know-about-twitterx-data]
* All endpoints use `GET` method with query parameters
* Authentication via `x-api-key` header
* Responses follow the unified SocialCrawl schema
* `profile`, `user/tweets`, and `profile/full` take a `handle` (no `@`); `tweet`, `tweet/transcript`, `community`, and `community/tweets` take a `url`; `ai-search` takes `query`
* `user/tweets`, `community/tweets`, and `ai-search` each return a single result set with no cursor. The one exception is `profile/full`, which accepts a `cursor` to deepen its post window
* `trim=true` on `user/tweets` and `tweet` returns a lighter payload at the same price
Official Twitter/X Resources [#official-twitterx-resources]
* [X API Documentation](https://developer.x.com/en/docs) — Official X developer platform
* [X API Access Levels](https://developer.x.com/en/docs/twitter-api/getting-started/about-twitter-api) — API tiers and access