Browsable Browsable Docs

Twitter profile

Twitter-path alias for X profile scraping.

POST /v1/twitter/profile

Also available at /v1/x/profile.

Authentication

Requires a managed x.com login on kernel. Browsable automatically uses a saved login when one is available.

If your team does not already have a usable login, the API returns 428 Authentication required with a hosted_url. Open that URL, finish sign-in, then retry the same request.

Request Parameters

Name In Type Required Description
max_tweets body integer No Maximum number of tweets to collect from the profile timeline.
profile_url body string No X profile URL, for example https://x.com/jack.
username body string No X username without the leading @.

Response Structure

Async kickoff response

Polled run result response

Sync response

Authentication required response

Declared output schema

Code Examples

Async + polling

RUN=$(curl -s -X POST "https://api.browsable.app/v1/twitter/profile" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"max_tweets":100,"profile_url":"https://example.com/item-1","username":"Stylish Shoreditch Loft with Balcony"}')
RUN_ID=$(echo "$RUN" | jq -r '.run_id')
while true; do
RESULT=$(curl -s -H "Authorization: Bearer YOUR_API_KEY" "https://api.browsable.app/v1/runs/$RUN_ID")
STATUS=$(echo "$RESULT" | jq -r '.run_status')
if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ]; then
echo "$RESULT"
break
fi
sleep 2
done

Sync

curl -X POST "https://api.browsable.app/v1/twitter/profile" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"max_tweets":100,"profile_url":"https://example.com/item-1","username":"Stylish Shoreditch Loft with Balcony","_run":{"async":false}}'