Xquik is an independent third-party service. Not affiliated with X Corp.
"Twitter" and "X" are trademarks of X Corp.

The Xquik CLI for the X Twitter Scraper REST API, a command line Twitter API alternative for tweet search, advanced Twitter search queries, profile tweets, user lookup, follower export, media download, monitoring, webhooks, and posting automation.
Use it from shell scripts and terminals to get tweets from profiles, search tweets by keyword or operator query, send tweets, post replies, like, repost, follow, DM, run giveaway draws, and automate X workflows.
It is generated with Stainless.
Choose the CLI
Use the CLI for terminals, shell scripts, and one-off automation.
Choose a language SDK for long-running applications or custom error handling.
Run --help before scripting generated commands and flags.
Installation
Installing with Go
To test or install the CLI locally, you need Go version 1.22 or later installed.
go install 'github.com/Xquik-dev/x-twitter-scraper-cli/cmd/x-twitter-scraper@latest'
Once you have run go install, the binary is placed in your Go bin directory:
- Default location:
$HOME/go/bin (or $GOPATH/bin if GOPATH is set)
- Check your path: Run
go env GOPATH to see the base directory
If commands aren't found after installation, add the Go bin directory to your PATH:
# Add to your shell profile (.zshrc, .bashrc, etc.)
export PATH="$PATH:$(go env GOPATH)/bin"
Running Locally
After cloning the git repository for this project, you can use the
scripts/run script to run the tool locally:
./scripts/run args...
Usage
The CLI follows a resource-based command structure:
x-twitter-scraper [resource] <command> [flags...]
x-twitter-scraper x:tweets search \
--api-key 'My API Key' \
--q from:elonmusk \
--limit 10
Common Commands
Run each command with --help before adding flags.
| Customer Question |
Start Command |
| How do I search tweets? |
x-twitter-scraper x:tweets search --help |
| How do I get a user's posts? |
x-twitter-scraper x:users retrieve-tweets --help |
| How do I scrape followers? |
x-twitter-scraper x:users retrieve-followers --help |
| How do I scrape following accounts? |
x-twitter-scraper x:users retrieve-following --help |
| How do I read my home timeline? |
x-twitter-scraper x get-home-timeline --help |
| How do I export a large dataset? |
x-twitter-scraper extractions estimate-cost --help |
| How do I monitor an account? |
x-twitter-scraper monitors create --help |
| How do I post or reply? |
x-twitter-scraper x:tweets create --help |
For details about specific commands, use the --help flag.
Environment variables
| Environment variable |
Description |
Required |
Default value |
X_TWITTER_SCRAPER_API_KEY |
|
no |
null |
X_TWITTER_SCRAPER_BEARER_TOKEN |
OAuth 2.1 access token |
no |
null |
Global flags
--api-key (can also be set with X_TWITTER_SCRAPER_API_KEY env var)
--bearer-token - OAuth 2.1 access token (can also be set with X_TWITTER_SCRAPER_BEARER_TOKEN env var)
--help - Show command line usage
--debug - Enable debug logging (includes HTTP request/response details)
--version, -v - Show the CLI version
--base-url - Use a custom API backend URL
--format - Change the output format (auto, explore, json, jsonl, pretty, raw, yaml)
--format-error - Change the output format for errors (auto, explore, json, jsonl, pretty, raw, yaml)
--transform - Transform the data output using GJSON syntax
--transform-error - Transform the error output using GJSON syntax
Passing files as arguments
To pass files to your API, you can use the @myfile.ext syntax:
x-twitter-scraper <command> --arg @abe.jpg
Files can also be passed inside JSON or YAML blobs:
x-twitter-scraper <command> --arg '{image: "@abe.jpg"}'
# Equivalent:
x-twitter-scraper <command> <<YAML
arg:
image: "@abe.jpg"
YAML
If you need to pass a string literal that begins with an @ sign, you can
escape the @ sign to avoid accidentally passing a file.
x-twitter-scraper <command> --username '\@abe'
Explicit encoding
For JSON endpoints, the CLI tool does filetype sniffing to determine whether the
file contents should be sent as a string literal (for plain text files) or as a
base64-encoded string literal (for binary files). If you need to explicitly send
the file as either plain text or base64-encoded data, you can use
@file://myfile.txt (for string encoding) or @data://myfile.dat (for
base64-encoding). Note that absolute paths will begin with @file:// or
@data://, followed by a third / (for example, @file:///tmp/file.txt).
x-twitter-scraper <command> --arg @data://file.txt
Linking different Go SDK versions
You can link the CLI against a different version of the X Twitter Scraper Go SDK
for development purposes using the ./scripts/link script.
To link to a specific version from a repository (version can be a branch,
git tag, or commit hash):
./scripts/link github.com/org/repo@version
To link to a local copy of the SDK:
./scripts/link ../path/to/xtwitterscraper-go
If you run the link script without any arguments, it will default to ../xtwitterscraper-go.
Support & Project Policies
Xquik is an independent third-party service. Not affiliated with X Corp. "Twitter" and "X" are trademarks of X Corp.