# Search jobs

`GET https://api.twittrapi.com/jobs/search/{searchTerm}`

Job listings posted on X, by keyword.

HTML page: https://www.twittrapi.com/docs/reference/jobs-search-searchterm

## Parameters

| Name | In | Type | Required | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `searchTerm` | path | string | yes |  | Keyword, URL-encoded. |
| `count` | query | integer | no | 20 | Number of jobs to ask X for. Sent to X as is; X treats it as a hint and decides how many it returns (follower and following pages often hold 50 to 70 users for count=20). A value that is not a number falls back to 20. |
| `cursor` | query | string | no |  | Bottom cursor from the previous page. Leave it out for the first page. See Pagination. |
| `jobLocationId` | query | string (comma-separated) | no |  | Location IDs from /jobs/find-location/{term}. |
| `jobLocationType` | query | string (comma-separated) | no |  | Location types, passed to X unchanged. |
| `seniorityLevel` | query | string (comma-separated) | no |  | Seniority levels, passed to X unchanged. |
| `employmentType` | query | string (comma-separated) | no |  | Employment types, passed to X unchanged. |
| `companyName` | query | string | no |  | Only jobs from this company. |

Every read endpoint also accepts `format=simple` (or the header `X-Response-Format: simple`) for compact, flat JSON with a fixed schema. Same price.

Paginated: pass the bottom cursor of one page as `cursor` to get the next. Each page is one billed call.

## Notes

- X's job search sometimes fails on X's side (DependencyError); the API retries with other accounts and returns an error if every attempt fails. Retrying a little later usually works.

## Response

Raw JSON of X's JobSearchQueryScreenJobsQuery. Jobs are in data.job_search.items_results; the next-page cursor is data.job_search.slice_info.next_cursor.

With `format=simple`: Collection of Job objects.

## Errors

| Status | When |
| --- | --- |

Shared errors (401 missing key, 402 no balance, 429 rate limit, 5xx) are listed on https://www.twittrapi.com/docs/helpful-infos/error-handling. Calls that fail with 400, 408, 409 or a 5xx error are refunded.

## Example request

curl:

```bash
curl 'https://api.twittrapi.com/jobs/search/golang' \
  --header 'X-API-KEY: YOUR_API_KEY'
```

Python:

```python
import httpx

# No SDK method for this endpoint yet, so this is a plain HTTP call.
resp = httpx.get(
    "https://api.twittrapi.com/jobs/search/golang",
    headers={"X-API-KEY": "YOUR_API_KEY"},
    timeout=60,
)
data = resp.json()
```

Node.js:

```js
import { TwittrAPI } from "twittrapi";

const client = new TwittrAPI({ apiKey: process.env.TWITTRAPI_API_KEY });
// No wrapper method for this endpoint yet; client.get() sends the same authenticated GET.
const data = await client.get({
  path: "/jobs/search/golang",
});
```

RapidAPI:

```bash
curl 'https://twitter-aio.p.rapidapi.com/jobs/search/golang' \
  --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \
  --header 'x-rapidapi-host: twitter-aio.p.rapidapi.com'
```

## Example response

Shortened: arrays keep their first items and long strings are cut.

Raw (default):

```json
{
  "data": {
    "job_search": {
      "items_results": [
        {
          "id": "QXBpSm9iUmVzdWx0czoxOTMzNjIzMTE4NjY2NTcxNzc2",
          "rest_id": "1933623118666571776",
          "result": {
            "__isJobResult": "ApiJob",
            "__typename": "ApiJob",
            "company_profile_results": {
              "id": "QXBpQ29tcGFueVByb2ZpbGVSZXN1bHRzOjE3NTAzNDAyNDIxMDY4ODQyMDE=",
              "rest_id": "1750340242106884201",
              "result": {
                "__typename": "ApiCompanyProfile",
                "core": {
                  "name": "Example User 1"
                },
                "id": "QXBpQ29tcGFueVByb2ZpbGU6MTc1MDM0MDI0MjEwNjg4NDIwMQ==",
                "logo": {
                  "normal_url": "https://pbs.twimg.com/misc_img/1832099493933662208/AsbLJnCG?format=jpg&name=orig&cat=41"
                },
                "rest_id": "1750340242106884201"
              }
            },
            "core": {
              "location": "South San Francisco, California, United States",
              "redirect_url": "https://boards.greenhouse.io/neuralink/jobs/6607398003?gh_jid=6607398003",
              "title": "Electrical Engineer Intern, Robotics and Surgery Engineering"
            },
            "id": "QXBpSm9iOjE5MzM2MjMxMTg2NjY1NzE3NzY=",
            "user_results": {
              "id": "VXNlclJlc3VsdHM6MTAwMDAwMDAwMDAwMDAwMDAwMQ==",
              "result": {
                "__typename": "User",
                "id": "VXNlcjoxMDAwMDAwMDAwMDAwMDAwMDAx",
                "legacy": {
                  "name": "Example User 1",
                  "profile_image_url_https": "https://pbs.twimg.com/profile_images/1000000000000000000/example_normal.jpg",
                  "screen_name": "example_user_1",
                  "verified": false,
                  "verified_type": "Business"
                },
                "profile_image_shape": "Square",
                "rest_id": "1000000000000000001"
              }
            }
          }
        },
        "… 1 more"
      ],
      "slice_info": {
        "next_cursor": "WzMuNDcwMjg4OCwiMCIsIjE4MTMwMzEwNDExNTE3Mzc4NTgiXQ=="
      }
    }
  }
}
```

Simple (`format=simple`):

```json
{
  "data": [
    {
      "id": "1933623118666571776",
      "title": "Electrical Engineer Intern, Robotics and Surgery Engineering",
      "location": "South San Francisco, California, United States",
      "url": "https://boards.greenhouse.io/neuralink/jobs/6607398003?gh_jid=6607398003",
      "description": null,
      "company": {
        "id": "1750340242106884201",
        "name": "Example User 1",
        "logoUrl": "https://pbs.twimg.com/misc_img/1832099493933662208/AsbLJnCG?format=jpg&name=orig&cat=41"
      },
      "postedBy": {
        "id": "1000000000000000001",
        "username": "example_user_1"
      }
    },
    "… 1 more"
  ],
  "nextCursor": "WzMuNDcwMjg4OCwiMCIsIjE4MTMwMzEwNDExNTE3Mzc4NTgiXQ==",
  "previousCursor": null,
  "hasNextPage": true
}
```
