Productivity & Collaboration job-searchlinkedincliweb-scrapingbunremote-workjob-listings

LinkedIn Search Skill

Search live LinkedIn job listings for any country or remote market with no login, no API key, and zero runtime dependencies — just Bun.

FollowSkills review · FSRS-2.0
Use with care
55/ 100 5-point scale 2.8 / 5
1 2 3 4 5 6
1Trust14 / 25 · 2.8/5

Permissions are scoped to a single Bash invocation of the bundled CLI; no credentials, keys, or disk side effects; data flow (public jobs-guest endpoints) is disclosed and a repeated personal-use-only ToS warning is given. Deduction: automated scraping violates LinkedIn's Terms of Service — a substantive compliance risk only mitigated by user discipline, with no technical enforcement or rollback; publisher identity is unverified.

2Reliability12 / 20 · 3.0/5

Source is self-consistent: strict flag validation (unknown flags, fractions, zeros, conflicts rejected), structured JSON errors on stderr with exit code 1. Network-free regression tests (cli-flag-validation.test.ts) plus CI's discover-and-test matrix constitute verifiable third-party execution evidence, justifying a score above the static cap. Deduction: core HTML parsing paths (parseJobCards/parseJobDetail) lack fixture tests; regex parsing is inherently fragile against LinkedIn markup drift, and key paths were not reproduced in this static review.

3Adaptability9 / 15 · 3.0/5

Trigger description is precise (explicit phrases, required location, any country/remote), with a declared boundary (personal use). Deduction: core function depends entirely on live access to linkedin.com, a reachability risk for mainland-China users; no stated tolerance boundary for LinkedIn markup changes.

4Convention10 / 15 · 3.3/5

Well-layered SKILL.md and CLI README with examples, flag tables, error contracts and ToS warnings; version 1.0.0 and MIT license are explicit. Deduction: no changelog or explicit maintenance-ownership statement; ToS risk makes long-term availability doubtful and no update path is described for endpoint breakage.

5Effectiveness5 / 15 · 1.7/5

When the guest endpoints work, output formats (/table/plain) are well-defined and directly usable; the author claims personal hiring success with this workflow. Deduction: static review cannot verify actual result quality; LinkedIn commonly rate-limits credential-less access, so completeness and long-term usability have limited evidence, and marginal value over alternatives (official API, other job boards) is unverified.

6Verifiability5 / 10 · 2.5/5

Auditable primary material exists (full source, network-free test suite, CI workflow that actually runs this CLI's tests), exceeding marketing-only claims and reaching the static cap. Deduction: no independent reproduction of core parsing or real output formats; the claim 'verified against live guest pages' is itself unverifiable.

Evidence confidence:Low Reviewed Sep 09, 2026 Reviewed revision 8c81edc330b9
The upstream repository has new commits since this review. The score still applies to the reviewed revision shown and may not cover the latest changes.
Before you use it
  • Automated access via this skill violates LinkedIn's Terms of Service; keep volume low for personal use only — accounts/IPs may be rate-limited or blocked.
  • Core function depends on live reachability of linkedin.com and may be unusable from mainland-China networks.
  • HTML parsing is regex-based; LinkedIn markup changes can silently degrade results, and no fixture tests cover the parsing paths.
  • Publisher identity is unverified by FollowSkills — unknown, not suspicious; review the source before use.
See the full review method →

What does this skill do, and when should you use it?

This is a job-portal search skill inside the ai-job-search repository, located at .agents/skills/linkedin-search/. It scrapes LinkedIn's unauthenticated public jobs-guest endpoints and works in any market out of the box as long as the user supplies the location explicitly. It filters by keyword, posting age (down to minutes), and workplace type (remote/hybrid/onsite), and can fetch the full description of a single posting. Because automated access violates LinkedIn's Terms of Service, the project explicitly restricts it to personal, low-volume use.

Runs a Bun CLI that calls LinkedIn's public jobs-guest endpoints: the search subcommand takes a required --location (e.g. "Berlin, Germany" or "Remote") plus optional --query, --jobage, --jobage-minutes, --remote, --page, and --limit flags, returning 10 results per page in , table, or plain format. The detail subcommand accepts a job ID, a jobs/view URL, or a urn:li:jobPosting URN and returns the full description, seniority, employment type, job function, and industries. It retries 429/5xx with exponential backoff; errors go to stderr as JSON with exit code 1.

  1. A job-seeking engineer checking data-engineer roles in Bengaluru from the last 30 days, using --jobage 30 with table output for quick scanning
  2. A remote worker browsing the fully remote job stream with -l "Remote"
  3. A candidate who found a LinkedIn posting and wants its full description via the detail command for later CV tailoring
  4. Someone tracking fresh postings using --jobage-minutes 30 to see only jobs posted in the last half hour

What are this skill's strengths and limitations?

Pros
  • Zero runtime dependencies — runs with just Bun, no bun install needed
  • No LinkedIn account, login, or API key required
  • Country-agnostic: the same commands work in any market by changing --location
  • Sub-day freshness filtering plus remote/hybrid/onsite workplace filters
  • Three output formats (/table/plain) for both programmatic and human use
Limitations
  • Automated access violates LinkedIn's Terms of Service — personal, low-volume use only; not for commercial or bulk collection
  • Depends on unauthenticated public endpoints that LinkedIn may change or rate-limit at any time
  • Fixed page size of 10, and unauthenticated access limits data to what a guest sees
  • SKILL.md does not mention an automated test suite or long-term maintenance commitment

How do you install this skill?

Fork and clone MadsLorentzen/ai-job-search per the repo's quick start. The skill has zero runtime dependencies and only requires Bun (https://bun.sh); the README notes that bun install is optional here, just pulling TypeScript dev types. The skill is designed to be invoked by an agent like Claude Code through its SKILL.md.

How do you use this skill?

Run in a terminal or agent environment with Bun installed, e.g. search data-engineer roles in Bengaluru from the last 30 days: bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "data engineer" -l "Bengaluru, Karnataka, India" --jobage 30 --format table. Get details: detail 4426311357 --format plain (a full job URL or URN also works). The location must always be passed explicitly; trigger phrases include find a job, job search, and remote jobs.

How does this skill compare with similar options?

The same repo also ships freehire-search, which queries freehire.me's public REST API and returns structured results (skills, seniority, category) with zero dependencies; linkedin-search is HTML-parsed and rawer by comparison, but covers LinkedIn's global job board. For the Danish market, sibling portal skills for Jobindex, Jobnet, and others serve as local alternatives.

FAQ

Do I need a LinkedIn account or API key?
No. It uses LinkedIn's unauthenticated public jobs-guest endpoints, but that means respecting the low-volume, personal-use restriction.
Does this break LinkedIn's rules?
The SKILL.md states plainly that automated access violates LinkedIn's Terms of Service, so it is restricted to personal use at low volume, run at your own responsibility.
Does it work outside Denmark?
Yes. It is deliberately built as the repo's country-agnostic worked example: the endpoints are global and the HTML parsing is country-independent — only the --location changes.
What if I get rate-limited?
The CLI retries 429/5xx responses with exponential backoff, but that is not a license to hammer the endpoint — you should keep your request volume low.

More skills from this repository

All from MadsLorentzen/ai-job-search

Productivity & Collaboration

Job Scraper — Local-First Job Search Skill

Automatically searches multiple job portals for new postings matching your profile, deduplicates across runs, and presents them sorted by fit — no more manual site-hopping.

Productivity & Collaboration

freehire Search Skill

Search tech job listings across many markets through freehire.me's public aggregator API — no keys, no signup, runs on your machine.

Productivity & Collaboration

Jobdanmark Search (Denmark Job Listings)

Query the Jobdanmark.dk public API straight from your AI assistant — search ~15,000+ live Danish job listings by keyword, city, category and employment type, with no login required.

Productivity & Collaboration

Jobnet-Search: Danish Official Job Portal Skill

Query the Jobnet.dk public API directly to search Denmark's official government job portal — 21,000+ live listings, no account or key required.

Productivity & Collaboration

Jobindex Denmark Job Search

Query the public Jobindex.dk API to search live Danish job listings across all sectors from Claude Code — no account or key required.

Dev & Engineering

Jobbank Search Skill

Search live Danish job listings from Akademikernes Jobbank locally, with keyword and multi-dimensional filtering for academic and highly educated positions in Denmark.

Productivity & Collaboration

Upskill — Skill Gap Analysis & Learning Plan

Compares your tracked job postings against your profile, surfaces skill gaps, and generates a prioritized learning plan with real, web-searched study resources.

Productivity & Collaboration

Job Application Assistant

A job search that runs on your machine: evaluate postings, tailor a LaTeX CV, write cover letters, and prep interviews — all inside Claude Code.

Related skills