> ## 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.

# Jobs Search examples

> Worked examples for Jobs Search: SDR/BDR keyword hunting, mid-market filtering, funding-triggered queries, and aggregations.

Worked examples for [Search Jobs](/job-docs/search/introduction). Each
example is a full working request you can copy, paste, and adapt.

For filter grammar, operators, and the full field catalog, see
[Search reference](/job-docs/search/reference). For sorting, pagination,
field selection, and aggregations, see
[Pagination & sorting](/job-docs/search/reference#pagination--sorting).

<Note>
  Replace `YOUR_API_KEY` in each example with your actual API key. All
  requests require the `x-api-version: 2025-11-01` header.
</Note>

***

## SDR / BDR keyword search across multiple companies

<Tip>
  The long forms `"Sales Development Representative"` and `"Business
        Development Representative"` use `(.)` (all-words match), but the short
  acronym `"SDR"` uses `[.]` (exact phrase). Short acronyms with `(.)`
  can overmatch — e.g. `"SDR"` would also match `"USDR"`. Use `[.]` for
  2–3 character acronyms.
</Tip>

<CodeGroup>
  ```bash curl theme={"theme":"vitesse-black"}
  curl --request POST \
    --url https://api.crustdata.com/job/search \
    --header 'authorization: Bearer YOUR_API_KEY' \
    --header 'content-type: application/json' \
    --header 'x-api-version: 2025-11-01' \
    --data '{
      "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
    }'
  ```
</CodeGroup>

***

## Companies indexing both Software Engineers and Account Executives

Because filters operate on individual job rows, you cannot ask for
"companies with both roles" in a single query. Instead, run two
bounded-window aggregations and intersect the company ids client-side.

<Tip>
  **Watch out for short-acronym false positives.** `(.)` is an all-words
  match, so a query of `"AE"` in `job_details.title` can also match
  unrelated titles. Prefer `[.]` for 2–3 character acronyms.
</Tip>

<Steps>
  <Step title="Query 1 — companies with Software Engineer listings">
    ```json theme={"theme":"vitesse-black"}
    {
        "filters": {
            "op": "and",
            "conditions": [
                { "field": "metadata.date_added", "type": "=>", "value": "2025-01-01" },
                { "field": "metadata.date_added", "type": "<", "value": "2026-01-01" },
                {
                    "op": "or",
                    "conditions": [
                        { "field": "job_details.title", "type": "(.)", "value": "Software Engineer" },
                        { "field": "job_details.title", "type": "[.]", "value": "SWE" }
                    ]
                }
            ]
        },
        "limit": 0,
        "aggregations": [
            { "type": "group_by", "field": "company.basic_info.company_id", "agg": "count", "size": 500 }
        ]
    }
    ```
  </Step>

  <Step title="Query 2 — companies with Account Executive listings">
    ```json theme={"theme":"vitesse-black"}
    {
        "filters": {
            "op": "and",
            "conditions": [
                { "field": "metadata.date_added", "type": "=>", "value": "2025-01-01" },
                { "field": "metadata.date_added", "type": "<", "value": "2026-01-01" },
                {
                    "op": "or",
                    "conditions": [
                        { "field": "job_details.title", "type": "(.)", "value": "Account Executive" },
                        { "field": "job_details.title", "type": "[.]", "value": "AE" }
                    ]
                }
            ]
        },
        "limit": 0,
        "aggregations": [
            { "type": "group_by", "field": "company.basic_info.company_id", "agg": "count", "size": 500 }
        ]
    }
    ```
  </Step>

  <Step title="Intersect the company ids client-side">
    ```python theme={"theme":"vitesse-black"}
    engineering_ids = {b["key"] for b in response_1["aggregations"][0]["buckets"]}
    ae_ids = {b["key"] for b in response_2["aggregations"][0]["buckets"]}

    both = engineering_ids & ae_ids
    ```
  </Step>
</Steps>

***

## Mid-market companies indexing SDR listings

Combine an inclusive headcount range with keyword search on the title field.

```json theme={"theme":"vitesse-black"}
{
    "filters": {
        "op": "and",
        "conditions": [
            { "field": "company.headcount.total", "type": "=>", "value": 51 },
            { "field": "company.headcount.total", "type": "=<", "value": 500 },
            { "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": [
        "crustdata_job_id",
        "job_details.title",
        "company.basic_info.crustdata_company_id",
        "company.basic_info.name",
        "company.basic_info.primary_domain",
        "company.headcount.total",
        "location.raw",
        "metadata.date_added"
    ],
    "sorts": [{ "field": "metadata.date_added", "order": "desc" }],
    "limit": 50
}
```

***

## Companies that closed a Series B between two dates and are indexing new listings

```json theme={"theme":"vitesse-black"}
{
    "filters": {
        "op": "and",
        "conditions": [
            { "field": "company.funding.last_round_type", "type": "=", "value": "series_b" },
            { "field": "company.funding.last_fundraise_date", "type": "=>", "value": "2025-01-01" },
            { "field": "company.funding.last_fundraise_date", "type": "<", "value": "2025-07-01" },
            { "field": "metadata.date_added", "type": "=>", "value": "2025-01-01" }
        ]
    },
    "fields": [
        "job_details.title",
        "company.basic_info.crustdata_company_id",
        "company.basic_info.name",
        "company.basic_info.primary_domain",
        "company.funding.last_round_type",
        "company.funding.last_fundraise_date",
        "company.funding.total_investment_usd"
    ],
    "sorts": [
        { "field": "company.funding.last_fundraise_date", "order": "desc" }
    ],
    "limit": 100
}
```

***

## Hiring volume by workplace type in the United States

<Warning>
  **Country values are not normalized.** `location.country` can appear as
  `"USA"`, `"United States"`, or `"United States of America"`. The `in`
  array below covers the three most common forms, but for full coverage
  you should first run a `group_by` on `location.country` and collect the
  exact bucket keys present in your dataset slice.
</Warning>

```json theme={"theme":"vitesse-black"}
{
    "filters": {
        "op": "and",
        "conditions": [
            {
                "field": "location.country",
                "type": "in",
                "value": ["USA", "United States", "United States of America"]
            },
            { "field": "metadata.date_added", "type": "=>", "value": "2025-01-01" },
            { "field": "metadata.date_added", "type": "<", "value": "2026-01-01" }
        ]
    },
    "limit": 0,
    "aggregations": [
        { "type": "group_by", "field": "job_details.workplace_type", "agg": "count", "size": 10 }
    ]
}
```

***

## Full-text keyword hunt in job descriptions

```json theme={"theme":"vitesse-black"}
{
    "filters": {
        "op": "and",
        "conditions": [
            { "field": "content.description", "type": "(.)", "value": "kubernetes" },
            { "field": "metadata.date_added", "type": "=>", "value": "2025-01-01" }
        ]
    },
    "fields": [
        "job_details.title",
        "company.basic_info.name",
        "location.raw",
        "metadata.date_added"
    ],
    "sorts": [{ "field": "metadata.date_added", "order": "desc" }],
    "limit": 20
}
```

***

## Next steps

* [Search reference](/job-docs/search/reference) — filter grammar, operators, full field catalog, id map, bucket metadata, and errors.
* [Pagination & sorting](/job-docs/search/reference#pagination--sorting) — sorting, cursor pagination, field selection, and aggregations.
* [Search Jobs](/job-docs/search/introduction) — back to the main Search page.
