twint README

The project's README from github.com/twintproject/twint. As one markdown file: README.md.

TWINT - Twitter Intelligence Tool

2 3

PyPI Build Status Python 3.6|3.7|3.8 GitHub license Downloads Downloads Patreon

No authentication. No API. No limits.

Twint is an advanced Twitter scraping tool written in Python that allows for scraping Tweets from Twitter profiles without using Twitter's API.

Twint utilizes Twitter's search operators to let you scrape Tweets from specific users, scrape Tweets relating to certain topics, hashtags & trends, or sort out sensitive information from Tweets like e-mail and phone numbers. I find this very useful, and you can get really creative with it too.

Twint also makes special queries to Twitter allowing you to also scrape a Twitter user's followers, Tweets a user has liked, and who they follow without any authentication, API, Selenium, or browser emulation.

tl;dr Benefits

Some of the benefits of using Twint vs Twitter API:

Limits imposed by Twitter

Twitter limits scrolls while browsing the user timeline. This means that with .Profile or with .Favorites you will be able to get ~3200 tweets.

Requirements

Installing

Git:

git clone --depth=1 https://github.com/twintproject/twint.git
cd twint
pip3 install . -r requirements.txt

Pip:

pip3 install twint

or

pip3 install --user --upgrade git+https://github.com/twintproject/twint.git@origin/master#egg=twint

Pipenv:

pipenv install git+https://github.com/twintproject/twint.git#egg=twint

March 2, 2021 Update

Added: Dockerfile

Noticed a lot of people are having issues installing (including me). Please use the Dockerfile temporarily while I look into them.

CLI Basic Examples and Combos

A few simple examples to help you understand the basics:

More detail about the commands and options are located in the wiki

Module Example

Twint can now be used as a module and supports custom formatting. More details are located in the wiki

import twint

# Configure
c = twint.Config()
c.Username = "realDonaldTrump"
c.Search = "great"

# Run
twint.run.Search(c)

Output

955511208597184512 2018-01-22 18:43:19 GMT <now> pineapples are the best fruit

import twint

c = twint.Config()

c.Username = "noneprivacy"
c.Custom["tweet"] = ["id"]
c.Custom["user"] = ["bio"]
c.Limit = 10
c.Store_csv = True
c.Output = "none"

twint.run.Search(c)

Storing Options

Elasticsearch Setup

Details on setting up Elasticsearch with Twint is located in the wiki.

Graph Visualization

graph

Graph details are also located in the wiki.

We are developing a Twint Desktop App.

4

FAQ

I tried scraping tweets from a user, I know that they exist but I'm not getting them

Twitter can shadow-ban accounts, which means that their tweets will not be available via search. To solve this, pass --profile-full if you are using Twint via CLI or, if are using Twint as module, add config.Profile_full = True. Please note that this process will be quite slow.

More Examples

Followers/Following

To get only follower usernames/following usernames

twint -u username --followers

twint -u username --following

To get user info of followers/following users

twint -u username --followers --user-full

twint -u username --following --user-full

userlist

To get only user info of user

twint -u username --user-full

To get user info of users from a userlist

twint --userlist inputlist --user-full

tweet translation (experimental)

To get 100 english tweets and translate them to italian

twint -u noneprivacy --csv --output none.csv --lang en --translate --translate-dest it --limit 100

or

import twint

c = twint.Config()
c.Username = "noneprivacy"
c.Limit = 100
c.Store_csv = True
c.Output = "none.csv"
c.Lang = "en"
c.Translate = True
c.TranslateDest = "it"
twint.run.Search(c)

Notes:

Contact

If you have any question, want to join in discussions, or need extra help, you are welcome to join our Twint focused channel at OSINT team

twint (twintproject/twint)

kibana
Searching Database…

16.4K ·GitHub
archived
What is this?Twint is a Python tool for scraping Twitter data — tweets, followers, following, likes and more — without using Twitter's official API, so it isn't bound by API limits or sign-up requirements.
Is this a CLI tool or something I import into my own scripts?It's both: you run it directly from the command line (e.g. 'twint -u username'), and it can also be imported as a Python module with custom formatting for scripts.
How do I install and run it?Install it with Git or Pip (or Pipenv), then run commands like 'twint -u username' from the terminal. There's also a Dockerfile provided if normal installation gives you trouble.
What does it need to run besides Python?Python 3.6+ plus a set of libraries that get installed with it: aiohttp, aiodns, beautifulsoup4, cchardet, elasticsearch, pandas, pysocks, geopy, fake-useragent and py-googletransx, among others.
Does scraping always work, and is this still maintained?This repository is archived and no longer actively developed, so it can break as Twitter's site changes. Even when working, Twitter still caps profile/favorites scraping to roughly 3200 tweets, and shadow-banned accounts need the --profile-full flag to be found at all.
Do I need a Twitter account or API key to use it?No — Twint makes no authenticated API calls, so you can scrape tweets, followers and following lists completely anonymously without ever signing up for Twitter.
What output formats does Twint support?You can write results to a plain text file, CSV, JSON, a SQLite database, or push them directly into Elasticsearch.
Why use this instead of the official Twitter API?The official API only returns the last ~3200 tweets, requires authentication and has rate limits; Twint has none of those restrictions and can fetch almost all of a user's tweets.
Can I visualize the scraped data?Yes, the project supports graph visualization of scraped data, with setup details documented in the project wiki.
What's the 'translate' feature for?An experimental flag lets you scrape tweets in one language and auto-translate them into another via Google Translate, e.g. '--lang en --translate --translate-dest it'.
Size
4.5 MB
Stars
16.4K
Age
9y
Commits · 90 Days