A Simple Twitter API Scraper
You can use functions such as posting or searching for tweets without an API key using this library.
Important
This fork routes every request through noble-tls to impersonate real browser TLS fingerprints (JA3/JA4). Traffic blends in with a genuine browser at the TLS layer, getting past the fingerprint-based bot detection that ordinary httpx / requests-based clients can't evade.
🔵 Discord
Note
Released twikit_grok an extension for using Grok AI with Twikit.
For more details, visit: https://github.com/d60/twikit_grok.
The headline feature of this fork: all HTTP traffic goes through noble-tls (a Python binding to the Go tls-client) instead of httpx / requests. It replays a real browser's TLS/JA3 handshake — Chrome by default, with randomized TLS extension ordering — so requests are indistinguishable from a genuine browser at the TLS layer and slip past fingerprint-based bot detection.
This library uses scraping and does not require an API key.
This library is free to use.
By using Twikit, you can access functionalities such as the following:
-
Create tweets
-
Search tweets
-
Retrieve trending topics
-
etc...
This fork is installed from GitHub:
pip install git+https://github.com/keatonLiu/twikit.gitDefine a client and log in to the account.
import asyncio
from twikit import Client
USERNAME = 'example_user'
EMAIL = 'email@example.com'
PASSWORD = 'password0000'
# Initialize client
client = Client('en-US')
async def main():
await client.login(
auth_info_1=USERNAME,
auth_info_2=EMAIL,
password=PASSWORD,
cookies_file='cookies.json'
)
asyncio.run(main())Create a tweet with media attached.
# Upload media files and obtain media_ids
media_ids = [
await client.upload_media('media1.jpg'),
await client.upload_media('media2.jpg')
]
# Create a tweet with the provided text and attached media
await client.create_tweet(
text='Example Tweet',
media_ids=media_ids
)Search the latest tweets based on a keyword
tweets = await client.search_tweet('python', 'Latest')
for tweet in tweets:
print(
tweet.user.name,
tweet.text,
tweet.created_at
)Retrieve user tweets
tweets = await client.get_user_tweets('123456', 'Tweets')
for tweet in tweets:
print(tweet.text)Send a dm
await client.send_dm('123456789', 'Hello')Get trends
await client.get_trends('trending')More Examples: examples
If you encounter any bugs or issues, please report them on issues.
If you find this library useful, consider starring this repository⭐️
