X(Twitter) User Highlights Scraper avatar

X(Twitter) User Highlights Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
X(Twitter) User Highlights Scraper

X(Twitter) User Highlights Scraper

Export a user’s X Highlights—one structured row per post with text, media, author, and engagement for reporting and analysis.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

PowerAI

PowerAI

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Twitter User Highlights Scraper

Collect Highlight posts for a given X (Twitter) account—the same posts users see on the Highlights tab—into dataset rows. Each row is one post with nested details for text, media, author, and engagement.

Who it’s for

  • Social & comms teams auditing what a brand showcases in Highlights.
  • Researchers who need structured exports instead of manual scrolling.
  • Data & analytics workflows that consume rich JSON per post.

What you can do with it

  • Gather multiple highlight posts until you reach the limit you set or there is nothing more to load.
  • Match rows to your own user list using requestedUserId on each row (the account id you entered).

How it works (in plain terms)

You enter the numeric account id (not the @handle). The tool loads highlights in successive batches until your maximum is reached or the list ends—you do not need to manage paging yourself.

Input

FieldRequiredWhat it means
User ID (user)YesThe account’s numeric id, not @handle.
Maximum results (maxResults)NoUpper limit on how many highlight posts to collect (default 50).

Output

  • One row per highlight post (until your cap).
  • Post identity & stats: identifiers such as rest_id, posting source, view counts where available, edit-related edit_control, and other top-level flags when present.
  • Author: nested core.user_results with profile fields (screen_name, name, follower counts, images, pinned posts, etc.).
  • Content & engagement: legacy blocks with full_text, created_at, entities (hashtags, links, media), and counters like favorites, reposts, replies, and quotes.
  • Export metadata: requestedUserId repeats the account you asked for; scrapedAt is when that row was saved.

Rows can be large, and optional fields vary by post. Details may change as X updates its product.

Sample output (one dataset row, heavily trimmed)

{
"__typename": "Tweet",
"rest_id": "2033543815437451270",
"core": {
"user_results": {
"result": {
"__typename": "User",
"rest_id": "877807935493033984",
"legacy": {
"screen_name": "binance",
"name": "Binance",
"followers_count": 15841109
}
}
}
},
"legacy": {
"full_text": "The future of TradFi trading is already on #Binance\n\nMarkets aren't 9–5 anymore. They're 24/7.\n\nRead more 👉 https://t.co/KSNKN1knty https://t.co/7iu9ZXIvMK",
"created_at": "Mon Mar 16 14:00:01 +0000 2026",
"id_str": "2033543815437451270",
"conversation_id_str": "2033543815437451270",
"favorite_count": 1191,
"retweet_count": 500,
"reply_count": 361,
"quote_count": 21,
"entities": {
"hashtags": [{ "indices": [43, 51], "text": "Binance" }],
"media": [
{
"type": "photo",
"display_url": "pic.x.com/7iu9ZXIvMK",
"expanded_url": "https://x.com/binance/status/2033543815437451270/photo/1"
}
]
}
},
"views": {
"count": "1135420",
"state": "EnabledWithCount"
},
"requestedUserId": "877807935493033984",
"scrapedAt": "2026-03-25T08:33:59.135Z"
}

Good to know

  • The account id must be valid; wrong ids or restricted profiles may yield no rows.
  • Respect X/Twitter’s rules and applicable laws when using exported data.