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

# Workplace

> Compare remote, hybrid, and on-site demand across active postings.



## OpenAPI

````yaml jobs-api/openapi.json GET /v1/workplace
openapi: 3.0.3
info:
  title: Clair Job Search API
  version: 1.0.0
  description: >-
    Search normalized active jobs and analyze hiring demand by role, skill,
    company, country, workplace type, and observed salary. Includes source
    provenance, freshness, and canonical taxonomies. Coverage:
    https://clair.im/resources/datasets/active-jobs
servers:
  - url: https://clair-job-search-api.p.rapidapi.com
    description: >-
      RapidAPI gateway. Use the exact host shown on the Clair Job Search API
      listing.
security:
  - rapidApiKey: []
paths:
  /v1/workplace:
    get:
      summary: Compare workplace demand
      description: >-
        Compares remote, hybrid, and on-site demand across active postings.
        Optionally filter by role, skill, country, or seniority.
      operationId: getWorkplace
      parameters:
        - $ref: '#/components/parameters/Country'
        - $ref: '#/components/parameters/Seniority'
        - $ref: '#/components/parameters/Role'
        - $ref: '#/components/parameters/Skill'
      responses:
        '200':
          description: Workplace types with posting share and company count.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkplaceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    Country:
      name: country
      in: query
      description: Optional ISO 3166-1 alpha-2 country filter.
      schema:
        type: string
        pattern: ^[A-Za-z]{2}$
      example: US
    Seniority:
      name: seniority
      in: query
      description: Optional normalized seniority filter.
      schema:
        type: string
        enum:
          - intern
          - entry
          - mid
          - senior
          - staff
          - principal
          - executive
    Role:
      name: role
      in: query
      description: Canonical role ID or name from `/v1/taxonomy/roles`.
      schema:
        type: string
        minLength: 1
        maxLength: 160
      example: data-engineer
    Skill:
      name: skill
      in: query
      description: Canonical skill ID or name from `/v1/taxonomy/skills`.
      schema:
        type: string
        minLength: 1
        maxLength: 160
      example: Python
  schemas:
    WorkplaceResponse:
      allOf:
        - $ref: '#/components/schemas/IntelligenceEnvelope'
        - type: object
          required:
            - postings_analyzed
            - classified_postings
            - count
            - items
          properties:
            postings_analyzed:
              type: integer
            classified_postings:
              type: integer
            count:
              type: integer
            items:
              type: array
              items:
                type: object
                required:
                  - workplace_type
                  - postings
                  - posting_share
                  - company_count
                  - new_postings_7d
                properties:
                  workplace_type:
                    type: string
                    enum:
                      - remote
                      - hybrid
                      - onsite
                  postings:
                    type: integer
                  posting_share:
                    type: number
                  company_count:
                    type: integer
                  new_postings_7d:
                    type: integer
    IntelligenceEnvelope:
      type: object
      required:
        - updated_at
        - filters
      properties:
        updated_at:
          type: string
          format: date-time
          nullable: true
          description: Latest verification time represented by the aggregation.
        filters:
          type: object
          additionalProperties:
            type: string
          description: Normalized filters applied to the aggregation.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Stable machine-readable code. Branch on this value.
          example: bad_cursor
        detail:
          description: >-
            Human-readable detail. Validation errors return an array; typed
            failures return a string. Do not parse this field.
          oneOf:
            - type: string
            - type: array
              items:
                type: string
  responses:
    BadRequest:
      description: Invalid filter or unknown canonical role or skill.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid RapidAPI authorization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: RapidAPI plan rate limit exceeded.
  securitySchemes:
    rapidApiKey:
      type: apiKey
      in: header
      name: X-RapidAPI-Key
      description: >-
        Your RapidAPI subscription key. Also send the `X-RapidAPI-Host` shown on
        the listing.

````