LinkdTime

Build a clean timeline of any LinkedIn activity from a single URL or a whole list of links.

URL

https://github.com/Lucksi/LinkdTime\

Description

LinkdTime is a command-line Python tool that scrapes LinkedIn pages to recover the precise date and time of posts, comments, replies and profile-image changes, then lays them out chronologically. You can feed it one URL to see when that action happened or pass a text file of many links to generate an HTML or TXT timeline with optional embedded images. Recognised activities include posts, comments, profile-picture changes, background-image changes and company-logo swaps (see GitHub).\

It accepts either: • A single LinkedIn URL – e.g. https://www.linkedin.com/feed/update/urn:li:activity:... or a comment permalink – and prints the precise UTC time the action occurred; • A text file of many URLs – one per line – and builds a chronological HTML or TXT timeline. Use --save to embed images as Base64 inside the HTML or --download to save originals alongside it.

Example use case

An analyst harvesting every post- and comment-URL authored by a suspected astroturf network feeds them to LinkdTime. The generated timeline shows that “independent” accounts replied within 90 seconds of each post – a pattern typical of centrally scripted campaigns. Astroturfing explained

Typical Workflow

# 1. Clone & run a single-URL lookup
git clone https://github.com/Lucksi/LinkdTime
cd LinkdTime
python3 main.py https://www.linkedin.com/feed/update/urn:li:activity:7123…

# 2. Build a bulk timeline
python3 main.py timeline links.txt --autoname --description "Suspect A activity"
# flags: --save  (embed Base64)  •  --download  (save images)

The script returns either a single timestamp or a full HTML / TXT timeline (optional embedded images or Base64). Investigators can therefore spot coordination patterns, for example, discovering that replies labelled “organic” landed within minutes of each other. The tool prints either one ISO 8601 timestamp or writes timeline.html / timeline.txt. Investigators can visualise coordination, e.g. five “organic” replies landing < 3 min after a post may indicate astroturfing (see definition above).

Cost

Open-source under the GPL-3.0 licence; no paid tier (GitHub).

Level of difficulty

Requirements

  • Linux with Python 3 (officially tested; MacOS & Windows may work but are untested, Jul 2025).

  • Target URLs must be viewable without signing in. LinkdTime does not bypass LinkedIn log-in walls.

Limitations

  • Untested on Windows or macOS, manual tweaks may be necessary;

  • Breaks if LinkedIn changes its HTML structure (pure scraping);

  • Cannot access content behind the login wall or private-visibility posts;

  • Heavy, rapid queries may trigger LinkedIn's anti-bot defences; use rate-limiting or rotating proxies;

  • No graphical interface, terminal only.

  • LinkedIn deploys rate-limits, CAPTCHAs and UA/velocity-based WAF rules against automated scraping. Plan pauses or proxy rotation. See LinkedIn’s own note on anti-scraping defences.

Ethical Considerations

  • Scraping LinkedIn may violate its terms of service; check your legal context before large-scale use.

  • LinkdTime extracts only information already publicly visible; nevertheless, assembling complete timelines can expose behavioural or work-pattern insights that the subject did not expect to be profiled.

Guides and articles

  • “A LinkedIn Activity Date Finder – LinkdTime” – creator’s announcement on LinkedIn (Mar 2025, LinkedIn).

  • Featured in OSINT Newsletter 67 – tool showcase with workflow tips (Apr 2025, X (formerly Twitter).

  • Anti-scraping policy – LinkedIn Safety Series.

Tool provider

Created and maintained by Luca Garofalo (Lucksi), an Italy-based open-source developer.

Similar tools

Tool
Strength
Weakness

Precise timestamps, bulk timeline, open-source

Linux-only; breaks if LinkedIn changes

Exports post IDs fast

No timeline output; limited to posts

Full historical snapshots

No post times; manual link lookup

Advertising Trackers

Page maintainer

Martin Sona

Last updated

Was this helpful?