# Scrape a public X (Twitter) profile: followers, bio, website and category

Give a public X handle and get its profile as one row: follower count, bio, verified flag, website, every listed link, category, business flag and location. The scraping is hosted, so there is nothing to log in to and nothing to fix when X changes its pages.

HTML page: https://www.routergrowth.com/tools/x-twitter/profile-scraper
Part of: [X (Twitter) tools](https://www.routergrowth.com/tools/x-twitter.md)

## The call

[`social.profile`](https://www.routergrowth.com/catalog/social.profile): Public profile data for a social handle: name, followers, bio, verified, plus the bio link, every listed link, the person's own domain (link hubs such as Linktree excluded), a public or business email when the profile exposes one, profile URL, business flag, category and location when the platform provides them.

Price on this network: $0.0007 per profile, $0.002 minimum a call. The exact quote is shown before every run.

## What a real run returned

Run on 2026-10-19: 1 records in 5.5 s for $0.002. Personal fields are masked. The public profile of @figma: about 579,000 followers, its bio, a Science & Technology category, the business flag and the link in its bio.

| followers | bio | category | website | is_business |
|---|---|---|---|---|
| 578539 | Together at last, design and code | Science & Technology | https://figma.bot/WatchConfigIndia | True |

## How to do it

1. **Give the handle.** With or without @. social.profile takes platform x and the handle.
2. **Get one row.** Followers, bio, verified, website, links, domain, category, business flag and location when X shows them.
3. **Check the link.** The domain field is the site behind the bio link, with link hubs left out.
4. **Add their posts.** Run social.posts on the same handle for what the account has been saying.

## Ask it like this

- Scrape the X profiles of these 20 design tools and rank them by followers. (`social.profile`)
- Scrape the X profile of @figma and summarise its last ten posts. (`social.profile`, `social.posts`)

## Connect

MCP server: `https://api.routergrowth.com/mcp`

```bash
claude mcp add --transport http routergrowth https://api.routergrowth.com/mcp
```

```bash
npm install -g routergrowth && routergrowth setup
routergrowth run -c social.profile -i '{"platform": "x", "handle": "@figma"}'
```

```bash
curl -X POST https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{"capability": "social.profile", "input": {"platform": "x", "handle": "@figma"}}'
```

## Worth knowing

- **Brand accounts.** Use it for companies and public brands. Do not build files on private persons.
- **Charged per profile found.** A handle that does not exist returns nothing and is not charged.
- **Website as shown.** The website is whatever the account links in its bio at the time, which can be a campaign link rather than the home page.

## Questions

### Does it return the follower list?

No. It returns the follower count, not who follows the account.

### Does it need my X login?

No. Only public profile data is read.

### Can I scrape many profiles?

Yes, one call per handle. An agent can loop over a list.

### Does it return an email?

Only when the profile shows one publicly, which brand accounts on X rarely do.

## Related

- [An API that searches X posts by keyword and returns them with their numbers](https://www.routergrowth.com/tools/x-twitter/search-tweets-api.md)
- [How X (Twitter) data is priced on RouterGrowth: per post, no plan](https://www.routergrowth.com/tools/x-twitter/api-prices.md)
- [Search X (Twitter) from Python with one HTTP request and one key](https://www.routergrowth.com/tools/x-twitter/api-python.md)
- [Scrape X (Twitter) posts that match a keyword, in one call](https://www.routergrowth.com/tools/x-twitter/scraper.md)
- [Read any public X account's recent posts through one independent API](https://www.routergrowth.com/tools/x-twitter/api.md)
