Twikit

raw JSON →
2.3.3 verified Mon Apr 27 auth: no python

Twikit is an asynchronous Twitter API wrapper for Python that works without an official API key by scraping the web interface. Current version 2.3.3, updated frequently (multiple releases per month). Supports Python >=3.8.

pip install twikit
error TypeError: Client() takes no arguments
cause Older versions (<2.0) used `Client('en-US')` as positional. New version expects `lang` keyword.
fix
Use Client(language='en-US') or simply Client('en-US') still works in 2.x but best to use keyword.
error AttributeError: module 'twikit' has no attribute 'Client'
cause Incorrect import path (e.g., `from twikit.client import Client`).
fix
Use from twikit import Client.
error twikit.errors.TooManyRequests: Rate limit exceeded
cause Sending too many requests in a short time.
fix
Add time.sleep() or use a delay between requests. Use rotating proxies.
breaking From version 2.0.0, twikit switched from synchronous to asynchronous API. All methods must be awaited. Old sync code using `client.get_tweets()` will fail.
fix Wrap calls in async functions and use `await`. Install httpx[socks] if using proxies.
gotcha Twikit can get rate-limited or have your account suspended if used aggressively. No official API means scraping is fragile.
fix Add delays between requests, use random intervals, and rotate accounts if needed.
deprecated The `get_tweets()` method is deprecated. Use `get_user_tweets()` instead.
fix Replace `client.get_tweets(user_id)` with `client.get_user_tweets(user_id)`.
gotcha Login may require cookies if email confirmation or 2FA is enabled. The library does not handle OTP automatically.
fix Pass `cookies` parameter or manual OTP entry via CLI.

Login and fetch a user by screen name.

import asyncio
from twikit import Client

async def main():
    client = Client('en-US')
    await client.login(auth_info_1='your_username', password='your_password')
    user = await client.get_user_by_screen_name('example_user')
    print(user.screen_name)

asyncio.run(main())