---
title: "Search Jobs Endpoint"
method: POST
path: "/search/jobs"
tags: ["jobs"]
---

# Search Jobs Endpoint

`POST /search/jobs`

## Request

- Base URL: `https://api.dataforb2b.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.dataforb2b.ai/search/jobs`
- Auth: none declared

Search job postings across platforms.

**Authentication:** header `api_key: <your_api_key>`

**Pricing:** 1 unit of `basic_info` credits per 10 job postings returned.

**Platforms:** `linkedin`, `indeed`.

**Available filters:**

| Filter | Description | Example |
|--------|-------------|---------|
| `keyword` | Job title / skill / company | "software engineer" |
| `location` | Location | "Paris, France" |
| `country` | Country for Indeed (ignored by LinkedIn) | usa, france, uk, germany |
| `distance` | Radius in miles | 25 |
| `job_type` | Employment type | fulltime, parttime, contract, internship |
| `work_type` | Work arrangement | onsite, remote, hybrid |
| `experience_level` | Seniority (LinkedIn only) | entry_level, mid_senior, director |
| `date_posted` | Freshness | past_24h, past_week, past_month |
| `company_ids` | LinkedIn company IDs (LinkedIn only) | "1441,1035" |
| `fetch_description` | Include full JD per job (LinkedIn: slower) | true |

Notes: LinkedIn uses `location` (guest API); Indeed uses `country` (+ `location`).
Indeed returns the description inline (no extra latency); LinkedIn fetches it
per-job when `fetch_description=true` (slower). On Indeed, `date_posted` filters
by date-on-Indeed and cannot be combined with `job_type`/`work_type`.

**Example request:**
```json
{
    "platform": "linkedin",
    "keyword": "backend engineer",
    "location": "Paris, France",
    "job_type": "fulltime",
    "date_posted": "past_week",
    "count": 25
}
```

## Headers

- `api-key` string, nullable

## Request body

- SearchJobsRequest: Request for searching job postings across platforms. Example: { "platform": "linkedin", "keyword": "backend engineer", "location": "Paris, France", "job_type": "fulltime", "date_posted": "past_week", "count": 25 }
  - `platform` string: Job platform to search: 'linkedin' or 'indeed'.
  - `keyword` string, nullable: Search keyword (job title, skill, company, ...)
  - `location` string, nullable: Location, e.g. "Paris, France" or "United States"
  - `country` string: Country for Indeed (e.g. usa, france, uk, germany). Ignored by LinkedIn (uses location).
  - `distance` integer, nullable: Search radius in miles around the location
  - `job_type` string, nullable: Employment type: fulltime, parttime, contract, temporary, internship
  - `work_type` string, nullable: Work arrangement: onsite, remote, hybrid
  - `experience_level` string, nullable: Seniority (LinkedIn only): internship, entry_level, associate, mid_senior, director, executive
  - `date_posted` string, nullable: Freshness: past_24h, past_week, past_month
  - `company_ids` string, nullable: Comma-separated company ids to restrict the search (LinkedIn only). Accepts encoded org ids (org_xxx, as returned by /typeahead?type=company and /search/companies) and/or raw numeric LinkedIn ids.
  - `company_name` string, nullable: Company name to restrict the search. LinkedIn: resolved to the matching company (most-followed) — a strict employer filter. Indeed: used as the search keyword (approximate). Ignored if company_ids is provided.
  - `fetch_description` boolean: Include the full job description on each result (LinkedIn: slower, O(n) extra requests; Indeed: inline, no extra cost)
  - `offset` integer: Number of results to skip (pagination)
  - `count` integer: Number of job postings to return (max 100 per request)

## Response `200`

Successful Response

- SearchJobsResponse: Response for job search (same envelope as /search/posts).
  - `total` integer: Number of job postings found so far (lower bound when has_next is true)
  - `offset` integer: Current offset
  - `count` integer: Number of results returned
  - `has_next` boolean: Whether more results are available
  - `credits_used` number: Credits used for this search
  - `results` JobResult[]: Job posting results
    - `job_id` string, required: Platform job id
    - `platform` string, required: Source platform (linkedin, indeed)
    - `title` string, nullable
    - `job_url` string, nullable
    - `employment_type` string, nullable
    - `seniority_level` string, nullable
    - `job_function` string, nullable
    - `is_remote` boolean, nullable
    - `company_name` string, nullable
    - `company_url` string, nullable
    - `company_logo_url` string, nullable
    - `industry` string, nullable
    - `location` string, nullable
    - `salary` string, nullable
    - `date_posted` string, nullable
    - `posted_days_ago` integer, nullable
    - `description` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/dataforb2b/apis/dataforb2b-api.md) · [All operations](https://skmtc.dev/dataforb2b/apis/dataforb2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dataforb2b/apis/dataforb2b-api/revisions/24ea79caa1a1?raw)
