Python SDK for the ApiTwitter REST API — Twitter/X data access
Project description
ApiTwitter Python SDK
Official Python SDK for the ApiTwitter REST API — access Twitter/X data without the official developer portal.
Installation
pip install apitwitter
Quick Start
from apitwitter import ApiTwitter
client = ApiTwitter("your-api-key")
# Get user profile (uses server pool — no cookies needed)
user = client.get_user("elonmusk")
print(user["name"], user["followers"])
# Search tweets
results = client.search("python programming", count=10)
for tweet in results["tweets"]:
print(tweet["text"])
# Get user tweets
tweets = client.get_user_tweets("elonmusk")
for tweet in tweets["tweets"]:
print(tweet["text"])
Read Operations (Server Pool)
These endpoints use the server-side pool — no cookies or proxy needed:
client = ApiTwitter("your-api-key")
# Users
user = client.get_user("username")
user = client.get_user_by_id("12345")
users = client.get_users_batch(["id1", "id2", "id3"])
followers = client.get_followers("username", count=100)
following = client.get_following("username", count=100)
# Tweets
tweets = client.get_user_tweets("username")
tweets = client.get_tweets(["tweet_id_1", "tweet_id_2"])
# Search
results = client.search("query", product="Top", count=20)
# product options: "Top", "Latest", "People", "Photos", "Videos"
Write Operations (Own Credentials)
Write endpoints require your own Twitter cookies and proxy:
COOKIE = "ct0=...;auth_token=..."
PROXY = "http://user:pass@host:port"
# Post a tweet
client.create_tweet("Hello from ApiTwitter SDK!", COOKIE, PROXY)
# Like / unlike
client.like("tweet_id", COOKIE, PROXY)
client.unlike("tweet_id", COOKIE, PROXY)
# Retweet
client.retweet("tweet_id", COOKIE, PROXY)
# Follow / unfollow
client.follow("user_id", COOKIE, PROXY)
client.unfollow("user_id", COOKIE, PROXY)
# Send DM
client.send_dm("user_id", "Hello!", COOKIE, PROXY)
# Bookmarks
client.add_bookmark("tweet_id", COOKIE, PROXY)
bookmarks = client.get_bookmarks(COOKIE, PROXY)
# Timeline
timeline = client.get_timeline_for_you(COOKIE, PROXY, count=20)
latest = client.get_timeline_latest(COOKIE, PROXY, count=20)
Pagination
# First page
result = client.get_followers("username", count=100)
followers = result["followers"]
# Next page
if result.get("next_cursor"):
result = client.get_followers("username", count=100, cursor=result["next_cursor"])
followers.extend(result["followers"])
Error Handling
from apitwitter import ApiTwitter
from apitwitter.exceptions import (
AuthenticationError,
InsufficientCreditsError,
RateLimitError,
NotFoundError,
)
client = ApiTwitter("your-api-key")
try:
user = client.get_user("username")
except AuthenticationError:
print("Invalid API key")
except InsufficientCreditsError:
print("Top up your balance")
except RateLimitError as e:
print(f"Rate limited, retry after {e.retry_after}s")
except NotFoundError:
print("User not found")
Lists, Communities, Topics
COOKIE = "ct0=...;auth_token=..."
PROXY = "http://user:pass@host:port"
# Lists
client.create_list("My List", COOKIE, PROXY, description="A list")
client.get_list_tweets("list_id", COOKIE, PROXY)
client.add_list_member("list_id", "user_id", COOKIE, PROXY)
# Communities
communities = client.explore_communities(COOKIE, PROXY)
client.join_community("community_id", COOKIE, PROXY)
# Topics
client.follow_topic("topic_id", COOKIE, PROXY)
Configuration
client = ApiTwitter(
api_key="your-api-key",
base_url="https://api.apitwitter.com", # default
timeout=30.0, # request timeout in seconds
)
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apitwitter-1.0.0.tar.gz.
File metadata
- Download URL: apitwitter-1.0.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e326e7cdeadf44872e41eaf33fa90ac55e1b9726579f8b02934a2be5d925dc4
|
|
| MD5 |
9b0e65d475572dfa9adb475872ad0e56
|
|
| BLAKE2b-256 |
9158f1d1c6da0c88f735ee8afae0011172190fb07b80b8ec3c15da907e9c4119
|
File details
Details for the file apitwitter-1.0.0-py3-none-any.whl.
File metadata
- Download URL: apitwitter-1.0.0-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c48e220efab6237bc01fe3de0bb207503e3e2745e1dba74681d3f279e282ff5
|
|
| MD5 |
5834a6fa59f50b3b32b5c64dfdfc630a
|
|
| BLAKE2b-256 |
548ea00c9520f5a38c6f015658493c788f2fa916e90fe7ef841deb2eca54c5c1
|