Open Source Research Notebooks
![Bellingcat logo: Discover Bellingcat](https://img.shields.io/badge/Discover%20Bellingcat-%20?style=for-the-badge&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAA4AAAAYCAYAAADKx8xXAAABhGlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TS0UqDnZQEcxQneyiIo6likWwUNoKrTqYXPoFTRqSFBdHwbXg4Mdi1cHFWVcHV0EQ%2FABxdnBSdJES%2F5cUWsR4cNyPd%2Fced%2B8AoVllqtkTA1TNMtKJuJjLr4rBVwQwhhBEDEvM1JOZxSw8x9c9fHy9i%2FIs73N%2Fjn6lYDLAJxLHmG5YxBvEs5uWznmfOMzKkkJ8Tjxp0AWJH7kuu%2FzGueSwwDPDRjY9TxwmFktdLHcxKxsq8QxxRFE1yhdyLiuctzir1Tpr35O%2FMFTQVjJcpzmKBJaQRIo6klFHBVVYiNKqkWIiTftxD%2F%2BI40%2BRSyZXBYwcC6hBheT4wf%2Fgd7dmcXrKTQrFgcCLbX%2BMA8FdoNWw7e9j226dAP5n4Err%2BGtNYO6T9EZHixwBA9vAxXVHk%2FeAyx1g6EmXDMmR%2FDSFYhF4P6NvygODt0Dfmttbex%2BnD0CWulq%2BAQ4OgYkSZa97vLu3u7d%2Fz7T7%2BwHEU3LHAa%2FQ6gAAAAZiS0dEAAAAAAAA%2BUO7fwAAAAlwSFlzAAAuIwAALiMBeKU%2FdgAAAAd0SU1FB%2BgFHwwiMH4odB4AAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAA50lEQVQ4y82SvWpCQRCFz25ERSJiCNqlUiS1b5AuEEiZIq1NOsGXCKms0wXSp9T6dskDiFikyiPc%2FrMZyf3FXSGQ0%2BzuzPl2ZoeVKgQ0gQ2wBVpVHlcDkjM5V%2FJ5nag6sJ%2FZX%2Bh%2FC7gEhqeAFKf7p1M9aB3b5oN1OomB7g1axUBPBr3GQHODHmOgqUF3MZAzKI2d4LWBV4H%2BMXDuJd1a7Cew1k7SwksaHC4LqNaw7aeX9GWHXkC1G1sTAS17Y3Kk2lnp4wNLiz0DrgLq8qt2MfmSSabAO%2FBBXp26dtrADPjOmN%2BAUdG7B3cE61l5hOZiAAAAAElFTkSuQmCC&logoColor=%23fff&color=%23000)
![Discord logo: Join our community](https://img.shields.io/badge/Join%20our%20community-%20?style=for-the-badge&logo=discord&logoColor=%23fff&color=%235865F2)
![Heart icon: Support our work](https://img.shields.io/badge/Support%20Our%20Work-%20?style=for-the-badge&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8%2BCjxzdmcKICAgd2lkdGg9IjExMCIKICAgaGVpZ2h0PSIxMTAiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI%2BCiAgPGRlZnMKICAgICBpZD0iZGVmczEiIC8%2BCiAgPHBhdGgKICAgICBkPSJtIDgxLjU3LDguMDA3MjY2OCBjIC0xMS42NiwwIC0yMS44MSw2Ljk3MDAwMDIgLTI2LjM1LDE3LjA2MDAwMDIgQyA1MC42OCwxNC45ODcyNjcgNDAuNTMsOC4wMDcyNjY4IDI4Ljg3LDguMDA3MjY2OCAxMi45NSw4LjAwNzI2NjggMCwyMC45NjcyNjcgMCwzNi44ODcyNjcgYyAwLDM1LjkgNTEuNzksNjUuNDYwMDAzIDU0LDY2LjcwMDAwMyAwLjM4LDAuMjEgMC43OSwwLjMyIDEuMjEsMC4zMiAwLjQyLDAgMC44NCwtMC4xMSAxLjIxLC0wLjMyIDIuMiwtMS4yNCA1NC4wMSwtMzAuODAwMDAzIDU0LjAxLC02Ni43MDAwMDMgMC4wMSwtMTUuOTIgLTEyLjk0LC0yOC44ODAwMDAyIC0yOC44NiwtMjguODgwMDAwMiB6IgogICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjEiCiAgICAgaWQ9InBhdGgxIiAvPgo8L3N2Zz4K&logoSize=auto&color=%23A94ECA)
A collection of Jupyter Notebooks that can be to learn or run open source investigations. We cover command line tools, scripts, and methods. We aim to help open source researchers, journalists, and fact-checkers use command line tools and code projects for digital investigations.
Is this for me?
If you've used Jupyter notebooks before you should be good to navigate this right away.
If Jupyter Notebooks/Google Colaboratory don't ring any bells, you should know they are one of the easiest ways to interact with code and the command line, in essence they look like an interactive website where you execute one cell at a time to run different pieces of code, you can also edit the code and adapt it to your needs.
There's plenty of good tutorials about Jupyter Notebooks and the environments you can run them in (like Google Colab or Binder.org), we do advise you to spend 5min doing that. Additionally, we created a simple notebook that you can view (static), run on Google Colab, run on Binder, or run on Kaggle that shows the core skills needed to understand what this is all about!
Why Notebooks?
Jupyter Notebooks
- make it easier to install and run software (less "this does not work on my machine" errors)
- make it safer to run unknown code, when you run it on a Notebook service like Google Colaboratory, Binder, or Kaggle Notebooks
- make it simpler to document specific code uses: they combine styled documentation with code
- are quick to make and easy to use after you understand how to click through the code cells and edit any custom input
- can run bash commands (command line) as well as code (Python and more)
Available Notebooks
The top part of the table consists of tools and methods developed at Bellingcat; the bottom part of community developed tools and methods. |
Notebook |
Level |
Description |
Notebook links |
Tags |
Telegram Phone Number Checker |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
Check if phone numbers have associated Telegram accounts |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
scraping , social-media , telegram |
Wayback Google Analytics |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
Uncover historical analytics ids via the Wayback Machine |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
wayback-machine , google-analytics |
Geoclustering |
![medium](https://img.shields.io/badge/medium-%23FF9800?style=for-the-badge) |
Find clusters of incidents from a CSV of incidents |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
ai , clustering , gis |
vk-url-scraper |
![medium](https://img.shields.io/badge/medium-%23FF9800?style=for-the-badge) |
Scrape data and download media from VKontakte URLs |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
scraping , social-media |
- |
- |
- |
- |
- |
OpenAI Whisper |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
AI audio/video transcription and translation |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
ai , speech-recognition |
Holehe |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
Find accounts associated with an email |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
digital-footprint-tracing |
Maigret |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
Find accounts associated with a username |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
digital-footprint-tracing |
Wayback Machine Downloader |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
Download an entire website from the Wayback Machine. |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
wayback-machine |
YT-DLP |
![easy](https://img.shields.io/badge/easy-%234CAF50?style=for-the-badge) |
Download and manipulate videos from hundreds of online platforms. Includes advanced commands with Python. |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
archiving , media-downloads |
ExifTool |
![medium](https://img.shields.io/badge/medium-%23FF9800?style=for-the-badge) |
Extract and analyse file metadata tags |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
digital-forensics , metadata |
Deepface |
![medium](https://img.shields.io/badge/medium-%23FF9800?style=for-the-badge) |
AI face comparison and analysis |
![Jupyter Notebook](https://img.shields.io/badge/jupyter-.ipynb%20file-orange) |
ai , image-analysis |
Entry level notebooks, you need only know how to run cells and edit specific values
Notebooks that require higher technical know-how, or previous setups
Notebooks that require technical understanding or adapting code