X post details API
  1. Docs
  2. X (Twitter)
  3. X post details API

X post details API

One public post with its counts, media and, for a quote post, the quoted post (`extra.quoted_post`).

GET /v1/twitter/tweet

GET /v1/twitter/tweet

One public post with its counts, media and, for a quote post, the quoted post (extra.quoted_post). If X will not serve the post page, the answer comes from X's public post widget instead and views, retweet and bookmark counts are missing (extra.source_shape is syndication).

  • Cost: 1 credit
  • Cache: Results are kept up to 30 days; send max_age_days to reuse them for free.
  • Timeout: A request still running after about 25 seconds answers 202 with a job to poll (Batch and jobs).

Parameters#

NameTypeRequiredDescription
urlURLone ofPost URL (x.com/<user>/status/<id>). Accepted hosts: x.com, twitter.com.
idstringone ofPost id. Also accepted as tweet_id.

Send at least one of url, id. If you send several, the first listed is used and the rest are ignored.

Every request also accepts:

  • trim: true for a smaller response without null fields and extra.
  • raw: true to also get the platform's original object as raw.
  • max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).

Example request#

Set your key in the environment first (see Authentication).

1curl -G "https://api.socialscrape.dev/v1/twitter/tweet" \2  -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3  --data-urlencode "url=https://x.com/jack/status/20"

Example response#

This is a sample from a recorded response. Status 200.

200 OKSample response
1{2  "ok": true,3  "credits_charged": 1,4  "credits_remaining": 4999,5  "cached": false,6  "cached_at": null,7  "request_id": "req_49f7a65c692d50cd451680d6",8  "data": {9    "object": "post",10    "platform": "twitter",11    "id": "20",12    "url": "https://x.com/jack/status/20",13    "type": "tweet",14    "author": {15      "id": "12",16      "handle": "jack",17      "name": "jack",18      "url": "https://x.com/jack",19      "avatar_url": "https://pbs.twimg.com/profile_images/1661201415899951105/azNjKOSH_400x400.jpg",20      "verified": true21    },22    "title": null,23    "text": "just setting up my twttr",24    "published_at": "2006-03-21T20:50:14Z",25    "duration_seconds": null,26    "language": "en",27    "hashtags": null,28    "mentions": null,29    "stats": {30      "views": null,31      "likes": 308827,32      "comments": 18121,33      "shares": 131907,34      "saves": 21986,35      "dislikes": null36    },37    "media": {38      "thumbnail_url": null,39      "video_url": null,40      "audio_url": null,41      "image_urls": null,42      "width": null,43      "height": null44    },45    "song": null,46    "location": null,47    "is_pinned": null,48    "is_sponsored": null,49    "extra": {50      "is_edited": false,51      "quote_count": 7361,52      "retweet_count": 12454653    }54  },55  "cursor": null,56  "has_more": null57}

Response#

A Post object in data.

See Data models for every field. The envelope around data is described in Responses.

Errors#

Failures are free: credits_charged is 0. Branch on error.code, never on the message.

CodeHTTPRetryMeaning
invalid_params400noA parameter is missing, unknown or has the wrong type.
unsupported_url400noThe URL is not one this endpoint accepts (wrong platform or form).
not_found404noThe platform says this profile, post or item does not exist.

Every request can also fail with the account and platform errors listed on the Errors page.

Example error:

1{2  "ok": false,3  "error": {4    "code": "not_found",5    "message": "The platform says this profile, post or item does not exist.",6    "retryable": false7  },8  "credits_charged": 0,9  "request_id": "req_aba07f4107889141a048b7fc"10}