Skip to main content
POST
https://api.crustdata.com
/
job
/
search
curl --request POST \
  --url https://api.crustdata.com/job/search \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'x-api-version: <x-api-version>' \
  --data '
{
  "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": [
    {
      "column": "metadata.date_added",
      "order": "desc"
    }
  ],
  "limit": 2
}
'
{
  "job_listings": [
    {
      "job_details": {
        "title": "Integration Engineer (AUNZ)",
        "url": "https://www.linkedin.com/jobs/view/4398377738"
      },
      "location": {
        "country": "Australia"
      },
      "metadata": {
        "date_added": "2026-04-07T11:37:29"
      }
    },
    {
      "job_details": {
        "title": "Integration Engineer (AUNZ)",
        "url": "https://www.linkedin.com/jobs/view/4398371967"
      },
      "location": {
        "country": "Australia"
      },
      "metadata": {
        "date_added": "2026-04-07T11:37:27"
      }
    }
  ],
  "next_cursor": "H4sIAJJG1mkC_xXMPQ7CMAwG0KtEmTvYiR0nXAWhyvlBHRARbTogxN0J01s-vY99nW1_r5sem70YSzEJErG_VwdSnfeMiVpSjhmbUmkanXqXa5rlqsUlTJApUPO1NrsYe_R9zNcVRZgDRhIAWAwhsA_Ct0lGH_pYSz-ffykR8PsDw2G2zooAAAA=",
  "total_count": 1676
}

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.

Authorizations

Authorization
string
header
required

API key passed as a Bearer token in the Authorization header.

Headers

x-api-version
enum<string>
default:2025-11-01
required

API version to use. This endpoint currently requires 2025-11-01.

Available options:
2025-11-01
Example:

"2025-11-01"

Body

application/json

Search filters, pagination, sorting, field selection, and aggregations

Request body for searching the indexed job dataset with filters, pagination, sorting, field selection, and aggregations.

filters
object

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
}
cursor
string

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
integer
default:20

Maximum number of job listings to return per page. Set to 0 when you only want aggregations.

Required range: 0 <= x <= 1000
Example:

20

sorts
object[]

Sort specifications for ordering results. Sorts are applied in order.

Example:
[
{
"column": "metadata.date_added",
"order": "desc"
}
]
fields
string[]

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"
]
aggregations
object[]

Aggregation queries to run alongside the search. Set limit: 0 if you want only aggregation results and no job rows.

Example:
[
{
"type": "group_by",
"column": "company.basic_info.company_id",
"agg": "count",
"size": 5
}
]

Response

Jobs matching the search criteria with pagination cursor and total count

Paginated response from the indexed job search endpoint.

job_listings
object[]
required

Job listings matching the search criteria for the current page. Empty when limit is 0 or when an aggregation-only query is made.

Example:
[]
next_cursor
string | null

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
integer | null

Total number of job listings matching the query across all pages.

Example:

1676

aggregations
object[] | null

Aggregation results, present only when the request included an aggregations array.

Example:
[
{
"type": "count",
"column": null,
"value": 4354217
}
]