Documentation Index
Fetch the complete documentation index at: https://mintlify.com/SudharakaA/ai-job-search/llms.txt
Use this file to discover all available pages before exploring further.
The AI Job Search framework ships five TypeScript CLI tools that Claude invokes when you run /scrape or ask it to search for jobs. Each tool targets a specific job portal, communicates through the portal’s public endpoints, and outputs structured JSON that Claude can reason over directly. All five follow the same two-command pattern: search to list matching jobs and detail to fetch a full posting. This page documents every flag, output format, and usage example for each tool.
Installation
Each tool lives in its own directory under .agents/skills/ and requires Bun to run. Install dependencies from the repository root before using any tool.
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search; do
cd .agents/skills/$tool/cli && bun install && cd ../../../..
done
$tools = @("jobbank-search", "jobdanmark-search", "jobindex-search", "jobnet-search", "linkedin-search")
foreach ($tool in $tools) {
Set-Location ".agents/skills/$tool/cli"
bun install
Set-Location "..\..\..\.."
}
linkedin-search has zero runtime dependencies and runs with plain bun. Running bun install in its cli/ directory only pulls TypeScript dev types and is optional for using the tool.
All five tools support the same three output formats via the --format flag:
| Format | Best for |
|---|
json | Default. Programmatic use, passing IDs to detail. |
table | Quick human-readable scanning of search results. |
plain | Reading a single job’s full description via detail. |
Errors are always written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.
linkedin-search
jobindex-search
jobnet-search
jobbank-search
jobdanmark-search
linkedin-search
Searches LinkedIn’s public jobs-guest endpoints. Works for any country, city, or remote market worldwide. No API key or authentication required. Zero runtime dependencies.LinkedIn’s Terms of Service prohibit automated access. Use this tool for personal job searching only. Keep query volume low and do not use it for bulk data collection or commercial purposes.
Installation path: .agents/skills/linkedin-search/cli/search command
bun run skills/linkedin-search/cli/src/cli.ts search --location "<place>" [flags]
| Flag | Alias | Description |
|---|
--location <text> | -l | Required. LinkedIn place string, e.g. "Berlin, Germany", "Mumbai, Maharashtra, India", or "Remote". |
--query <text> | -q | Keywords (job title, skill, role). Recommended for focused results. |
--jobage <days> | | Posted within N days: 1, 7, 14, 30. Omit for all postings. |
--remote <mode> | | Workplace type: remote, hybrid, or onsite. |
--page <n> | | Page number (1-indexed, 10 results per page). Default: 1. |
--limit <n> | -n | Cap total results returned (client-side). |
--format <fmt> | | json (default), table, or plain. |
detail command
bun run skills/linkedin-search/cli/src/cli.ts detail <id|url|URN> [--format json|plain]
id is the numeric 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, industries, and apply link.Usage examples
# Data engineer roles in Bengaluru, last 30 days
bun run 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 only
bun run skills/linkedin-search/cli/src/cli.ts search \
-q "product manager" \
-l "Berlin, Germany" \
--remote remote \
--format table
# Paralegal roles, fully remote
bun run skills/linkedin-search/cli/src/cli.ts search \
-q "paralegal" \
-l "Remote" \
--format table
# Full details for a specific job posting
bun run skills/linkedin-search/cli/src/cli.ts detail 4426311357 --format plain
Notes
- Page size is fixed at 10 results per page (LinkedIn API limitation).
- The CLI retries
429 and 5xx responses with exponential backoff.
- Job IDs are numeric strings (e.g.
4426311357). Pass them as-is to detail.
- The
--location value is passed directly to LinkedIn’s search. Use the same format LinkedIn autocomplete suggests for your market.
jobindex-search
Searches Jobindex.dk, Denmark’s largest private-sector job portal. Covers thousands of job postings across all sectors, updated in real time. No authentication required.Installation path: .agents/skills/jobindex-search/cli/search command
bun run skills/jobindex-search/cli/src/cli.ts search [flags]
| Flag | Alias | Description |
|---|
--query <text> | -q | Keywords (job title, skill, company, city). Required for meaningful results. |
--jobage <days> | | Filter by posting age: 1 (today), 7, 14, 30, or 9999 (all, default). |
--sort <order> | | score (relevance, default) or date (newest first). |
--page <n> | | Page number (1-indexed, 20 results per page). Default: 1. |
--limit <n> | | Cap total results returned (client-side). |
--format <fmt> | | json (default), table, or plain. |
The Jobindex API does not support area filtering via query parameters. To search jobs in a specific city, include the city name directly in --query. For example: --query "data engineer københavn" or --query "python aarhus".
detail command
bun run skills/jobindex-search/cli/src/cli.ts detail <id> [--format json|plain]
id is the job ID from search results (e.g. h1647303). You may also pass the full Jobindex URL. Returns the full description, deadline, employment type, hours, and apply link.Usage examples
# Python jobs posted in the last 7 days, sorted by date
bun run skills/jobindex-search/cli/src/cli.ts search \
--query python \
--jobage 7 \
--sort date \
--format table
# Data engineer jobs in Copenhagen
bun run skills/jobindex-search/cli/src/cli.ts search \
--query "data engineer københavn" \
--sort score \
--format table
# Marketing jobs in Aarhus, last 30 days
bun run skills/jobindex-search/cli/src/cli.ts search \
--query "marketing aarhus" \
--jobage 30 \
--sort date \
--format table
# Full-stack developer jobs, page 2
bun run skills/jobindex-search/cli/src/cli.ts search \
--query "full stack developer" \
--page 2 \
--format json
# All jobs posted today
bun run skills/jobindex-search/cli/src/cli.ts search \
--jobage 1 \
--sort date \
--limit 20 \
--format table
# Full details for a specific job
bun run skills/jobindex-search/cli/src/cli.ts detail h1647303 --format plain
Notes
- Page size is fixed at 20 results per page (Jobindex API limitation).
--jobage 9999 is the default and includes all postings regardless of age.
- Job IDs are string-prefixed (e.g.
h1647303). Pass them as-is to detail.
- Total result count (
meta.total) uses Danish dot-thousands notation internally; the CLI normalizes this to a plain integer.
jobnet-search
Accesses Jobnet.dk, Denmark’s official government job portal operated by STAR (Styrelsen for Arbejdsmarked og Rekruttering). Covers public sector positions as well as many private sector listings. Approximately 21,000 active jobs at any time. No authentication required.Installation path: .agents/skills/jobnet-search/cli/search command
bun run skills/jobnet-search/cli/src/cli.ts search [flags]
| Flag | Description |
|---|
--search-string <text> | Keyword search, e.g. sygeplejerske, ingeniør, pædagog. |
--region <region> | HovedstadenOgBornholm, Midtjylland, Syddanmark, OevrigeSjaelland, Nordjylland. |
--postal-code <code> | Postal code for radius-based search, e.g. 2100. |
--radius <km> | Radius in km from postal code. Default: 50. |
--work-hours <type> | FullTime or PartTime. |
--duration <type> | Permanent or Temporary. |
--job-type <type> | Ordinaert, Efterloenner, Foertidspension. |
--occupation-area <id> | Occupation area identifier, e.g. 10000. |
--occupation-group <id> | Occupation group identifier, e.g. 10060. |
--order <type> | PublicationDate (default), BestMatch, ApplicationDate. |
--page / --per-page / --limit | Pagination controls. |
--format <fmt> | json (default), table, or plain. |
Do not combine --region and --postal-code in the same query. Use one geographic filter at a time.
detail command
bun run skills/jobnet-search/cli/src/cli.ts detail <jobAdId> [--format json|plain]
jobAdId is the UUID from search results (the jobAdId field). Returns the complete description, contact persons, application deadline, employer details, and direct application URL.occupations command
bun run skills/jobnet-search/cli/src/cli.ts occupations --search-string <text> [--per-page <n>]
Discovers ESCO occupation identifiers. Use the returned IDs with --occupation-area or --occupation-group in search for precise filtering.suggestions command
bun run skills/jobnet-search/cli/src/cli.ts suggestions --query <text> [--limit <n>]
Returns Danish job title autocomplete strings. Useful for exploring valid Danish job titles before constructing a search query.Usage examples
# Jobs in the Copenhagen area
bun run skills/jobnet-search/cli/src/cli.ts search \
--region HovedstadenOgBornholm \
--per-page 10 \
--format table
# Full-time permanent nurse jobs, sorted by relevance
bun run skills/jobnet-search/cli/src/cli.ts search \
--search-string "sygeplejerske" \
--work-hours FullTime \
--duration Permanent \
--order BestMatch \
--per-page 10 \
--format table
# Developer jobs near Aarhus within 30 km
bun run skills/jobnet-search/cli/src/cli.ts search \
--search-string "udvikler" \
--postal-code 8000 \
--radius 30 \
--work-hours FullTime \
--format table
# Jobs sorted by application deadline (most urgent first)
bun run skills/jobnet-search/cli/src/cli.ts search \
--search-string "pædagog" \
--region OevrigeSjaelland \
--order ApplicationDate \
--per-page 10
# Discover occupation terms before searching
bun run skills/jobnet-search/cli/src/cli.ts suggestions --query "ingeniør" --limit 5
bun run skills/jobnet-search/cli/src/cli.ts occupations --search-string "lærer" --per-page 5
# Full details for a specific job ad
bun run skills/jobnet-search/cli/src/cli.ts detail 9ef43bce-d82b-4ea1-a098-7ff6520f99be --format plain
Notes
- The API requires the
x-csrf: 1 header; the CLI adds this automatically.
search results omit the HTML job description. Use detail to retrieve it.
detail --format plain strips HTML tags for readable text output.
- Job ad detail pages on jobnet.dk:
https://jobnet.dk/job/{jobAdId}
suggestions is tuned for Danish job titles; English terms may return empty results.
jobbank-search
Searches Akademikernes Jobbank (jobbank.dk), Denmark’s primary job portal for highly educated candidates. Covers graduate trainee positions, Ph.d. and postdoc roles, and professional positions across all industries. Uses the RSS feed (up to 100 results) and JSON-LD parsing for detail views. No authentication required.Installation path: .agents/skills/jobbank-search/cli/search command
bun run skills/jobbank-search/cli/src/cli.ts search [flags]
| Flag | Description |
|---|
--key <text> | Keyword search (title, company, keyword). |
--exclude <text> | Exclude keywords from results. |
--type <code> | Job type (repeatable): 3=Fuldtidsjob, 6=Graduate/trainee, 13=Deltidsjob, 8=Vikariat, 12=Ph.d. & Postdoc, 11=Freelance, 9=Praktikplads, 4=Studiejob. |
--location <code> | Region (repeatable): 2=Storkøbenhavn, 8=Østjylland (Aarhus), 7=Midtjylland, 6=Nordjylland, 13=Fyn. |
--work-area <code> | Work function (repeatable): 31=IT-Software, 43=Data & Analyse, 26=Ledelse, 29=Marketing. |
--industry <code> | Industry sector (repeatable): 10331=IT & Tele, 10442=Forskning & Uddannelse, 10358=Finans. |
--education <code> | Education field (repeatable): 24=IT, 21=Økonomi & Revision, 34=Samfundsvidenskab. |
--remote <value> | helt (fully remote) or delvist (partially remote). |
--suitable-for <code> | 2=Nyuddannede, 4=International baggrund, 5=Erfarne. |
--company <id> | Filter by company ID. |
--since <YYYY-MM-DD> | Jobs posted on or after this date. |
--limit <n> | Cap results returned by CLI. |
--format <fmt> | json (default), table, or plain. |
The RSS feed returns a maximum of 100 items per request with no pagination. meta.total reflects the true count when it exceeds 100; results is capped at 100. Most filter flags can be repeated to match any of the specified values.
detail command
bun run skills/jobbank-search/cli/src/cli.ts detail <id> [--format json|plain]
id is the numeric job ID from search results. Fetches the job page and parses the embedded Schema.org JobPosting JSON-LD for structured data.Usage examples
# Data scientist jobs in Copenhagen
bun run skills/jobbank-search/cli/src/cli.ts search \
--key "data scientist" \
--location 2 \
--format table
# Graduate trainee positions for new graduates
bun run skills/jobbank-search/cli/src/cli.ts search \
--type 6 \
--suitable-for 2 \
--format table
# Remote IT software jobs
bun run skills/jobbank-search/cli/src/cli.ts search \
--work-area 31 \
--remote helt \
--format table
# Ph.d. and postdoc positions in research and education
bun run skills/jobbank-search/cli/src/cli.ts search \
--type 12 \
--industry 10442 \
--format table
# IT jobs in Aarhus or Copenhagen (multi-value location)
bun run skills/jobbank-search/cli/src/cli.ts search \
--key developer \
--location 2 --location 8 \
--work-area 31 \
--format table
# Recent full-time jobs posted since a specific date
bun run skills/jobbank-search/cli/src/cli.ts search \
--type 3 \
--since 2026-03-01 \
--format table
# Full details for a specific job
bun run skills/jobbank-search/cli/src/cli.ts detail 1234567 --format plain
Notes
- All filter codes (location, work-area, industry, education) are documented in
skills/jobbank-search/cli/README.md.
location values are numeric region codes, not city names.
- The
detail command fetches the full job page and extracts the JSON-LD structured data block.
jobdanmark-search
Accesses Jobdanmark.dk’s public API. Covers approximately 15,000 active job listings across 10 categories and all Danish municipalities. No authentication required.Installation path: .agents/skills/jobdanmark-search/cli/search command
bun run skills/jobdanmark-search/cli/src/cli.ts search [flags]
| Flag | Description |
|---|
--text <keyword> | Free-text search, e.g. elektriker, sygeplejerske, softwareudvikler. |
--category <id> | Category ID (see categories table below). |
--jobtitle-id <id> | Job title ID from autocomplete results. |
--municipality <name> | Municipality name, e.g. Odense, København, Aarhus. |
--zip <code> | Zip code, e.g. 5000, 8000, 2100. |
--region <name> | Region name, e.g. Midtjylland, Sjælland. |
--job-type <types> | Comma-separated: fuldtid, deltid, fleksjob, elev, studiejob, praktik. |
--page <n> | Page number (30 items per page, server-enforced). |
--limit <n> | Cap total results returned by CLI. |
--format <fmt> | json (default), table, or plain. |
Job categories
| ID | English | Danish |
|---|
| 227972 | Education, Research | Pædagogik, Uddannelse og Forskning |
| 227973 | Crafts, Industry, Transport, Agriculture | Håndværk, Industri, Transport og Landbrug |
| 227974 | Sales, Communication, Marketing, Design | Salg, Kommunikation, Marketing, og Design |
| 227975 | Care, Social, Health | Pleje, Social og Sundhed |
| 227976 | Hotel, Service, Restaurant, Security | Hotel, Service, Restauration og Sikkerhed |
| 227977 | Office, Finance, Economy | Kontor, Finans og Økonomi |
| 227978 | IT, Engineering, Energy | IT, Ingeniør og Energi |
| 227979 | Management, HR, Project Management | Ledelse, HR og projektstyring |
| 543415 | Church, Culture, Entertainment | Kirke, Kultur og Underholdning |
| 227980 | Other jobs | Øvrige job |
detail command
bun run skills/jobdanmark-search/cli/src/cli.ts detail <slug> [--format json|plain]
slug is the URL path segment returned as slug in search results (e.g. it-chef-soeges-til-rah). Returns full structured job data from the page’s JSON-LD, including title, organization, location, employment type, deadline, and full HTML description.categories command
bun run skills/jobdanmark-search/cli/src/cli.ts categories [--format json|table|plain]
Returns all 10 job categories with current live job counts. Useful for understanding market activity before searching.autocomplete command
bun run skills/jobdanmark-search/cli/src/cli.ts autocomplete --query "<text>" [--limit <n>]
Resolves search terms into precise job title IDs (--jobtitle-id) or category IDs (--category). The value field in results is the ID to pass to search.locations command
bun run skills/jobdanmark-search/cli/src/cli.ts locations --query "<text>" [--limit <n>]
Returns matching municipalities, zip codes, and regions. Use the value field from results as --municipality or --zip in search.Usage examples
# IT jobs in Copenhagen, full-time
bun run skills/jobdanmark-search/cli/src/cli.ts search \
--category 227978 \
--municipality "København" \
--job-type fuldtid \
--format table
# Nursing jobs anywhere in Denmark
bun run skills/jobdanmark-search/cli/src/cli.ts search \
--text "sygeplejerske" \
--category 227975 \
--format table
# Student jobs in Aarhus
bun run skills/jobdanmark-search/cli/src/cli.ts search \
--municipality "Aarhus" \
--job-type studiejob \
--format table
# Electrician jobs, full-time or part-time
bun run skills/jobdanmark-search/cli/src/cli.ts search \
--text "elektriker" \
--category 227973 \
--job-type "fuldtid,deltid" \
--format table
# All current job counts by category
bun run skills/jobdanmark-search/cli/src/cli.ts categories --format table
# Resolve a location before searching
bun run skills/jobdanmark-search/cli/src/cli.ts locations --query "Aarhus" --format plain
# Resolve a job title before searching
bun run skills/jobdanmark-search/cli/src/cli.ts autocomplete --query "sygeplejerske" --format plain
# Full details for a specific job posting
bun run skills/jobdanmark-search/cli/src/cli.ts detail it-chef-soeges-til-rah --format plain
Notes
- Pagination is 1-indexed. Page size is fixed at 30 by the API.
- The
detail command parses the embedded JSON-LD from the HTML job page; there is no separate detail API.
applicationDeadline in search results can be null when no deadline is set.
slug is extracted from the API’s relative url field (the path after /job/).
The five tools above cover Denmark (four portals) and LinkedIn (global). If you are in a different market, run /add-portal inside Claude Code:
Point it at your local job board’s URL. The command investigates the portal (search URL pattern, result structure, robots.txt), scaffolds a CLI skill with the same structure and output contract as the tools above, and test-runs a live query before registering anything. Auth-walled portals are declined automatically. Portals with restrictive terms get a prominent personal-use-only warning in the generated skill.
Use linkedin-search as your starting point in any market while waiting for a local portal skill. Pass -l "Your City, Your Country" to scope results to your region.