# X (Twitter) Profile

<p>A public profile with its counters merged with the about-page detail: bio, location, join date, website and verification state.</p>

- **Documentation:** [https://scrappa.co/docs/x-twitter/x_twitter_profile](https://scrappa.co/docs/x-twitter/x_twitter_profile)
- **API group:** X (Twitter) API
- **Endpoint:** `GET https://scrappa.co/api/x-twitter/profile`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `handle` | string | Yes | <p>Screen name, with or without the leading @.</p> |
| `rest_id` | string | No | <p>Numeric account id. Accepted only together with a tweet_id, because no public route turns a bare numeric id into a screen name.</p> |
| `tweet_id` | string | No | <p>A tweet id by the same author. Required when rest_id is supplied without a handle.</p> |

## Example response

```json
{
    "user": {
        "url": "https://x.com/elonmusk",
        "name": "Elon Musk",
        "joined": "June 2009",
        "website": "https://example.com",
        "location": "Earth",
        "statuses": 45000,
        "followers": 218000000,
        "following": 2400,
        "protected": false,
        "description": "Public bio.",
        "media_count": 3100,
        "screen_name": "elonmusk",
        "verification": {
            "verified": true
        }
    },
    "counters_provenance": "Engagement counters are public, third-party-visible values, not X-attested metrics. estimated_view_count is X's estimated-view signal and is a different quantity from a view count."
}
```

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
