search_jobs
Search LinkedIn jobs using keywords, location, company, salary, experience level, and other filters to find relevant opportunities tailored to your criteria.
Instructions
Search LinkedIn jobs with advanced filters and criteria
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| company | No | Company name | |
| datePosted | No | Date posted filter | |
| experienceLevel | No | Experience level | |
| functionId | No | Function ID | |
| industryId | No | Industry ID | |
| jobType | No | Job type (full-time, part-time, etc.) | |
| keywords | No | Job search keywords | |
| location | No | Job location | |
| salary | No | Salary range |
Implementation Reference
- src/server.ts:105-122 (registration)Registers the 'search-jobs' MCP tool with input schema from linkedinApiSchemas and a handler that logs the request, calls clientService.searchJobs, and returns formatted response.this.server.tool( 'search-jobs', 'Search for LinkedIn job postings based on various criteria', linkedinApiSchemas.searchJobs, async (params) => { this.logger.info('Executing LinkedIn Job Search', { keywords: params.keywords, location: params.location }) try { const jobs = await this.clientService.searchJobs(params) return this.createResourceResponse(jobs) } catch (error) { this.logger.error('LinkedIn Job Search Failed', error) throw error } } )
- src/services/client.service.ts:150-168 (handler)Core handler function that builds query parameters from input and makes authenticated GET request to LinkedIn /jobs/search endpoint using shared makeRequest method.public async searchJobs(params: SearchJobsParams): Promise<SearchJobsResult> { const queryParams = new URLSearchParams() const paramMapping: Record<string, string | undefined> = { keywords: params.keywords, location: params.location } Object.entries(paramMapping) .filter(([_, value]) => value !== undefined) .forEach(([key, value]) => queryParams.append(key, value as string)) this.appendArrayParams(queryParams, { 'company-name': params.companies, 'job-type': params.jobType }) return this.makeRequest<SearchJobsResult>('get', `/jobs/search?${queryParams.toString()}`) }
- src/schemas/linkedin.schema.ts:36-41 (schema)Zod schema defining the input parameters for the search-jobs tool, used in MCP tool registration.searchJobs: { companies: z.array(z.string()).optional().describe('Filter by companies'), jobType: z.array(z.string()).optional().describe('Filter by job type (e.g., Full-Time, Contract)'), keywords: z.string().optional().describe('Keywords to search for in job postings'), location: z.string().optional().describe('Filter by location') },
- src/types/linkedin.d.ts:17-22 (schema)TypeScript interface defining the SearchJobsParams for type safety in the handler.export interface SearchJobsParams { keywords?: string location?: string companies?: string[] jobType?: string[] }
- src/types/linkedin.d.ts:97-112 (schema)TypeScript interface defining the expected SearchJobsResult from LinkedIn API.export interface SearchJobsResult { jobs: { id: string title: string companyName: string location: string description?: string listedAt: number expireAt?: number }[] paging: { count: number start: number total: number } }