Skip to main content

Linkook

English | 中文

Linkook is an OSINT tool for discovering linked/connected social accounts and associated emails across multiple platforms using a single username. It also supports exporting the gathered relationships in a Neo4j-friendly format for visual analysis.

Screenshot

Main Features

  • Search social media accounts across multiple platforms based on a given username.
  • Further retrieve interlinked social accounts, usernames, emails, and more.
  • Use HudsonRock's Cybercrime Intelligence Database to check if related emails have been affected by cybercrime or info-stealer infections.
  • Support exporting scan results to a Neo4j-friendly JSON format, enabling visual analysis in Neo4j.

Installation

pipx install linkook

or use pip instead of pipx

Install manually

You can also use the following commands to install it manually.

  1. Download this repo
git clone https://github.com/JackJuly/linkook
cd linkook
  1. You can run Linkook directly
python -m linkook {username}
  1. Or you can install Linkook
python setup.py install

Run Linkook

linkook {username}

Usage

--show-summary

Choose whether to display a summary of the scan results.

Screenshot

--concise

Choose whether to display the output in a concise format.

Screenshot

--check-breach

Use HudsonRock's Cybercrime Intelligence Database to check whether the discovered email addresses have been compromised by cybercrime or info-stealing. If any data breach is found, the email address will be highlighted in red with '(breach detected)' in the output, and all detected emails will be listed in the Scan Summary.

...
Found Emails: notbreached@mail.com, breached@mail.com(breach detected)
Leaked Passwords:
+ breached@mail.com: password123
...
...
========================= Scan Summary =========================
...
Breached Emails: breached@mail.com(password123)

--hibp

Use the Have I Been Pwned API instead of HudsonRock’s Database for breach information checks. When using it for the first time, you need to provide an API key (requiring a HIBP subscription). The API key will be saved locally in ~/.hibp.key.

--neo4j

Export the query results as a JSON file compatible with Neo4j database imports, producing neo4j_export.json.

In Neo4j, use the APOC plugin to import the JSON data. The following Cypher code will import the data and, upon successful execution, return the counts of imported nodes and relationships.

CALL apoc.load.json("file:///neo4j_export.json") YIELD value
CALL {
  WITH value
  UNWIND value.nodes AS node
  CALL apoc.create.node(
    node.labels,
    apoc.map.merge({ id: node.id }, node.properties)
  ) YIELD node AS createdNode
  RETURN count(createdNode) AS nodesCreated
}
CALL {
  WITH value
  UNWIND value.relationships AS rel
  MATCH (startNode {id: rel.startNode})
  MATCH (endNode {id: rel.endNode})
  CALL apoc.create.relationship(startNode, rel.type, {}, endNode) YIELD rel AS createdRel
  RETURN count(createdRel) AS relsCreated
}
RETURN nodesCreated, relsCreated;

You can use MATCH (n) RETURN n to view all results and their connections.

Screenshot

Other Options

--help: show help message.

--silent: Suppress all output and only show summary.

--scan-all: Scan all available sites in provider.json. If not set, only scan sites with isConnected set to True.

--print-all: Output sites where the username was not found.

--no-color: Output without color.

--browse: Browse to all found profiles in the default browser.

--debug: Enable verbose logging for debugging.

--output: Directory to save the results. Default is results.

--local: Force the use of the local provider.json file, add a custom path if needed. Default is provider.json.

--version & --update: View version information and update directly using pipx.

Comparison with Sherlock

Sherlock is a great tool that finds social media accounts based on usernames, and this project (Linkook) was partly inspired by it. But Sherlock has some limitations.

  • Only searches for the same username on each platform.
  • May miss accounts if a user uses different usernames across platforms.
  • Can mistakenly include accounts from unrelated users if they share the searched username.

In contrast, Linkook can go one step further:

  • Recursively searches for linked accounts from each discovered social account—even if different usernames are used.
  • Provides a more comprehensive view of the user’s online presence like email infos.
  • Supports exporting scan results into a Neo4j-friendly JSON format for visualization, making it easier to analyze associations between usernames, accounts, and emails to filter out unconnected accounts.

Contributing

For details on how Linkook works and how to contribute, please refer to CONTRIBUTING.md for more details.

Support

BuyMeACoffee

Star History

Star History Chart

Metadata

Release files for linkook 1.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for linkook 1.1.3
File Size Uploaded
linkook-1.1.3.tar.gz 32.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for linkook 1.1.3
File Interpreter ABI Platform
linkook-1.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 66.9 kB

Release files / linkook-1.1.3.tar.gz

Download URL linkook-1.1.3.tar.gz
Size 32.1 kB
Tags Source
SHA-256 checksum
How to use checksums
69f94795998c9bec93aefc147b88fb07fd292ae86bea0a63ae2366ba0e8bab5d
BLAKE2b-256 checksum
How to use checksums
984a6e7f74ad00304805c00d31c301c8f8fe21007406012e1a5698121207b4b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / linkook-1.1.3-py3-none-any.whl

Download URL linkook-1.1.3-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73559deafc157793afae035a3bafa0b1e92f5966b566e4a2cbfa1cb977704803
BLAKE2b-256 checksum
How to use checksums
81feac78cda3e253f6e4ac630da6cd8fa6e539f10f3bc4098f1f505d3289419d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.3 This release

2 release files

1.1.2

2 release files

1.1.0

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page