All Projects → twintproject → Twint

twintproject / Twint

Licence: mit
An advanced Twitter scraping & OSINT tool written in Python that doesn't use Twitter's API, allowing you to scrape a user's followers, following, Tweets and more while evading most API limitations.

Programming Languages

python
139335 projects - #7 most used programming language
Dockerfile
14818 projects

Projects that are alternatives of or similar to Twint

Twint Search
Explore tweets gathered with Twint with faceted search
Stars: ✭ 42 (-99.65%)
Mutual labels:  osint, elasticsearch, tweets
stweet
Advanced python library to scrap Twitter (tweets, users) from unofficial API
Stars: ✭ 287 (-97.63%)
Mutual labels:  tweets, scrape, twint
Excelastic
Vert.x web and commandline application to import CSV/XLS/XLSX files into ElasticSearch.
Stars: ✭ 103 (-99.15%)
Mutual labels:  elasticsearch, kibana
Systemdlogger
Exports systemd logs to an external service, eg cloudwatch, elasticsearch
Stars: ✭ 91 (-99.25%)
Mutual labels:  elasticsearch, kibana
Spring Cloud Microservices Development
Spring Cloud Microservices Development.《Spring Cloud 微服务架构开发实战》
Stars: ✭ 106 (-99.12%)
Mutual labels:  elasticsearch, kibana
Helm Elasticstack
Kubernetes Helm Charts and Tools to run Elastic Stack(ELK) on Azure Container Service(AKS)
Stars: ✭ 76 (-99.37%)
Mutual labels:  elasticsearch, kibana
Kibananestedsupportplugin
A plugin for Kibana 5.5 and beyond that adds support for nested field search and aggregation.
Stars: ✭ 78 (-99.36%)
Mutual labels:  elasticsearch, kibana
Search Guard Docs
Official documentation for Search Guard, the Elasticsearch security suite
Stars: ✭ 92 (-99.24%)
Mutual labels:  elasticsearch, kibana
Elasticsearch Cli
Command line interface for ElasticSearch
Stars: ✭ 70 (-99.42%)
Mutual labels:  elasticsearch, kibana
Tia
Your Advanced Twitter stalking tool
Stars: ✭ 98 (-99.19%)
Mutual labels:  osint, twitter
Logtrail
Kibana plugin to view, search & live tail log events
Stars: ✭ 1,343 (-88.9%)
Mutual labels:  elasticsearch, kibana
Mysqlbeat
Fully customizable Beat for MySQL server - this beat will ship the results of any query defined in the config file to Elasticsearch.
Stars: ✭ 99 (-99.18%)
Mutual labels:  elasticsearch, kibana
Logstash
OSSEC + Logstash + Elasticsearch + Kibana
Stars: ✭ 74 (-99.39%)
Mutual labels:  elasticsearch, kibana
Sarcasm Detection
Detecting Sarcasm on Twitter using both traditonal machine learning and deep learning techniques.
Stars: ✭ 73 (-99.4%)
Mutual labels:  twitter, tweets
Sentinl
Kibana Alert & Report App for Elasticsearch
Stars: ✭ 1,233 (-89.81%)
Mutual labels:  elasticsearch, kibana
Jmeter Elasticsearch Backend Listener
JMeter plugin that lets you send sample results to an ElasticSearch engine to enable live monitoring of load tests.
Stars: ✭ 72 (-99.41%)
Mutual labels:  elasticsearch, kibana
Dynamite Nsm
DynamiteNSM is a free Network Security Monitor developed by Dynamite Analytics to enable network visibility and advanced cyber threat detection
Stars: ✭ 92 (-99.24%)
Mutual labels:  elasticsearch, kibana
Tta Elastic
Official Trump Twitter Archive V2 source
Stars: ✭ 104 (-99.14%)
Mutual labels:  twitter, tweets
Aws Config To Elasticsearch
Generates an AWS Config Snapshot and ingests it into ElasticSearch for further analysis using Kibana
Stars: ✭ 62 (-99.49%)
Mutual labels:  elasticsearch, kibana
Docker Elk Tutorial
docker-elk-tutorial + django + logging
Stars: ✭ 69 (-99.43%)
Mutual labels:  elasticsearch, kibana

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:

  • Can fetch almost all Tweets (Twitter API limits to last 3200 Tweets only);
  • Fast initial setup;
  • Can be used anonymously and without Twitter sign up;
  • No rate limitations.

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

  • Python 3.6;
  • aiohttp;
  • aiodns;
  • beautifulsoup4;
  • cchardet;
  • dataclasses
  • elasticsearch;
  • pysocks;
  • pandas (>=0.23.0);
  • aiohttp_socks;
  • schedule;
  • geopy;
  • fake-useragent;
  • py-googletransx.

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:

  • twint -u username - Scrape all the Tweets of a user (doesn't include retweets but includes replies).
  • twint -u username -s pineapple - Scrape all Tweets from the user's timeline containing pineapple.
  • twint -s pineapple - Collect every Tweet containing pineapple from everyone's Tweets.
  • twint -u username --year 2014 - Collect Tweets that were tweeted before 2014.
  • twint -u username --since "2015-12-20 20:30:15" - Collect Tweets that were tweeted since 2015-12-20 20:30:15.
  • twint -u username --since 2015-12-20 - Collect Tweets that were tweeted since 2015-12-20 00:00:00.
  • twint -u username -o file.txt - Scrape Tweets and save to file.txt.
  • twint -u username -o file.csv --csv - Scrape Tweets and save as a csv file.
  • twint -u username --email --phone - Show Tweets that might have phone numbers or email addresses.
  • twint -s "Donald Trump" --verified - Display Tweets by verified users that Tweeted about Donald Trump.
  • twint -g="48.880048,2.385939,1km" -o file.csv --csv - Scrape Tweets from a radius of 1km around a place in Paris and export them to a csv file.
  • twint -u username -es localhost:9200 - Output Tweets to Elasticsearch
  • twint -u username -o file.json --json - Scrape Tweets and save as a json file.
  • twint -u username --database tweets.db - Save Tweets to a SQLite database.
  • twint -u username --followers - Scrape a Twitter user's followers.
  • twint -u username --following - Scrape who a Twitter user follows.
  • twint -u username --favorites - Collect all the Tweets a user has favorited (gathers ~3200 tweet).
  • twint -u username --following --user-full - Collect full user information a person follows
  • twint -u username --timeline - Use an effective method to gather Tweets from a user's profile (Gathers ~3200 Tweets, including retweets & replies).
  • twint -u username --retweets - Use a quick method to gather the last 900 Tweets (that includes retweets) from a user's profile.
  • twint -u username --resume resume_file.txt - Resume a search starting from the last saved scroll-id.

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

  • Write to file;
  • CSV;
  • JSON;
  • SQLite;
  • Elasticsearch.

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:

Featured Blog Posts:

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].