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

# Search jobs

> Open roles as live hiring signals, by company or keyword.

**Cost: 1 credit per job returned · zero-result queries are free**

<Note>
  **How to search — provide at least one**

  1. **`company_url`** — restrict to one company's job board.
  2. **`keywords`** — keyword match on title and description.

  You can send both. Optional `filters` narrow results further.
</Note>

Scrapes live job postings. Point it at a company's board or run keyword queries across the platform.

<ParamField body="company_url" type="string">
  Restrict to one company's postings. Provide this and/or `keywords`.
</ParamField>

<ParamField body="keywords" type="string[]">
  Keyword match on title and description.
</ParamField>

<ParamField body="filters" type="object">
  <Expandable title="Filter fields">
    <ParamField body="locations" type="string[]" />

    <ParamField body="seniority" type="string[]">`entry` | `senior` | `manager` | `director` | `executive`.</ParamField>
    <ParamField body="function" type="string[]">e.g. `["Engineering", "Sales"]`.</ParamField>
    <ParamField body="workplace_type" type="string[]">`remote` | `hybrid` | `onsite`.</ParamField>
    <ParamField body="posted_within_days" type="integer">Only postings newer than this.</ParamField>
  </Expandable>
</ParamField>

<ParamField body="max_results" type="integer" default="25">
  Hard cap on returned jobs — and therefore on cost. 1–100.
</ParamField>

### Response

<ResponseField name="data.jobs" type="object[]">
  <Expandable title="Job fields">
    <ResponseField name="url" type="string" />

    <ResponseField name="title" type="string" />

    <ResponseField name="company" type="object">`name`, `url`.</ResponseField>

    <ResponseField name="location" type="string" />

    <ResponseField name="workplace_type" type="string" />

    <ResponseField name="seniority" type="string" />

    <ResponseField name="posted_at" type="string" />

    <ResponseField name="applicants_count" type="integer" />

    <ResponseField name="description_snippet" type="string">First \~500 chars of the posting.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api.up2data.ai/v1/search/jobs \
    -H "X-API-Key: $UP2DATA_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "company_url": "https://linkedin.com/company/anthropic",
      "filters": { "seniority": ["senior"], "posted_within_days": 14 },
      "max_results": 25
    }'
  ```

  ```python Python theme={null}
  resp = requests.post(
      "https://api.up2data.ai/v1/search/jobs",
      headers={"X-API-Key": UP2DATA_API_KEY},
      json={
          "company_url": "https://linkedin.com/company/anthropic",
          "filters": {"seniority": ["senior"], "posted_within_days": 14},
          "max_results": 25,
      },
  )
  jobs = resp.json()["data"]["jobs"]
  ```

  ```javascript Node theme={null}
  const resp = await fetch("https://api.up2data.ai/v1/search/jobs", {
    method: "POST",
    headers: { "X-API-Key": process.env.UP2DATA_API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({
      company_url: "https://linkedin.com/company/anthropic",
      filters: { seniority: ["senior"], posted_within_days: 14 },
      max_results: 25,
    }),
  });
  const { jobs } = (await resp.json()).data;
  ```

  ```go Go theme={null}
  body, _ := json.Marshal(map[string]any{
  	"company_url": "https://linkedin.com/company/anthropic",
  	"filters":     map[string]any{"seniority": []string{"senior"}, "posted_within_days": 14},
  	"max_results": 25,
  })
  req, _ := http.NewRequest("POST",
  	"https://api.up2data.ai/v1/search/jobs", bytes.NewReader(body))
  req.Header.Set("X-API-Key", os.Getenv("UP2DATA_API_KEY"))
  req.Header.Set("Content-Type", "application/json")
  resp, err := http.DefaultClient.Do(req)
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "jobs": [
        {
          "url": "https://linkedin.com/jobs/view/4021558832",
          "title": "Senior Software Engineer, Inference",
          "company": { "name": "Anthropic", "url": "https://linkedin.com/company/anthropic" },
          "location": "San Francisco, CA",
          "workplace_type": "hybrid",
          "seniority": "senior",
          "posted_at": "2026-07-02T09:12:00Z",
          "applicants_count": 214,
          "description_snippet": "We're looking for engineers to scale…"
        }
      ]
    },
    "meta": {
      "creditsUsed": 12,
      "creditsRemaining": 98403,
      "billed": true,
      "reason": "12_jobs_returned",
      "requestId": "req_b5t20akq",
      "latencyMs": 5200
    }
  }
  ```
</ResponseExample>

<Tip>
  Want new postings pushed to you instead of polling? Create a `company_jobs` [Signal](/concepts/signals) — recipe #4 in the [cookbook](/guides/signals-cookbook).
</Tip>

**Rate limit:** counts as 1 request against your [tier limit](/rate-limits).
