You can read public X (Twitter) data with a few REST calls: a single tweet by URL, the recent tweets of a handle, or a keyword search. Each call returns JSON and is billed per successful request, so there is no monthly tier to buy before you know your volume.
| Endpoint | What it returns | Credits/call | USD/call (starter plan) |
|---|---|---|---|
/v1/twitter/tweet | Tweet Details | 1 | $0.0017 |
/v1/twitter/user_tweets | User Tweets | 1 | $0.0017 |
/v1/twitter/search_posts | Search Posts | 1 | $0.0017 |
/v1/twitter/tweetTweet Details 1,000 calls = 1,000 credits = $1.67 on the starter plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | yes | Tweet URL |
trim | boolean | no | Set to true for a trimmed down version of the response |
cache_max_age | string | no | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). |
Sample response (trimmed):
{
"rest_id": "1935730646267158797",
"views": {
"count": "27539",
"state": "EnabledWithCount"
},
"legacy": {
"bookmark_count": 95,
"bookmarked": false,
"created_at": "Thu Jun 19 16:05:24 +0000 2025",
"conversation_id_str": "1935730646267158797",
"display_text_range": [
0
],
"entities": {
"hashtags": [],
"media": [
{
"display_url": "pic.x.com/YywdjQZde8",
"expanded_url": "https://x.com/Austen/status/1935730646267158797/photo/1",
"id_str": "1935730260303069184",
"indices": [
149
],
"media_key": "3_1935730260303069184",
"media_url_https": "https://pbs.twimg.com/media/Gt0YanJWwAA6B80.jpg",
"type": "photo",
"url": "https://t.co/YywdjQZde8",
"ext_media_availability": {
"status": "Available"
},
"allow_download_status": {
"allow_download": true
},
"media_results": {
"result": "{...}"
}
}
],
"symbols": [],
"timestamps": [],
"urls": [],
"user_mentions": []
},
"extended_entities": {
"media": [
{
"display_url": "pic.x.com/YywdjQZde8",
"expanded_url": "https://x.com/Austen/status/1935730646267158797/photo/1",
"id_str": "1935730260303069184",
"indices": [
149
],
"media_key": "3_1935730260303069184",
"media_url_https": "https://pbs.twimg.com/media/Gt0YanJWwAA6B80.jpg",
"type": "photo",
/v1/twitter/user_tweetsUser Tweets 1,000 calls = 1,000 credits = $1.67 on the starter plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
handle | string | yes | Twitter handle |
trim | boolean | no | Set to true for a trimmed down version of the response |
/v1/twitter/search_postsSearch Posts 1,000 calls = 1,000 credits = $1.67 on the starter plan.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | yes | Keyword or phrase to search for in Google-indexed public X/Twitter posts |
next_cursor | string | no | Pass the cursor returned by the previous response. Supported page cursors are 1 through 11. A null response cursor means there are no more pages. |
curl -H "X-Scapi-Key: $SCAPI_KEY" "https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet"import os, requests
r = requests.get("https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet",
headers={"X-Scapi-Key": os.environ["SCAPI_KEY"]})
print(r.json())Yes. These endpoints return public tweets, timelines and search results with one API key header. You do not need an X developer account, an app review or a monthly tier.
Official tiers are billed per month whether you use them or not, and the lower tiers have tight read limits. Here you pay only for successful calls, see the cost table on this page.
The sample responses below are real payload shapes. Check them for the exact fields, such as text, author and engagement counts, before you build on a field.
Open the Buy page, pick the starter plan and pay in USDT on TRC20 or ERC20. The key is shown once, right after the payment is confirmed on-chain.
The cost table on this page lists credits per call for each endpoint. The starter plan is $45 for 27,000 credits per 30 days.
Full reference: all twitter endpoints.