Skip to main content

Reveal the identity behind a share link — OSINT for 17+ platforms (TikTok, Instagram, Discord, Notion, Google Docs, GitHub, LinkedIn, ...)

Project description

ShareTrace

🎭 Reveal the identity behind a share link

17 sources • no API keys • one command

💻 Quick Start

python -m sharetrace <url>

📖 Usage examples

# Output as JSON for piping
python -m sharetrace <url> --json

# List all supported platforms
python -m sharetrace --list

# TikTok share link — extracts sharer identity + device + share method
python -m sharetrace "https://vm.tiktok.com/<code>"

# ChatGPT share — extracts display name
python -m sharetrace "https://chatgpt.com/share/<uuid>"

# Google Docs / Sheets / Drive — extracts owner email + Google ID + dates
python -m sharetrace "https://docs.google.com/document/d/<id>/edit" --json

# GitHub commit — extracts committer name + email
python -m sharetrace "https://github.com/<user>/<repo>/commit/<sha>"

# GitHub profile — scans recent public PushEvents for emails
python -m sharetrace "https://github.com/<username>"

# GitLab commit — same .patch trick as GitHub
python -m sharetrace "https://gitlab.com/<group>/<project>/-/commit/<sha>"

# Hugging Face profile — extracts full name, followers, orgs
python -m sharetrace "https://huggingface.co/<username>"

# Notion public page — leaks editor names + UUIDs in one POST
python -m sharetrace "https://<workspace>.notion.site/<page>"

# Override the default Google Drive API key (if it gets revoked)
SHARETRACE_GDOC_API_KEY=<your-key> python -m sharetrace <drive-url>

⚙️ Installation

git clone https://github.com/soxoj/sharetrace.git
cd sharetrace
pip install -r requirements.txt

Supported sources

Name Extracts Notes
TikTok User ID, Username, Nickname, Country, Avatar, Signature, Device, Share Method, Timestamp, Follower/Following/Video/Heart Counts, Private Account, DM Available Requires short share link (vm.tiktok.com / vt.tiktok.com)
Instagram Username, User ID, Display Name, Profile URL, Profile Pic Sharer data might expire within a few days; only fresh share links contain identity info
Discord User ID, Username, Display Name, Avatar, Creation Time Vanity invites may not contain inviter data
ChatGPT Display Name
Claude Display Name, User ID
Perplexity Username, Avatar, User ID
Microsoft Email From SharePoint/OneDrive personal links; no HTTP request needed
Pinterest Username, User ID, Display Name, Avatar, Profile URL Requires short share link (pin.it) with invite code
Substack User ID, Name, Handle, Bio, Avatar, Profile Setup Date Requires referral share link (?r= parameter)
Suno Username, Display Name, Avatar, Profile URL
Telegram User ID Decoded from joinchat link hash; no HTTP request needed. Links starting with AAAAA decode to user_id=0 and contain no useful data
Google Docs Owner Email, Name, Google ID, Avatar, Creation Date, Last Edit Works for Docs, Sheets, Slides, Drawings, Forms, Drive files, Apps Script, Jamboard, My Maps. Requires document to be publicly shared. API key overridable via SHARETRACE_GDOC_API_KEY
GitHub Email, Name, Commit SHA, Repo (commit URL); Username, Emails list (profile URL) Commit URL: parses .patch mbox From: header. Profile URL: scans recent public PushEvents (last 90 days). users.noreply.github.com emails flagged. Profile route subject to GitHub's 60/hr unauth rate limit
GitLab Email, Name, Commit SHA, Project (commit URL); Username, Public Email (profile URL) Same .patch mbox trick as GitHub for commits. Profile lookup via /api/v4/users returns public_email only when the user opted in. Self-hosted GitLab instances out of scope
Hugging Face Username, Full Name, Avatar, Account Type, Followers, Organizations, Profile URL Uses public /api/users/<name>/overview endpoint. Repo URLs (/<user>/<repo>) resolve to owner
LinkedIn Display Name, Headline, Avatar, Profile URL OG-tag scrape with realistic UA. Honestly surfaces is_blocked: True on 999/403/429/authwall — block rate dynamic
Notion Name, Avatar, User ID, Workspace Name/Domain, Other Editors Public pages leak editor UUIDs in block permissions; resolved in one syncRecordValuesMain POST (no auth, no cookies). Works for notion.so/Page-<uuid> and *.notion.site/ links. Notion has started redacting email fields for some accounts

🌐 Web interface (community)

A self-hosted Flask wrapper with a browser UI is available: voelspriet/sharetrace-web — live demo at https://share.whopostedwhat.com. Maintained separately; all extraction logic still lives in this repo.

Screenshot of share.whopostedwhat.com

😊 SOWEL classification

This tool uses the following OSINT techniques:

🙏 Acknowledgements

  • Malfrats/xeuledoc by @mxrch and @megadose — the Google Drive v2beta owner-metadata endpoint was first documented here (GPLv3). The gdoc module is a clean-room rewrite against the same public API.
  • avonture.be by @cavo789 — documented the GitHub .patch trick that the github module's commit route relies on.
  • Notion editor-leak technique — public pages expose editor UUIDs in block permissions, resolvable to names/photos via syncRecordValuesMain with no auth. Originally discovered by @SpongeBhav (@baibhavanand on GitHub) and amplified by @weezerosint.

⚠️ Ethical use & disclaimer

This tool is created for educational and defensive purposes only.

  • Only analyze links that have been publicly shared or sent to you.
  • Only hit endpoints that are explicitly public (no auth, no scraping of private data).
  • The maintainers are not responsible for misuse.

Permitted: journalistic fact-checking, corporate security research, authorized penetration testing, counter-scam / anti-fraud work, personal reputation monitoring.

Forbidden: doxxing, harassment, stalking, unauthorized surveillance, social engineering for fraud, privacy invasion, any criminal activity.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sharetrace_osint-0.1.0.tar.gz (54.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sharetrace_osint-0.1.0-py3-none-any.whl (46.6 kB view details)

Uploaded Python 3

File details

Details for the file sharetrace_osint-0.1.0.tar.gz.

File metadata

  • Download URL: sharetrace_osint-0.1.0.tar.gz
  • Upload date:
  • Size: 54.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for sharetrace_osint-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0045db6ed95ff33a515a66b1a9dc5cd0e46b547845a319f6e4b34235daccb3f1
MD5 dab4d8300d93eb604f73352bd0e4824d
BLAKE2b-256 a7270b001f25871afbf1cf90b9f8550651202cc40f6cb4a0deb45bbba67388f5

See more details on using hashes here.

File details

Details for the file sharetrace_osint-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sharetrace_osint-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7bd73b901ba1491970d42022fe17299e5560df4d2961f5054a19b304ac457bf3
MD5 0605e0a1d9af71820c31b4097bb0ccc9
BLAKE2b-256 c712377766adc904e4bb682ba5fb856fcf30835a8e167793108607d6666763d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page