# List Job Postings — Ashby Job Postings

> Lists every published job posting on the Ashby job board configured for the connected account. Use this to browse open roles, or to filter by department, team, location, workplace type, or employment type before drilling into one posting…

- Key: `ashby_job_postings_api-list-job-postings`
- Type: Action (Read-only)
- Version: 0.0.2
- App: Ashby Job Postings (`ashby_job_postings_api`) — https://pipedream.com/apps/ashby-job-postings-api.md
- This page (HTML): https://pipedream.com/apps/ashby-job-postings-api/actions/list-job-postings
- Hints: read-only · open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/ashby_job_postings_api/actions/list-job-postings/list-job-postings.mjs

## Description

Lists every published job posting on the Ashby job board configured for the connected account. Use this to browse open roles, or to filter by department, team, location, workplace type, or employment type before drilling into one posting with **Get Job Posting**. The public Job Board API exposes a single non-paginated endpoint that returns all postings, so every filter here is applied client-side after the full list is fetched. [See the documentation](https://developers.ashbyhq.com/docs/public-job-posting-api)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `includeCompensation` | `boolean` | No | Set to true to include each posting's compensation object (tier summary and pay range breakdown) in the response. Defaults to false. |
| `department` | `string` | No | Optional client-side filter. Return only postings whose flat department field exactly matches this value (e.g. Engineering). Case-sensitive exact match applied after fetching all postings. |
| `team` | `string` | No | Optional client-side filter. Return only postings whose flat team field exactly matches this value (e.g. Platform). Applied after fetching all postings. |
| `location` | `string` | No | Optional client-side filter. Return only postings whose location field contains this value (case-insensitive). The API returns values like "Houston, TX" — a partial value like "Houston" will match. Applied after fetching all postings. |
| `workplaceType` | `string` | No | Optional client-side filter on the workplaceType field. One of OnSite, Remote, Hybrid. |
| `employmentType` | `string` | No | Optional client-side filter on the employmentType field. One of FullTime, PartTime, Intern, Contract, Temporary. |
| `title` | `string` | No | Filter to postings whose title contains this value, case-insensitive, e.g. Engineer matches "Senior Software Engineer". Applied client-side after fetching all postings. |
| `jobUrl` | `string` | No | The exact public URL of one specific job posting, e.g. https://jobs.ashbyhq.com/Ashby/f050b8c1-243f-4841-b47e-e13cd2a49af0. Use List Job Postings to find the jobUrl of the posting you want. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "ashby_job_postings_api",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "ashby_job_postings_api-list-job-postings",
  arguments: {
    includeCompensation: true,
    department: "Department",
  },
})
```

**TypeScript**

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "ashby_job_postings_api-list-job-postings",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    ashby_job_postings_api: { authProvisionId: "apn_xxxxxxx" },
    includeCompensation: true,
    department: "Department",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "ashby_job_postings_api-list-job-postings",
    "configured_props": {
      "ashby_job_postings_api": { "authProvisionId": "apn_xxxxxxx" },
      "includeCompensation": true,
      "department": "Department"
    }
  }'
```

---

- App: https://pipedream.com/apps/ashby-job-postings-api.md · All apps: https://pipedream.com/apps
