mcpField
L
linkedin-search

linkedin-search

github.com/ai-job-search-devProductivity67.2k267 installsUpdated 1d ago
Repository

About linkedin-search

linkedin-search is a Bun-based skill for searching LinkedIn’s public job listings across locations and retrieving full posting details. It is intended for personal, low-volume job searches without credentials or runtime dependencies.

Key features

  1. 01Search listings by location and keyword
  2. 02Filter by posting age and work type
  3. 03Retrieve full job descriptions
  4. 04Output JSON, table, or plain text
  5. 05Retry rate-limited and server errors

Use cases

  1. 01Find recent roles in a city or country
  2. 02Search for remote or hybrid positions
  3. 03Review requirements for a specific listing

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/ai-job-search-dev/ai-job-search --skill linkedin-search

After installing, type/linkedin-searchin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

url-reference.md
cli/
package.json
README.md
tsconfig.json
cli/src/
cli.ts
helpers.ts
cli/src/commands/
detail.ts
search.ts
cli/tests/
cli-flag-validation.test.ts
detail-description-cli.test.ts
detail-input.test.ts
helpers.ts
parsing.test.ts
remote-mode.test.ts
request-timeout.test.ts
required-query-value.test.ts
retry-backoff.test.ts
search.test.ts
cli/tests/fixtures/
detail-orbis-excerpt.html
README.md
search-cards.json
search-cards.provenance.md

Details

From the project README

LinkedIn Search Skill

Search live job listings from LinkedIn's public job board for any country/region (and remote). No authentication, no API key, and zero runtime dependencies — it runs with just bun. The location is always passed explicitly, so the same skill works for a forker in any market out of the box.

This is a country-agnostic worked example of the repo's job-portal-skill pattern. LinkedIn's jobs-guest endpoints are global and the HTML parsing is country-independent; only the --location you pass changes per market.

⚠️ Personal use only

This uses LinkedIn's public job pages; automated access is against LinkedIn's Terms of Service, so keep volume low and don't use it commercially or for bulk data collection. Run it on your own responsibility.

When to use this skill

  • Search for job openings in a given location (any country/city) or remotely
  • Filter by recency (posted today / last 7 / 14 / 30 days) or workplace type (remote/hybrid/onsite)
  • Get the full description of a specific job listing

Commands

Search job listings
bun run .agents/skills/linkedin-search/cli/src/cli.ts search --location "<place>" [flags]

Key flags:

  • --location <text> / -l <text> — required. A LinkedIn place string, e.g. "Mumbai, Maharashtra, India", "Berlin, Germany", "London, United Kingdom", or "Remote".
  • --query <text> / -q <text> — keyword search (title, skill, role). Recommended.
  • --jobage <days> — posted within N days: 1, 7, 14, 30. Omit for all postings.
  • --jobage-minutes <n> — posted within N minutes (sub-day precision, e.g. 30). Conflicts with --jobage — pass only one.
  • --remote <mode> — remote, hybrid, or onsite (workplace-type filter).
  • --page <n> — page number (1-indexed, 10 results per page).
  • --limit <n> / -n <n> — cap total results emitted (client-side).
  • --format json|table|plain — default json.
Fetch full job detail
bun run .agents/skills/linkedin-search/cli/src/cli.ts detail <id|url> [--format json|plain]

id is the job ID from search results (e.g. 4426311357). You may also pass a full LinkedIn jobs/view/... URL or a urn:li:jobPosting:... URN. Returns the full description, seniority, employment type, job function, and industries.

Usage examples

# Data engineer roles in Bengaluru, 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

# Product manager roles in Berlin, remote
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "product manager" -l "Berlin, Germany" --remote remote --format table

# Any role, fully remote
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "paralegal" -l "Remote" --format table

# Engineer roles, remote, posted in the last 30 minutes
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "engineer" -l "Remote" --jobage-minutes 30 --format table

# Full details for a specific job
bun run .agents/skills/linkedin-search/cli/src/cli.ts detail 4426311357 --format plain

Output formats

FormatBest for
jsonDefault — programmatic use, passing IDs to detail
tableQuick human-readable scanning
plainReading a single job's full detail (detail command)

All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.

Notes

  • Data is from LinkedIn's public jobs-guest endpoints — no credentials required.
  • Page size is fixed at 10 results per page.
  • LinkedIn may rate-limit; the CLI retries 429/5xx with exponential backoff. Keep volume low (see ToS note above).
  • Job IDs are numeric (e.g. 4426311357) — pass them as-is to detail.

Comments

Markdown supported