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

# Search Jobs

> Search the Crustdata job dataset using filter conditions. Each result includes
the job's details (title, category, URL, openings), the hiring company's core
firmographics (basic info, headcount, followers, revenue, funding, competitors),
the job location, full job description text, and metadata timestamps.

<Note>
    Default `rate-limit` is 30 requests per minute. Send an email to [gtm@crustdata.co](mailto:gtm@crustdata.co) to discuss higher limits if needed for your use case.
</Note>

Supports complex AND/OR filter logic, cursor-based pagination, sorting, field
selection, and aggregations (count and group_by). Only indexed fields are
filterable and sortable — see the `field` description on `SearchCondition` for
the full list.




## OpenAPI

````yaml /openapi-specs/2025-11-01/job.yaml post /job/search
openapi: 3.0.3
info:
  title: Job API
  version: '2025-11-01'
  description: >
    The Crustdata Job API provides access to job listings from the web, enriched
    with the hiring

    company's firmographics (headcount, funding, revenue, industries) and the
    job's location.


    Use `/job/search` to query the indexed job dataset with filters,
    cursor-based pagination,

    sorting, field selection, and aggregations. Use `/job/search/autocomplete`
    to get

    type-ahead suggestions for a filter field's values before searching. Use

    `/job/professional_network/search/live` to fetch job listings in real time
    for a given

    company when you need the freshest view of what a single company is hiring
    for.


    All requests require a valid API key passed via the `Authorization` header
    as a Bearer token

    and an `x-api-version` header set to the API version (e.g., "2025-11-01").
servers:
  - url: https://api.crustdata.com
    description: Production API server
security:
  - bearerAuth: []
tags:
  - name: Job APIs
    description: Core job data endpoints for indexed search and real-time fetch
  - name: Search APIs
    description: Endpoints for searching the indexed job dataset
  - name: Live APIs
    description: Endpoints that fetch data in real time from the web
paths:
  /job/search:
    post:
      tags:
        - Job APIs
        - Search APIs
      summary: Search the indexed job dataset
      description: >
        Search the Crustdata job dataset using filter conditions. Each result
        includes

        the job's details (title, category, URL, openings), the hiring company's
        core

        firmographics (basic info, headcount, followers, revenue, funding,
        competitors),

        the job location, full job description text, and metadata timestamps.


        <Note>
            Default `rate-limit` is 30 requests per minute. Send an email to [gtm@crustdata.co](mailto:gtm@crustdata.co) to discuss higher limits if needed for your use case.
        </Note>


        Supports complex AND/OR filter logic, cursor-based pagination, sorting,
        field

        selection, and aggregations (count and group_by). Only indexed fields
        are

        filterable and sortable — see the `field` description on
        `SearchCondition` for

        the full list.
      operationId: searchJobDataset
      parameters:
        - $ref: '#/components/parameters/ApiVersion'
      requestBody:
        description: Search filters, pagination, sorting, field selection, and aggregations
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobSearchRequest'
            examples:
              engineering_jobs_at_company:
                summary: Engineering jobs at a specific company posted this year
                value:
                  filters:
                    op: and
                    conditions:
                      - field: company.basic_info.company_id
                        type: '='
                        value: 631394
                      - field: job_details.category
                        type: '='
                        value: Engineering
                      - field: metadata.date_added
                        type: '=>'
                        value: '2025-01-01'
                  fields:
                    - job_details.title
                    - job_details.url
                    - metadata.date_added
                    - location.country
                  sorts:
                    - field: metadata.date_added
                      order: desc
                  limit: 2
              sdr_roles_multi_company:
                summary: SDR/BDR roles across multiple companies
                value:
                  filters:
                    op: and
                    conditions:
                      - field: company.basic_info.company_id
                        type: in
                        value:
                          - 631394
                          - 631811
                          - 673947
                      - field: metadata.date_added
                        type: '=>'
                        value: '2025-01-01'
                      - op: or
                        conditions:
                          - field: job_details.title
                            type: (.)
                            value: Sales Development Representative
                          - field: job_details.title
                            type: (.)
                            value: SDR
                          - field: job_details.title
                            type: (.)
                            value: Business Development Representative
                  fields:
                    - job_details.title
                    - company.basic_info.name
                    - location.raw
                    - metadata.date_added
                  sorts:
                    - field: metadata.date_added
                      order: desc
                  limit: 2
              count_jobs_in_category:
                summary: Count all Engineering jobs (no rows, only aggregation)
                value:
                  filters:
                    field: job_details.category
                    type: '='
                    value: Engineering
                  limit: 0
                  aggregations:
                    - type: count
              top_companies_hiring_engineers:
                summary: Top companies hiring Software Engineers this year
                value:
                  filters:
                    op: and
                    conditions:
                      - field: job_details.title
                        type: '='
                        value: Software Engineer
                      - field: metadata.date_added
                        type: '=>'
                        value: '2025-01-01'
                  limit: 0
                  aggregations:
                    - type: group_by
                      field: company.basic_info.company_id
                      agg: count
                      size: 5
              paginate_next_page:
                summary: Fetch next page using a cursor from a previous response
                value:
                  filters:
                    field: company.basic_info.company_id
                    type: '='
                    value: 631394
                  fields:
                    - job_details.title
                  limit: 1
                  cursor: >-
                    H4sIANBG1mkC_xXMOQ4CMQxA0auMUk9hx3YScxWERs6CpkBEzFIgxN0J1W-e_se9zra9l9X21V0mx0kjMgvdq4dYPZGgclOTlLEZl2bJG_lcdVSqFa-okDlwo1qbmye39-0YryvGKBIwsQLAPDGCkAS6DXL0wx5L6efzL2MC_P4A250zQYoAAAA=
      responses:
        '200':
          description: >-
            Jobs matching the search criteria with pagination cursor and total
            count
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobSearchResponse'
              examples:
                engineering_jobs_response:
                  summary: Engineering jobs at a specific company
                  value:
                    job_listings:
                      - job_details:
                          title: Solutions Architect, AI (Pre-sales)
                          url: https://www.linkedin.com/jobs/view/4427154312
                        location:
                          country: United States of America (the)
                        metadata:
                          date_added: '2026-06-11T02:23:55'
                      - job_details:
                          title: Solutions Architect, Platforms Velocity
                          url: https://www.linkedin.com/jobs/view/4427016746
                        location:
                          country: United States of America (the)
                        metadata:
                          date_added: '2026-06-10T14:23:59'
                    next_cursor: >-
                      H4sIALeAKmoC_xXMwQ6DIAwA0F8hnD1QSwvsV5bFVCjxsIxM8WAW_113f3k_-911PaZFtsU-jGUF4kS5SERJvjCpJiZklRJ4DJhBEaiq1LmQOh9nqhigZoiYE9jB2K2t_b6eECKAA4_JOTcYT0Qcwb9u0luX95Tb_vnLkTGcFxasau-KAAAA
                    total_count: 2637
                count_response:
                  summary: Count aggregation returns no rows, just a total
                  value:
                    job_listings: []
                    next_cursor: null
                    total_count: 4448237
                    aggregations:
                      - type: count
                        field: null
                        value: 4448237
                group_by_response:
                  summary: Top companies hiring Software Engineers
                  value:
                    job_listings: []
                    next_cursor: null
                    total_count: 31809
                    aggregations:
                      - type: group_by
                        field: company.basic_info.company_id
                        buckets:
                          - key: 821755
                            count: 1136
                            metadata:
                              company_name: Jobs via Dice
                              company_website_domain: dice.com
                              linkedin_id: '104085107'
                          - key: 3674630
                            count: 878
                            metadata:
                              company_name: Bending Spoons
                              company_website_domain: bndspn.com
                              linkedin_id: '3175130'
                          - key: 691389
                            count: 638
                            metadata:
                              company_name: Haystack
                              company_website_domain: haystackapp.io
                              linkedin_id: '28483663'
        '400':
          description: >-
            Invalid search request - the request body failed validation (bad
            limit, missing or malformed fields, or an unrecognized parameter).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                limit_out_of_range:
                  summary: limit exceeds maximum (1000)
                  value:
                    error:
                      type: invalid_request
                      message: '''limit'' must be at most 1000. Got 5000.'
                      metadata:
                        - field: limit
                          type: less_than_equal
                          message: '''limit'' must be at most 1000. Got 5000.'
                missing_sort_field:
                  summary: sorts entry missing the required `field` key
                  value:
                    error:
                      type: invalid_request
                      message: 'Missing required field: ''sorts.0.field''.'
                      metadata:
                        - field: sorts.0.field
                          type: missing
                          message: 'Missing required field: ''sorts.0.field''.'
                unknown_aggregation_parameter:
                  summary: Aggregation uses `column` instead of `field`
                  value:
                    error:
                      type: invalid_request
                      message: '''aggregations.0.column'' is not a valid parameter.'
                      metadata:
                        - field: aggregations.0.column
                          type: extra_forbidden
                          message: '''aggregations.0.column'' is not a valid parameter.'
        '401':
          description: Unauthorized - invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  type: unauthorized
                  message: Invalid API key in request.
                  metadata: []
        '500':
          description: >-
            Internal server error - returned when the query cannot be executed,
            including when a filter or aggregation references an unsupported
            field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                unsupported_filter_field:
                  summary: Filter references a non-indexed field
                  value:
                    error:
                      type: internal_error
                      message: 'Unsupported columns in conditions: [''invalid_field'']'
                      metadata: []
                unsupported_aggregation_field:
                  summary: group_by references an unsupported field
                  value:
                    error:
                      type: internal_error
                      message: >-
                        Unsupported aggregation field:
                        'company.basic_info.name'. Supported:
                        company.basic_info.company_id,
                        company.basic_info.crustdata_company_id,
                        company.basic_info.industries,
                        company.basic_info.primary_domain,
                        company.funding.last_round_type,
                        company.headcount.range, company.locations.country,
                        job_details.category, job_details.title,
                        job_details.workplace_type, location.country
                      metadata: []
components:
  parameters:
    ApiVersion:
      name: x-api-version
      in: header
      required: true
      schema:
        type: string
        enum:
          - '2025-11-01'
        default: '2025-11-01'
        example: '2025-11-01'
      description: API version to use. This endpoint currently requires `2025-11-01`.
  schemas:
    JobSearchRequest:
      type: object
      description: >-
        Request body for searching the indexed job dataset with filters,
        pagination, sorting, field selection, and aggregations.
      additionalProperties: false
      properties:
        filters:
          description: >
            Search filter conditions. Can be a single condition or a nested
            group

            combined with AND/OR logic. Only indexed fields are filterable — see

            `SearchCondition.field` for the full list.
          example:
            field: company.basic_info.company_id
            type: '='
            value: 631394
          oneOf:
            - $ref: '#/components/schemas/SearchCondition'
            - $ref: '#/components/schemas/SearchConditionGroup'
        cursor:
          type: string
          description: >-
            Opaque pagination cursor returned in a prior response's
            `next_cursor` field. Pass this to fetch the next page of results
            with the same filter, sort, and field selection.
          example: >-
            H4sIAJJG1mkC_xXMPQ7CMAwG0KtEmTvYiR0nXAWhyvlBHRARbTogxN0J01s-vY99nW1_r5sem70YSzEJErG_VwdSnfeMiVpSjhmbUmkanXqXa5rlqsUlTJApUPO1NrsYe_R9zNcVRZgDRhIAWAwhsA_Ct0lGH_pYSz-ffykR8PsDw2G2zooAAAA=
        limit:
          type: integer
          minimum: 0
          maximum: 1000
          default: 20
          description: >-
            Maximum number of job listings to return per page. Set to 0 when you
            only want aggregations.
          example: 20
        sorts:
          type: array
          description: >-
            Sort specifications for ordering results. Sorts are applied in
            order.
          example:
            - field: metadata.date_added
              order: desc
          items:
            $ref: '#/components/schemas/SearchSort'
        fields:
          type: array
          description: >
            Fields to return in each job listing. Use dot-notation for nested
            fields

            (e.g., "job_details.title", "company.basic_info.name"). If omitted,
            all

            available fields are returned.


            Valid top-level groups: `crustdata_job_id`, `job_details`,
            `company`,

            `location`, `content`, `metadata`. Nested fields are supported

            (e.g., `company.basic_info`, `company.headcount`,
            `company.funding`).
          example:
            - job_details.title
            - job_details.url
            - company.basic_info.name
            - location.raw
            - metadata.date_added
          items:
            type: string
        aggregations:
          type: array
          description: >-
            Aggregation queries to run alongside the search. Set `limit: 0` if
            you want only aggregation results and no job rows.
          example:
            - type: group_by
              field: company.basic_info.company_id
              agg: count
              size: 5
          items:
            $ref: '#/components/schemas/AggregationRequest'
    JobSearchResponse:
      type: object
      description: Paginated response from the indexed job search endpoint.
      required:
        - job_listings
      properties:
        job_listings:
          type: array
          description: >-
            Job listings matching the search criteria for the current page.
            Empty when `limit` is 0 or when an aggregation-only query is made.
          example: []
          items:
            $ref: '#/components/schemas/Job'
        next_cursor:
          type: string
          nullable: true
          description: >-
            Opaque cursor for fetching the next page of results. Pass this value
            as `cursor` in the next request. `null` when there are no more
            pages.
          example: >-
            H4sIAJJG1mkC_xXMPQ7CMAwG0KtEmTvYiR0nXAWhyvlBHRARbTogxN0J01s-vY99nW1_r5sem70YSzEJErG_VwdSnfeMiVpSjhmbUmkanXqXa5rlqsUlTJApUPO1NrsYe_R9zNcVRZgDRhIAWAwhsA_Ct0lGH_pYSz-ffykR8PsDw2G2zooAAAA=
        total_count:
          type: integer
          nullable: true
          description: Total number of job listings matching the query across all pages.
          example: 1676
        aggregations:
          type: array
          nullable: true
          description: >-
            Aggregation results, present only when the request included an
            `aggregations` array.
          example:
            - type: count
              field: null
              value: 4448237
          items:
            $ref: '#/components/schemas/AggregationResponseItem'
    ErrorResponse:
      type: object
      description: >-
        Standard error response returned by job endpoints for all 4xx and 5xx
        errors, including authentication failures (`type: unauthorized`).
      required:
        - error
      properties:
        error:
          type: object
          description: Error details.
          required:
            - type
            - message
          properties:
            type:
              type: string
              description: Category of the error.
              enum:
                - invalid_request
                - unauthorized
                - permission_error
                - not_found
                - insufficient_credits
                - rate_limit_error
                - internal_error
              example: invalid_request
            message:
              type: string
              description: Human-readable error message.
              example: Company with id=999999999 not found.
            metadata:
              type: array
              description: >-
                Additional structured context (e.g., list of available fields).
                Often empty.
              default: []
              items:
                type: object
                additionalProperties: true
    SearchCondition:
      type: object
      description: A single filter condition used to narrow job search results.
      required:
        - field
        - type
        - value
      properties:
        field:
          type: string
          description: >
            Field name to filter on. Use the exact dot-path below. Only indexed
            fields

            are filterable.


            Job details: `job_details.title`, `job_details.category`,
            `job_details.workplace_type`, `job_details.reposted_job`,
            `job_details.url`


            Company basic info: `company.basic_info.company_id`,
            `company.basic_info.name`, `company.basic_info.primary_domain`,
            `company.basic_info.professional_network_id`,
            `company.basic_info.industries`


            Company firmographics: `company.headcount.total`,
            `company.headcount.range`, `company.followers.count`,
            `company.revenue.estimated.lower_bound_usd`


            Location: `location.raw`, `location.country`, `location.state`,
            `location.district`, `location.city`


            Content: `content.description`


            Identifiers: `crustdata_job_id`


            Metadata: `metadata.date_added`, `metadata.date_updated`
          example: company.basic_info.company_id
        type:
          type: string
          description: >
            Filter operator.

            - `=`, `!=`: exact match or negation

            - `<`, `=<`, `>`, `=>`: numeric or date comparison

            - `in`, `not_in`: set membership (value must be an array)

            - `(.)`: case-insensitive substring match (useful for keywords in
            title or description)

            - `[.]`: case-insensitive exact word/phrase match
          enum:
            - '='
            - '!='
            - <
            - '=<'
            - '>'
            - '=>'
            - in
            - not_in
            - (.)
            - '[.]'
          example: '='
        value:
          description: >-
            Filter value. Type depends on `type`: a scalar for comparison
            operators or an array for `in`/`not_in`.
          anyOf:
            - type: string
            - type: number
            - type: integer
            - type: boolean
            - type: array
              items:
                anyOf:
                  - type: string
                  - type: number
                  - type: integer
    SearchConditionGroup:
      type: object
      description: >-
        A group of filter conditions combined with AND or OR logic. Supports
        nesting for complex queries.
      required:
        - op
        - conditions
      properties:
        op:
          type: string
          description: Logical operator to combine the child conditions.
          enum:
            - and
            - or
          example: and
        conditions:
          type: array
          description: Array of conditions or nested condition groups.
          minItems: 1
          example:
            - field: company.basic_info.company_id
              type: '='
              value: 631394
            - field: job_details.category
              type: '='
              value: Engineering
          items:
            oneOf:
              - $ref: '#/components/schemas/SearchCondition'
              - type: object
                description: >-
                  Nested filter group (recursive AND/OR of conditions or further
                  groups).
                required:
                  - op
                  - conditions
                properties:
                  op:
                    type: string
                    description: Logical operator to combine the child conditions.
                    enum:
                      - and
                      - or
                    example: and
                  conditions:
                    type: array
                    description: Array of conditions or further nested groups.
                    minItems: 1
                    items:
                      type: object
                      description: A filter condition or a further nested filter group.
                      additionalProperties: true
    SearchSort:
      type: object
      description: Sort specification for ordering job search results.
      required:
        - field
        - order
      properties:
        field:
          type: string
          description: >
            Field name to sort on. Supports the same dot-path names used for
            filters,

            e.g., `metadata.date_added`, `metadata.date_updated`,
            `company.headcount.total`,

            `company.followers.count`.
          example: metadata.date_added
        order:
          type: string
          description: Sort direction.
          enum:
            - asc
            - desc
          example: desc
    AggregationRequest:
      type: object
      description: >
        Aggregation query to run alongside the search. Use `count` for a simple
        total or

        `group_by` to bucket results by a field. Use `limit: 0` on the request
        if you

        want only aggregation output and no job rows.
      additionalProperties: false
      required:
        - type
      properties:
        type:
          type: string
          description: Aggregation type.
          enum:
            - count
            - group_by
          example: group_by
        field:
          type: string
          nullable: true
          description: >
            Field (dot-path) to group results by. Required when `type` is
            `group_by`;

            omitted for `count`. Supported fields:
            `company.basic_info.company_id`,

            `company.basic_info.crustdata_company_id`,
            `company.basic_info.industries`,

            `company.basic_info.primary_domain`,
            `company.funding.last_round_type`,

            `company.headcount.range`, `company.locations.country`,

            `job_details.category`, `job_details.title`,
            `job_details.workplace_type`,

            `location.country`.
          example: company.basic_info.company_id
        agg:
          type: string
          nullable: true
          description: >-
            Sub-aggregation to compute inside each bucket. Required for
            `group_by`. Currently only `count` is supported.
          example: count
        size:
          type: integer
          minimum: 1
          maximum: 1000
          default: 100
          description: Maximum number of buckets to return for a `group_by` aggregation.
          example: 5
    Job:
      type: object
      description: >-
        Complete job listing with the hiring company's firmographics, job
        location, description, and metadata.
      additionalProperties: false
      properties:
        crustdata_job_id:
          type: integer
          description: Unique Crustdata internal job identifier.
          example: 41053563
        job_details:
          type: object
          description: Core information about the job posting itself.
          properties:
            job_id:
              type: integer
              nullable: true
              description: Job identifier (currently mirrors `crustdata_job_id`).
              example: 41053563
            title:
              type: string
              nullable: true
              description: Job title as posted.
              example: Integration Engineer (AUNZ)
            category:
              type: string
              nullable: true
              description: >-
                High-level job category (e.g., Engineering, Sales, Operations,
                Consultancy, Others).
              example: Engineering
            workplace_type:
              type: string
              nullable: true
              description: >-
                Workplace type if provided (e.g., Remote, Hybrid, On-site). May
                be empty.
              example: ''
            url:
              type: string
              nullable: true
              description: Canonical URL for the job posting.
              example: https://www.linkedin.com/jobs/view/4398377738
            reposted_job:
              type: boolean
              nullable: true
              description: Whether the posting was detected as a repost of a prior listing.
              example: false
            number_of_openings:
              type: integer
              nullable: true
              description: Number of openings the posting is hiring for.
              example: 1
        company:
          type: object
          description: Hiring company's firmographics at the time of indexing.
          properties:
            basic_info:
              type: object
              description: Core identifiers, domain, industries.
              properties:
                crustdata_company_id:
                  type: integer
                  nullable: true
                  description: Unique Crustdata internal company identifier.
                  example: 631394
                name:
                  type: string
                  nullable: true
                  description: Official company name.
                  example: Stripe
                primary_domain:
                  type: string
                  nullable: true
                  description: Primary web domain for the company.
                  example: stripe.com
                website:
                  type: string
                  nullable: true
                  description: Company website URL.
                  example: https://stripe.com
                professional_network_id:
                  type: string
                  nullable: true
                  description: >-
                    Identifier for the company on the professional network
                    profile source.
                  example: '2135371'
                industries:
                  type: array
                  nullable: true
                  description: Industry classifications assigned to the company.
                  example:
                    - Technology, Information and Internet
                    - Technology, Information and Media
                  items:
                    type: string
            locations:
              type: object
              description: Company's registered or primary office location.
              properties:
                country:
                  type: string
                  nullable: true
                  description: ISO country code for the primary office.
                  example: USA
                state:
                  type: string
                  nullable: true
                  description: State or region for the primary office.
                  example: California
                city:
                  type: string
                  nullable: true
                  description: City for the primary office.
                  example: South San Francisco
                street_address:
                  type: string
                  nullable: true
                  description: Full street address for the primary office.
                  example: >-
                    354 Oyster Point Blvd, South San Francisco, California,
                    United States
            headcount:
              type: object
              description: Company headcount at the time of indexing.
              properties:
                total:
                  type: integer
                  nullable: true
                  description: Total current headcount across all offices.
                  example: 14522
                range:
                  type: string
                  nullable: true
                  description: Headcount bracket (e.g., "51-200", "5001-10000").
                  example: 5001-10000
                largest_headcount_country:
                  type: string
                  nullable: true
                  description: ISO country code where the company has the most employees.
                  example: USA
            followers:
              type: object
              description: Public profile follower counts.
              properties:
                count:
                  type: integer
                  nullable: true
                  description: Total followers of the company's public profile.
                  example: 1335688
            revenue:
              type: object
              description: Estimated revenue and public market signals.
              properties:
                estimated:
                  type: object
                  description: Estimated annual revenue range in USD.
                  properties:
                    lower_bound_usd:
                      type: integer
                      nullable: true
                      description: >-
                        Lower bound of the estimated annual revenue range, in
                        USD.
                      example: 500000000
                    upper_bound_usd:
                      type: integer
                      nullable: true
                      description: >-
                        Upper bound of the estimated annual revenue range, in
                        USD.
                      example: 1000000000
                public_markets:
                  type: object
                  nullable: true
                  description: Public market information when the company is listed.
                  properties:
                    stock_symbols:
                      type: array
                      nullable: true
                      description: Stock ticker symbols associated with the company.
                      example:
                        - STRIPE
                      items:
                        type: string
                    fiscal_year_end:
                      type: string
                      nullable: true
                      description: Fiscal year end if reported.
                      example: ''
                acquisition_status:
                  type: string
                  nullable: true
                  description: Acquisition status if known (e.g., acquired, merged).
                  example: ''
            funding:
              type: object
              description: Venture funding details.
              properties:
                total_investment_usd:
                  type: number
                  nullable: true
                  description: Total capital raised to date, in USD.
                  example: 9440247725
                valuation_usd:
                  type: number
                  nullable: true
                  description: Most recent valuation in USD.
                  example: 50000000000
                last_fundraise_date:
                  type: string
                  nullable: true
                  description: Date of the most recent funding event (ISO 8601).
                  example: '2026-03-09T00:00:00'
                last_round_type:
                  type: string
                  nullable: true
                  description: >-
                    Type of the most recent funding round (e.g., seed, series_a,
                    series_b, secondary_market).
                  example: secondary_market
                num_funding_rounds:
                  type: integer
                  nullable: true
                  description: Total number of funding rounds recorded.
                  example: 23
                investors:
                  type: array
                  nullable: true
                  description: Known investors across all rounds.
                  example:
                    - Sequoia Capital
                    - Andreessen Horowitz
                    - Founders Fund
                  items:
                    type: string
            competitors:
              type: object
              description: Known competitor companies.
              properties:
                websites:
                  type: array
                  nullable: true
                  description: List of competitor website URLs.
                  example:
                    - https://plaid.com
                    - https://paystack.com
                  items:
                    type: string
        location:
          type: object
          description: Job's advertised location.
          properties:
            raw:
              type: string
              nullable: true
              description: Raw location string as posted on the source.
              example: Melbourne, Victoria, Australia
            city:
              type: string
              nullable: true
              description: Parsed city.
              example: Melbourne
            district:
              type: string
              nullable: true
              description: Parsed district or borough.
              example: null
            state:
              type: string
              nullable: true
              description: Parsed state or province.
              example: Victoria
            country:
              type: string
              nullable: true
              description: Parsed country name.
              example: Australia
            pincode:
              type: string
              nullable: true
              description: Postal or zip code if available.
              example: null
        content:
          type: object
          description: Text content of the job posting.
          properties:
            description:
              type: string
              nullable: true
              description: Full job description as published.
              example: Stripe is a financial infrastructure platform for businesses...
        metadata:
          type: object
          description: Indexing timestamps.
          properties:
            date_added:
              type: string
              nullable: true
              description: When the job listing was first indexed (ISO 8601).
              example: '2026-04-07T11:37:29'
            date_updated:
              type: string
              nullable: true
              description: When the job listing was last refreshed (ISO 8601).
              example: '2026-04-08T00:00:00'
    AggregationResponseItem:
      type: object
      description: A single aggregation result. Shape depends on the aggregation `type`.
      properties:
        type:
          type: string
          description: Echoed aggregation type.
          enum:
            - count
            - group_by
          example: group_by
        field:
          type: string
          nullable: true
          description: Echoed field name (`null` for `count`).
          example: company.basic_info.company_id
        value:
          type: integer
          nullable: true
          description: >-
            Total count matching the filter. Present only for `count`
            aggregations.
          example: 4354217
        buckets:
          type: array
          nullable: true
          description: >-
            Group buckets. Present only for `group_by` aggregations. Ordered by
            descending count.
          items:
            $ref: '#/components/schemas/AggregationBucket'
    AggregationBucket:
      type: object
      description: A single bucket produced by a `group_by` aggregation.
      properties:
        key:
          description: >-
            Bucket key value (the grouped field's value — integer, string, or
            array element).
          example: 821755
          anyOf:
            - type: string
            - type: integer
            - type: number
        count:
          type: integer
          description: Number of job listings in this bucket.
          example: 1037
        metadata:
          type: object
          nullable: true
          description: >
            Additional context for the bucket key. Only returned for fields that
            have metadata configured (e.g. `company.basic_info.company_id`,
            `company.basic_info.crustdata_company_id`,
            `company.basic_info.primary_domain`).
          properties:
            company_name:
              type: string
              nullable: true
              description: Company name for the grouped company.
              example: Jobs via Dice
            crustdata_company_id:
              type: integer
              nullable: true
              description: >-
                Crustdata internal company identifier, when applicable to the
                grouped field.
              example: 821755
            company_website_domain:
              type: string
              nullable: true
              description: Primary web domain for the grouped company.
              example: dice.com
            linkedin_id:
              type: string
              nullable: true
              description: Professional-network identifier for the grouped company.
              example: '104085107'
          example:
            company_name: Jobs via Dice
            company_website_domain: dice.com
            linkedin_id: '104085107'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key passed as a Bearer token in the Authorization header.

````