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

# CrustData V2: Job Search

> Search indexed job postings with filters such as title, company and location, with optional aggregations. Includes SDK V2 examples, schemas, and cost.

Search indexed job postings with filters such as title, company and location, with optional aggregations.

> [!NOTE]
>
> Tool ID: `crustdata_v2_job_search`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'crustdata_v2_job_search',
  {
    "filters": {
      "op": "and",
      "conditions": [
        {
          "field": "email",
          "type": "example",
          "value": {}
        }
      ]
    },
    "limit": 20,
    "cursor": "cursor_123"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute crustdata_v2_job_search --input '{
  "filters": {
    "op": "and",
    "conditions": [
      {
        "field": "email",
        "type": "example",
        "value": {}
      }
    ]
  },
  "limit": 20,
  "cursor": "cursor_123"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "job_listings": [
      {
        "crustdata_job_id": 123,
        "job_details": {
          "title": "VP of Engineering",
          "category": "example",
          "url": "https://example.com/resource"
        },
        "company": {
          "basic_info": {}
        }
      }
    ]
  }
}
```

Use `deepline describe crustdata_v2_job_search --json` for the latest machine-readable contract.

## Input reference

Search CrustData indexed job listings. Deepline injects the required x-api-version: 2025-11-01 header.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.filters` | `object` | No | — | Nested boolean filter group for CrustData job search. |
| `payload.limit` | `integer` | No | `20` | Rows per page. Use 0 for aggregation-only queries. Minimum: 0. Maximum: 1000. |
| `payload.cursor` | `string` | No | — | Pagination cursor returned by the previous response. |
| `payload.sorts` | `array` | No | — | Optional sort clauses. |
| `payload.fields` | `array` | No | — | Optional response fields to return. |
| `payload.aggregations` | `array` | No | — | Optional aggregation requests. |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Search CrustData indexed job listings. Deepline injects the required x-api-version: 2025-11-01 header.",
    "properties": {
      "filters": {
        "type": "object",
        "description": "Nested boolean filter group for CrustData job search.",
        "properties": {
          "op": {
            "type": "string",
            "description": "Boolean operator for this group.",
            "enum": [
              "and",
              "or"
            ]
          },
          "conditions": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "description": "One field-level predicate in a CrustData job-search filter tree.",
                  "properties": {
                    "column": {
                      "type": "string",
                      "description": "Legacy alias for field. The legacy dataset-table compatibility endpoint crustdata_v2_job_listings translates old column aliases; native /job/search callers should use field with canonical dot-paths."
                    },
                    "field": {
                      "type": "string",
                      "description": "Dot-path job-search field to filter, such as company.basic_info.company_id, company.basic_info.primary_domain, job_details.title, location.raw, or metadata.date_added. Native /job/search rejects legacy aliases like job_title, job_location, and job_list_date."
                    },
                    "type": {
                      "type": "string",
                      "description": "CrustData filter operator, such as =, (.), in, not_in, >, =, or <=."
                    },
                    "value": {
                      "description": "Filter value. Use a scalar for single-value filters and an array for list filters."
                    }
                  },
                  "required": [
                    "field",
                    "type",
                    "value"
                  ],
                  "additionalProperties": true
                },
                {
                  "type": "object",
                  "description": "Recursive OpenAPI schema reference #/components/schemas/JobSearchFilterGroup.",
                  "additionalProperties": true
                }
              ]
            }
          }
        },
        "required": [
          "op",
          "conditions"
        ],
        "additionalProperties": false
      },
      "limit": {
        "type": "integer",
        "description": "Rows per page. Use 0 for aggregation-only queries.",
        "default": 20,
        "minimum": 0,
        "maximum": 1000
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor returned by the previous response."
      },
      "sorts": {
        "type": "array",
        "description": "Optional sort clauses.",
        "items": {
          "type": "object",
          "properties": {
            "field": {
              "type": "string",
              "description": "Dot-path field to sort by."
            },
            "column": {
              "type": "string",
              "description": "Legacy alias for field. The legacy dataset-table compatibility endpoint crustdata_v2_job_listings translates old column aliases; native /job/search callers should use field with canonical dot-paths."
            },
            "order": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          },
          "required": [
            "field",
            "order"
          ],
          "additionalProperties": true
        }
      },
      "fields": {
        "type": "array",
        "description": "Optional response fields to return.",
        "items": {
          "type": "string"
        }
      },
      "aggregations": {
        "type": "array",
        "description": "Optional aggregation requests.",
        "items": {
          "type": "object",
          "additionalProperties": true
        }
      }
    },
    "required": [],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.job_listings` | `array` | Yes | — | — |
| `result.data.job_listings[].crustdata_job_id` | `integer` | No | — | — |
| `result.data.job_listings[].job_details` | `object` | No | — | — |
| `result.data.job_listings[].job_details.title` | `string` | No | — | — |
| `result.data.job_listings[].job_details.category` | `string` | No | — | — |
| `result.data.job_listings[].job_details.url` | `string` | No | — | Format: `uri`. |
| `result.data.job_listings[].job_details.workplace_type` | `string` | No | — | — |
| `result.data.job_listings[].job_details.number_of_openings` | `integer` | No | — | — |
| `result.data.job_listings[].company` | `object` | No | — | — |
| `result.data.job_listings[].company.basic_info` | `object` | No | — | — |
| `result.data.job_listings[].company.basic_info.crustdata_company_id` | `integer` | No | — | — |
| `result.data.job_listings[].company.basic_info.company_id` | `integer` | No | — | — |
| `result.data.job_listings[].company.basic_info.name` | `string` | No | — | — |
| `result.data.job_listings[].company.basic_info.website_domain` | `string` | No | — | — |
| `result.data.job_listings[].company.basic_info.linkedin_profile_url` | `string` | No | — | — |
| `result.data.job_listings[].location` | `object` | No | — | — |
| `result.data.job_listings[].location.raw` | `string` | No | — | — |
| `result.data.job_listings[].location.city` | `string` | No | — | — |
| `result.data.job_listings[].location.state` | `string` | No | — | — |
| `result.data.job_listings[].location.country` | `string` | No | — | — |
| `result.data.job_listings[].content` | `object` | No | — | — |
| `result.data.job_listings[].content.description` | `string` | No | — | — |
| `result.data.job_listings[].metadata` | `object` | No | — | — |
| `result.data.job_listings[].metadata.date_added` | `string` | No | — | Format: `date-time`. |
| `result.data.job_listings[].metadata.date_updated` | `string` | No | — | Format: `date-time`. |
| `result.data.job_listings[].metadata.company_name` | `string` | No | — | — |
| `result.data.job_listings[].metadata.company_website_domain` | `string` | No | — | — |
| `result.data.job_listings[].metadata.linkedin_id` | `string` | No | — | — |
| `result.data.job_listings[].job_title` | `string` | No | — | Legacy flat title field when returned by older response variants. |
| `result.data.job_listings[].company_name` | `string` | No | — | Legacy flat company-name field when returned by older response variants. |
| `result.data.job_listings[].linkedin_profile_url` | `string` | No | — | Legacy flat company LinkedIn URL field when returned by older response variants. |
| `result.data.next_cursor` | `string \| null` | No | — | Cursor for the next page, when available. |
| `result.data.total_count` | `integer` | No | — | Total matching jobs when returned by CrustData. Minimum: 0. |
| `result.data.aggregations` | `array` | No | — | — |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "job_listings": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "A CrustData job listing returned by indexed or live job search.",
              "properties": {
                "crustdata_job_id": {
                  "type": "integer"
                },
                "job_details": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "category": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "workplace_type": {
                      "type": "string"
                    },
                    "number_of_openings": {
                      "type": "integer"
                    }
                  },
                  "additionalProperties": true
                },
                "company": {
                  "type": "object",
                  "properties": {
                    "basic_info": {
                      "type": "object",
                      "properties": {
                        "crustdata_company_id": {
                          "type": "integer"
                        },
                        "company_id": {
                          "type": "integer"
                        },
                        "name": {
                          "type": "string"
                        },
                        "website_domain": {
                          "type": "string"
                        },
                        "linkedin_profile_url": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": true
                },
                "location": {
                  "type": "object",
                  "properties": {
                    "raw": {
                      "type": "string"
                    },
                    "city": {
                      "type": "string"
                    },
                    "state": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                },
                "content": {
                  "type": "object",
                  "properties": {
                    "description": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                },
                "metadata": {
                  "type": "object",
                  "properties": {
                    "date_added": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "date_updated": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "company_name": {
                      "type": "string"
                    },
                    "company_website_domain": {
                      "type": "string"
                    },
                    "linkedin_id": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                },
                "job_title": {
                  "type": "string",
                  "description": "Legacy flat title field when returned by older response variants."
                },
                "company_name": {
                  "type": "string",
                  "description": "Legacy flat company-name field when returned by older response variants."
                },
                "linkedin_profile_url": {
                  "type": "string",
                  "description": "Legacy flat company LinkedIn URL field when returned by older response variants."
                }
              },
              "additionalProperties": true
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Cursor for the next page, when available."
          },
          "total_count": {
            "type": "integer",
            "description": "Total matching jobs when returned by CrustData.",
            "minimum": 0
          },
          "aggregations": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "required": [
          "job_listings"
        ],
        "additionalProperties": true
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `0.4` per pricing unit.

## Related documentation

* [CrustData V2 provider guide](https://deepline.com/docs/providers/crustdata-v2/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.