> ## Documentation Index
> Fetch the complete documentation index at: https://careerk.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Get All Job Seeker Profiles

> Retrieve a paginated list of job seeker profiles with optional filters

## Endpoint

```
GET /api/v1/job-seekers
```

**Base URL**: `http://localhost:3000/api/v1`

<Note>This endpoint is **public** and does not require authentication.</Note>

## Query Parameters

<ParamField query="availabilityStatus" type="enum" optional>
  Filter by availability status. Can be repeated for multiple values. - `OPEN_TO_WORK` - Actively
  looking - `NOT_LOOKING` - Not looking - `PASSIVELY_LOOKING` - Open to opportunities
</ParamField>

<ParamField query="location" type="string">
  Filter by location (partial string match, case-insensitive).
</ParamField>

<ParamField query="workPreference" type="enum" optional>
  Filter by work preference. Can be repeated for multiple values. - `REMOTE` - Remote work -
  `ONSITE` - On-site work - `HYBRID` - Hybrid work - `ANY` - No preference
</ParamField>

<ParamField query="minYearsOfExperience" type="number">
  Minimum years of experience (inclusive).
</ParamField>

<ParamField query="maxYearsOfExperience" type="number">
  Maximum years of experience (inclusive).
</ParamField>

<ParamField query="preferredJobTypes" type="enum[]">
  Filter by preferred job types. Can be repeated for multiple types. - `FULL_TIME` - `PART_TIME` -
  `CONTRACT` - `INTERNSHIP` - `FREELANCE`
</ParamField>

<ParamField query="search" type="string" optional>
  Search across name, job title, and skills (case-insensitive, substring match).
</ParamField>

<ParamField query="maxNoticePeriod" type="number">
  Maximum notice period in days.
</ParamField>

<ParamField query="page" type="number">
  Page number (default: 1).
</ParamField>

<ParamField query="limit" type="number">
  Items per page (default: 20).
</ParamField>

## Request Examples

```bash theme={null}
# Basic filtering
GET /api/v1/job-seekers?location=London&workPreference=REMOTE&availabilityStatus=OPEN_TO_WORK&minYearsOfExperience=2&page=1&limit=10

# Search by name, title, or skills
GET /api/v1/job-seekers?search=software+engineer

# Multi-value filters
GET /api/v1/job-seekers?availabilityStatus=OPEN_TO_WORK&availabilityStatus=IMMEDIATE&workPreference=REMOTE&workPreference=HYBRID
```

## Response

### Success Response (200 OK)

```json theme={null}
{
  "success": true,
  "data": {
    "jobSeekers": [
      {
        "firstName": "Jeffrey",
        "lastName": "Martin",
        "profileImageUrl": null,
        "profile": {
          "jobSeekerId": "7933b735-4212-4dbe-8843-ce4dd5961076",
          "title": "Rust Developer",
          "location": "London, UK",
          "availabilityStatus": "NOT_LOOKING",
          "workPreference": "REMOTE",
          "preferredJobTypes": ["PART_TIME", "INTERNSHIP", "CONTRACT"],
          "yearsOfExperience": 20,
          "linkedinUrl": null,
          "portfolioUrl": null,
          "githubUrl": null,
          "summary": "Experienced Rust developer specializing in backend systems.",
          "expectedSalary": 5000,
          "cvEmail": "jeffrey@example.com",
          "cvScore": 87
        },
        "skills": [
          {
            "name": "Rust",
            "verified": true
          },
          {
            "name": "Docker",
            "verified": false
          }
        ]
      },
      {
        "firstName": "Sandra",
        "lastName": "Morgan",
        "profileImageUrl": null,
        "profile": {
          "jobSeekerId": "1245d82c-a49a-4ec5-b4dd-ff5e770c3b2b",
          "title": "DevOps Engineer",
          "location": "Berlin, Germany",
          "availabilityStatus": "NOT_LOOKING",
          "workPreference": "REMOTE",
          "preferredJobTypes": ["FREELANCE", "PART_TIME", "INTERNSHIP"],
          "yearsOfExperience": 20,
          "linkedinUrl": null,
          "portfolioUrl": null,
          "githubUrl": null,
          "summary": "Experienced DevOps Engineer with expertise in cloud infrastructure.",
          "expectedSalary": 6000,
          "cvEmail": "sandra@example.com",
          "cvScore": 92
        },
        "skills": [
          {
            "name": "AWS",
            "verified": true
          },
          {
            "name": "Kubernetes",
            "verified": true
          }
        ]
      }
    ],
    "total": 1032,
    "page": 1,
    "limit": 20,
    "totalPages": 52
  },
  "message": "Job seeker profiles retrieved successfully",
  "meta": {
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/job-seekers",
    "method": "GET"
  }
}
```

### Response Fields

<ResponseField name="jobSeekers" type="array">
  Array of job seeker profile summaries.

  <Expandable title="Job Seeker Object">
    <ResponseField name="firstName" type="string">
      Job seeker's first name.
    </ResponseField>

    <ResponseField name="lastName" type="string">
      Job seeker's last name.
    </ResponseField>

    <ResponseField name="profileImageUrl" type="string | null">
      URL to the job seeker's profile image.
    </ResponseField>

    <ResponseField name="profile" type="object">
      Public profile information.

      <Expandable title="Profile Properties">
        <ResponseField name="jobSeekerId" type="string">
          Unique profile identifier (UUID).
        </ResponseField>

        <ResponseField name="title" type="string">
          Current job title.
        </ResponseField>

        <ResponseField name="location" type="string">
          Location.
        </ResponseField>

        <ResponseField name="availabilityStatus" type="enum">
          Current availability status.
        </ResponseField>

        <ResponseField name="workPreference" type="enum">
          Work preference.
        </ResponseField>

        <ResponseField name="preferredJobTypes" type="enum[]">
          Preferred job types.
        </ResponseField>

        <ResponseField name="yearsOfExperience" type="number">
          Years of experience.
        </ResponseField>

        <ResponseField name="linkedinUrl" type="string | null">
          LinkedIn profile URL.
        </ResponseField>

        <ResponseField name="portfolioUrl" type="string | null">
          Portfolio website URL.
        </ResponseField>

        <ResponseField name="githubUrl" type="string | null">
          GitHub profile URL.
        </ResponseField>

        <ResponseField name="summary" type="string | null">
          Short professional summary of the job seeker.
        </ResponseField>

        <ResponseField name="expectedSalary" type="number | null">
          Expected monthly salary.
        </ResponseField>

        <ResponseField name="cvEmail" type="string">
          Email used in CV submission.
        </ResponseField>

        <ResponseField name="cvScore" type="number">
          AI-generated or system CV score (0–100).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="skills" type="array">
      List of skills associated with the job seeker.

      <Expandable title="Skill Object">
        <ResponseField name="name" type="string">
          Skill name (e.g., AWS, Docker, Rust).
        </ResponseField>

        <ResponseField name="verified" type="boolean">
          Indicates whether the skill is verified.
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="total" type="number">
  Total number of job seekers matching the filters.
</ResponseField>

<ResponseField name="page" type="number">
  Current page number.
</ResponseField>

<ResponseField name="limit" type="number">
  Items per page.
</ResponseField>

<ResponseField name="totalPages" type="number">
  Total number of pages.
</ResponseField>

## Filtering Examples

### Filter by Location

```bash theme={null}
GET /api/v1/job-seekers?location=London
```

### Search

```bash theme={null}
GET /api/v1/job-seekers?search=software
```

Searches across `firstName`, `lastName`, `profile.title`, and `skill.name`.

### Filter by Work Preference (Multi)

```bash theme={null}
GET /api/v1/job-seekers?workPreference=REMOTE&workPreference=HYBRID
```

### Filter by Availability Status (Multi)

```bash theme={null}
GET /api/v1/job-seekers?availabilityStatus=OPEN_TO_WORK&availabilityStatus=IMMEDIATE
```

### Filter by Experience Range

```bash theme={null}
GET /api/v1/job-seekers?minYearsOfExperience=2&maxYearsOfExperience=5
```

### Filter by Job Types

```bash theme={null}
GET /api/v1/job-seekers?preferredJobTypes=FULL_TIME&preferredJobTypes=CONTRACT
```

### Combine Multiple Filters

```bash theme={null}
GET /api/v1/job-seekers?location=Berlin&workPreference=REMOTE&workPreference=HYBRID&availabilityStatus=OPEN_TO_WORK&minYearsOfExperience=3
```

## Error Responses

### 400 Bad Request - Validation Error

```json theme={null}
{
  "success": false,
  "error": {
    "message": ["Invalid query parameters"],
    "statusCode": 400,
    "timestamp": "2026-04-23T20:00:00.000Z",
    "path": "/job-seekers",
    "method": "GET",
    "details": "Bad Request"
  }
}
```

## Notes

<Info>
  **Public Profiles Only**: This endpoint returns only public profile information. Sensitive data
  like email, phone are only available in the detailed profile endpoint.{' '}
</Info>

<Tip>
  **Optimize Queries**: Use specific filters to reduce the number of results and improve response
  time.
</Tip>
