Twitter

7 endpoints.

GET /v1/twitter/community

Community

Retrieves details about a Twitter/X Community by URL. Returns the community name, description, rest_id, join_policy, created_at, member_count, rules, and creator_results with the creator's profile. Also includes members_facepile_results with avatar images of recent members.

Parameters

NameInTypeDescription
url requiredquerystringCommunity URL

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/community?url=https://x.com/i/communities/1926186499399139650" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/community?url=https://x.com/i/communities/1926186499399139650", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/community?url=https://x.com/i/communities/1926186499399139650",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "typename": "Community",
  "is_member": false,
  "name": "The First Thousand",
  "role": "NonMember",
  "rest_id": "1926186499399139650",
  "actions": {
    "join_action_result": {
      "typename": "CommunityJoinActionUnavailable"
    },
    "id": "Q29tbXVuaXR5QWN0aW9uczoxOTI2MTg2NDk5Mzk5MTM5NjUw"
  },
  "description": "This community is for creators and builders who are growing to their first 1,000 followers. Give insights, build your brand, and grow a loyal audience.",
  "creator_results": {
    "result": {
      "typename": "User",
      "id": "VXNlcjoxOTIxMzY4NDU0NDQ5MjAxMTUy",
      "is_blue_verified": true,
      "core": {
        "screen_name": "CanaCarson"
      },
      "verification": {
        "verified": false
      }
    },
    "id": "VXNlclJlc3VsdHM6MTkyMTM2ODQ1NDQ0OTIwMTE1Mg=="
  },
  "join_policy": "Open",
  "created_at": 1748073622931,
  "rules": [
    {
      "rest_id": "1926189963793609186",
      "description": "This isn’t the space to drop ChatGPT engineered empty platitudes",
      "name": "No Empty Platitudes",
      "id": "Q29tbXVuaXR5UnVsZToxOTI2MTg5OTYzNzkzNjA5MTg2"
    }
  ],
  "members_facepile_results": [
    {
      "result": {
        "typename": "User",
        "avatar": {
          "image_url": "https://pbs.twimg.com/profile_images/1944871269775601664/Ho7tiGd2_normal.jpg"
        },
        "id": "VXNlcjoxOTIxMzY4NDU0NDQ5MjAxMTUy"
      },
      "id": "VXNlclJlc3VsdHM6MTkyMTM2ODQ1NDQ0OTIwMTE1Mg=="
    }
  ],
  "member_count": 1896,
  "id": "Q29tbXVuaXR5OjE5MjYxODY0OTkzOTkxMzk2NTA="
}

GET /v1/twitter/community_tweets

Community Tweets

Fetches tweets posted within a Twitter/X Community by URL. Returns an array of tweets, each with id, full_text, view_count, favorite_count, retweet_count, reply_count, bookmark_count, quote_count, created_at, and source. Each tweet includes a user object with the author's name, screen_name, avatar, followers_count, and is_blue_verified status.

Parameters

NameInTypeDescription
url requiredquerystringCommunity URL

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/community_tweets?url=https://x.com/i/communities/1926186499399139650" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/community_tweets?url=https://x.com/i/communities/1926186499399139650", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/community_tweets?url=https://x.com/i/communities/1926186499399139650",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "tweets": [
    {
      "id": "1940874916771123735",
      "view_count": "8660",
      "bookmark_count": 10,
      "bookmarked": false,
      "created_at": "Thu Jul 03 20:46:54 +0000 2025",
      "conversation_id_str": "1940874916771123735",
      "display_text_range": [
        0
      ],
      "favorite_count": 173,
      "favorited": false,
      "full_text": "You just need 1 viral tweet https://t.co/Z4Q5jtsxAp",
      "is_quote_status": false,
      "lang": "en",
      "possibly_sensitive": false,
      "possibly_sensitive_editable": true,
      "quote_count": 2,
      "reply_count": 55,
      "retweet_count": 3,
      "retweeted": false,
      "user_id_str": "73647967",
      "id_str": "1940874916771123735",
      "user": {
        "typename": "User",
        "id": "VXNlcjo3MzY0Nzk2Nw==",
        "rest_id": "73647967",
        "affiliates_highlighted_label": {},
        "avatar": {
          "image_url": "https://pbs.twimg.com/profile_images/1590652776719286274/eeualJ2p_normal.jpg"
        },
        "core": {
          "created_at": "Sat Sep 12 14:00:05 +0000 2009",
          "name": "Mike in’ Software",
          "screen_name": "mikeinsoftware"
        },
        "dm_permissions": {},
        "is_blue_verified": true,
        "legacy": {
          "default_profile": true,
          "default_profile_image": false,
          "description": "Senior SWE👨‍💻 Indie hacking my way to financial freedom 👀 Follow for free early access to next project",
          "entities": {
            "description": "{...}"
          },
          "fast_followers_count": 0,
          "favourites_count": 7532,
          "followers_count": 1173,
          "friends_count": 990,
          "has_custom_timelines": true,
          "is_translator": false,
          "listed_count": 8,
          "media_count": 518,
          "normal_followers_count": 1173,
          "pinned_tweet_ids_str": [
            "1945599110876176561"
          ],
          "possibly_sensitive": false,
          "profile_interstitial_type": "",
          "statuses_count": 2931,
          "translator_type": "none",
          "withheld_in_countries": []
        },
        "location": {
          "location": ""
        },
        "media_permissions": {},
        "parody_commentary_fan_label": "None",
        "profile_image_shape": "Circle",
        "professional": {
          "rest_id": "1928057904189559014",
          "professional_type": "Creator",
          "category": [
            "{...}"
          ]
        },
        "privacy": {
          "protected": false
        },
        "relationship_perspectives": {},
        "tipjar_settings": {
          "is_enabled": false,
          "bandcamp_handle": "",
          "bitcoin_handle": "",
          "cash_app_handle": "",
          "ethereum_handle": "",
          "gofundme_handle": "",
          "patreon_handle": "",
          "pay_pal_handle": "",
          "venmo_handle": ""
        },
        "verification": {
          "verified": false
        }
      }
    }
  ]
}

GET /v1/twitter/user

Profile

Retrieves a Twitter user's profile by handle, including account metadata and statistics. Returns name, screen_name, description, followers_count, friends_count, statuses_count, favourites_count, location, profile_image_url_https, and is_blue_verified. Also includes verification_info, tipjar_settings, highlights_info, and creator_subscriptions_count.

Parameters

NameInTypeDescription
handle requiredquerystringTwitter handle
cache_max_agequerystringIf 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). Otherwise, scrape a live result (1 credit). See the Caching page for details.
one of: 1d, 3d, 7d, 14d, 30d

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/user?handle=Austen" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/user?handle=Austen", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/user?handle=Austen",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "typename": "User",
  "id": "VXNlcjoyMjE4MzgzNDk=",
  "rest_id": "221838349",
  "affiliates_highlighted_label": {
    "label": {
      "url": {
        "url": "https://twitter.com/bloomtech",
        "url_type": "DeepLink"
      },
      "badge": {
        "url": "https://pbs.twimg.com/profile_images/1542996246477938688/PR4UFtE6_bigger.jpg"
      },
      "description": "Bloom Institute of Technology",
      "user_label_type": "BusinessLabel",
      "user_label_display_type": "Badge"
    }
  },
  "is_blue_verified": true,
  "profile_image_shape": "Circle",
  "legacy": {
    "created_at": "Wed Dec 01 19:13:23 +0000 2010",
    "default_profile": false,
    "default_profile_image": false,
    "description": "CEO https://t.co/m6TigM5azr & https://t.co/NuPTghEZ1I (part of @bloomtech). We help teams maximize productivity using AI. Will tweet as I wish and suffer the...",
    "entities": {
      "description": {
        "urls": [
          {
            "display_url": "GauntletAI.com",
            "expanded_url": "http://GauntletAI.com",
            "url": "https://t.co/m6TigM5azr",
            "indices": [
              4
            ]
          }
        ]
      },
      "url": {
        "urls": [
          {
            "display_url": "gauntletai.com",
            "expanded_url": "http://gauntletai.com",
            "url": "https://t.co/nCe0AdT8D4",
            "indices": [
              0
            ]
          }
        ]
      }
    },
    "fast_followers_count": 0,
    "favourites_count": 80812,
    "followers_count": 377608,
    "friends_count": 1051,
    "has_custom_timelines": true,
    "is_translator": false,
    "listed_count": 3959,
    "location": "Austin, TX",
    "media_count": 3843,
    "name": "Austen Allred",
    "normal_followers_count": 377608,
    "pinned_tweet_ids_str": [
      "1882816395400073367"
    ],
    "possibly_sensitive": false,
    "profile_banner_url": "https://pbs.twimg.com/profile_banners/221838349/1622098809",
    "profile_image_url_https": "https://pbs.twimg.com/profile_images/1608281295918096385/D2kh-M28_normal.jpg",
    "profile_interstitial_type": "",
    "screen_name": "Austen",
    "statuses_count": 46114,
    "translator_type": "regular",
    "url": "https://t.co/nCe0AdT8D4",
    "...": "2 more fields"
  },
  "tipjar_settings": {
    "is_enabled": false,
    "bandcamp_handle": "",
    "bitcoin_handle": "",
    "cash_app_handle": "",
    "ethereum_handle": "",
    "gofundme_handle": "",
    "patreon_handle": "",
    "pay_pal_handle": "",
    "venmo_handle": ""
  },
  "legacy_extended_profile": {},
  "is_profile_translatable": false,
  "has_hidden_subscriptions_on_profile": false,
  "verification_info": {
    "is_identity_verified": false,
    "reason": {
      "description": {
        "text": "This account is verified because it's an affiliate of @bloomtech on X. Learn more",
        "entities": [
          {
            "from_index": 54,
            "to_index": 64,
            "ref": "{...}"
          }
        ]
      },
      "verified_since_msec": "1473330227634"
    }
  },
  "highlights_info": {
    "can_highlight_tweets": true,
    "highlighted_tweets": "482"
  },
  "user_seed_tweet_count": 0,
  "business_account": {},
  "creator_subscriptions_count": 3
}

GET /v1/twitter/search_posts

Search Posts

Finds public X/Twitter post URLs through Google Search, then returns their details using the same public post scraper as /v1/twitter/tweet. This is Google-indexed discovery, not native X search: coverage is incomplete, recent posts can be missing, and results are ranked by Google rather than newest first. Deleted, protected, or inaccessible posts are omitted. Each post uses the existing tweet response fields, including rest_id, legacy.full_text, legacy.created_at, engagement counts, author and media when available, plus a canonical url. Pass the returned cursor for the next Google page; cursors range from 1 through 11 and null means pagination has ended. The same post may appear on different pages. Each successful page costs 1 credit, including empty results; validation errors and upstream failures are not charged. Replaying cursor=null is uncharged. Allow at least 30 seconds for your client timeout.

Parameters

NameInTypeDescription
query requiredquerystringKeyword or phrase to search for in Google-indexed public X/Twitter posts
next_cursorquerystringPass the cursor returned by the previous response. Supported page cursors are 1 through 11. A null response cursor means there are no more pages.

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/search_posts?query=ai agents" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/search_posts?query=ai agents", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/search_posts?query=ai agents",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "query": "ai agents",
  "posts": [
    {
      "rest_id": "2105732089685348719",
      "url": "https://x.com/code_rams/status/2105732089685348719",
      "views": {
        "count": "780",
        "state": "EnabledWithCount"
      },
      "legacy": {
        "created_at": "Thu Oct 01 18:50:27 +0000 2026",
        "full_text": "AI agents are checking your pricing page before your buyers do. Your analytics never shows it.\n\nHere's how to catch them and fix it:\n\n(Analysed and learned f...",
        "favorite_count": 11,
        "retweet_count": 0,
        "reply_count": 4,
        "quote_count": 0,
        "bookmark_count": 7
      }
    }
  ],
  "next_cursor": "2"
}

GET /v1/twitter/tweet

Tweet Details

Retrieves detailed information about a specific tweet by URL, including the author's profile and engagement metrics. Returns rest_id, full_text, views count, favorite_count, retweet_count, reply_count, bookmark_count, quote_count, created_at, source, and media entities. Supports a trim parameter for a lighter response.

Parameters

NameInTypeDescription
url requiredquerystringTweet URL
trimquerybooleanSet to true for a trimmed down version of the response
cache_max_agequerystringIf 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). Otherwise, scrape a live result (1 credit). See the Caching page for details.
one of: 1d, 3d, 7d, 14d, 30d

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet?url=example" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet?url=example", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet?url=example",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "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",
          "url": "https://t.co/YywdjQZde8",
          "ext_media_availability": {
            "status": "Available"
          },
          "allow_download_status": {
            "allow_download": true
          },
          "media_results": {
            "result": "{...}"
          }
        }
      ]
    },
    "favorite_count": 80,
    "favorited": false,
    "full_text": "This was created by a Gauntlet AI grad based on a whole lot of experimentation.\n\nOne of the most important things an AI dev can begin to understand. https://...",
    "is_quote_status": false,
    "lang": "en",
    "possibly_sensitive": false,
    "possibly_sensitive_editable": true,
    "quote_count": 3,
    "reply_count": 6,
    "retweet_count": 5,
    "retweeted": false,
    "user_id_str": "221838349",
    "id_str": "1935730646267158797"
  }
}

GET /v1/twitter/tweet_captions

Transcript

Extracts an AI transcript from a Twitter video tweet. This route uses AI transcription, not native captions. Returns a success flag and transcript text. No transcript costs 0 credits. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed.

Parameters

NameInTypeDescription
url requiredquerystringTweet URL
allow_long_transcriptionquerybooleanPaid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mode. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This flag does not force AI and does not enable transcription or AI fallback by itself. Keep get_transcript=true or use_ai_as_fallback=true where required by the endpoint. Returned native captions still cost 1 credit on dedicated transcript routes, even for long videos with this flag; on detail routes they leave the base price unchanged. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed.
cache_max_agequerystringIf 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). Otherwise, scrape a live result (Returned native captions cost 1 credit, even for long videos with the paid flag. By default, successful AI up to 120 seconds costs a flat 1 credit per request; over 120 seconds requires allow_long_transcription=true, which bills ALL successful AI at 10 credits per started minute, including short videos; empty AI results and errors cost 0 credits; no transcript: 0 credits). See the Caching page for details.
one of: 1d, 3d, 7d, 14d, 30d

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet_captions?url=https://x.com/TheoVon/status/1916982720317821050" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet_captions?url=https://x.com/TheoVon/status/1916982720317821050", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/tweet_captions?url=https://x.com/TheoVon/status/1916982720317821050",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "transcript": "Since you're kind of like a leader in innovation and technology in our world, you know, um do you how do you know that what your convictions are, how do you ..."
}

GET /v1/twitter/user_tweets

User Tweets

Fetches tweets from a Twitter user's profile by handle. Note: Twitter publicly returns only ~100 of the user's most popular tweets, not chronological or latest. Each tweet includes rest_id, full_text, views count, favorite_count, retweet_count, reply_count, bookmark_count, quote_count, created_at, media entities, and url. Supports a trim parameter for a lighter response.

Parameters

NameInTypeDescription
handle requiredquerystringTwitter handle
trimquerybooleanSet to true for a trimmed down version of the response

Request

curl "https://api.scrapall.bipsport.com/scapi/v1/twitter/user_tweets?handle=levelsio" \
  -H "X-Scapi-Key: YOUR_API_KEY"
const res = await fetch("https://api.scrapall.bipsport.com/scapi/v1/twitter/user_tweets?handle=levelsio", {
  headers: { "X-Scapi-Key": "YOUR_API_KEY" }
});
const data = await res.json();
import requests

r = requests.get(
    "https://api.scrapall.bipsport.com/scapi/v1/twitter/user_tweets?handle=levelsio",
    headers={"X-Scapi-Key": "YOUR_API_KEY"},
)
print(r.json())

Response 200 (sample)

{
  "tweets": [
    {
      "rest_id": "1834021269559501236",
      "views": {
        "count": "4710824",
        "state": "EnabledWithCount"
      },
      "legacy": {
        "bookmark_count": 2634,
        "bookmarked": false,
        "created_at": "Thu Sep 12 00:08:39 +0000 2024",
        "conversation_id_str": "1834021269559501236",
        "display_text_range": [
          0
        ],
        "entities": {
          "hashtags": [],
          "symbols": [],
          "timestamps": [],
          "urls": [],
          "user_mentions": []
        },
        "favorite_count": 129276,
        "favorited": false,
        "full_text": "Wife: “What did your teacher remember about September 11th?”\n\nNine-year-old: “She was only four then, she doesn’t remember it at all.”",
        "is_quote_status": false,
        "lang": "en",
        "quote_count": 674,
        "reply_count": 388,
        "retweet_count": 2901,
        "retweeted": false,
        "user_id_str": "221838349",
        "id_str": "1834021269559501236"
      },
      "url": "https://x.com/Austen/status/1935730646267158797"
    }
  ]
}