---
title: "List job listings"
method: GET
path: "/api/jobs"
tags: ["Jobs"]
---

# List job listings

`GET /api/jobs`

## Request

- Base URL: `https://noozra.com`
- URL: `https://noozra.com/api/jobs`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/noozra/apis/noozra-news-api/docs/api/jobs/get.ts> (a function with typed inputs; its response is checked against the schema)

Newest-first job listings: jobs read from employers' own job boards, jobs posted on Noozra, and jobs from We Work Remotely, RemoteOK and Arbeitnow. A listing from another job board carries what identifies the job and a link to the original, never its text; an employer's own listing carries the first 500 characters of its text and its posting as `apply_url`; a job posted on Noozra carries its description and application link. Cursor-paginate by passing the previous response's `next_before` + `next_before_id` back as `before` + `before_id`. Open listings posted in the last 14 days for every caller; API Pro reaches every listing, and closed ones with `include_closed=true`.

## Query parameters

- `category` string
- `remote` boolean
- `country` string
- `q` string
- `company` string
- `from_employer` boolean
- `include_closed` boolean
- `after` string, date-time
- `before` string, date-time
- `before_id` string, uuid
- `limit` integer

## Response `200`

OK

- JobsResponse
  - `count` integer, required
  - `jobs` Job[], required
    - `apply_url` string, uri: Only for an employer's own listing or a job posted on Noozra: where to apply.
    - `categories` string[], required: Category slugs; ["any"] = listed under every category.
    - `company` string, required
    - `country` string, nullable, required: ISO 3166-1 alpha-2 when the listing names a country; else null. An employer's listing names one when its location does; listings from other job boards name none.
    - `description` string: Only for an employer's own listing (its first 500 characters) or a job posted on Noozra: the employer's own text. A listing from another job board never carries its text; follow `url`.
    - `employment_type` 'FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'TEMPORARY' | 'INTERN' | 'OTHER' | 'null', nullable, required: schema.org employmentType, or null when the listing did not say.
    - `expires_at` string, date-time, required: When the listing closes.
    - `from_employer` boolean, required: Read from the employer's own job board.
    - `hybrid` boolean, required: Part on site, part remote. Never true alongside `remote`.
    - `id` string, uuid, required
    - `location` string, required: Where the job is, as the listing says ("Remote" for most).
    - `noozra_url` string, uri, required: The listing's page on Noozra.
    - `posted_at` string, date-time, required
    - `remote` boolean, required: Fully remote.
    - `salary` JobSalary
      - `currency` string, nullable: ISO 4217, such as USD.
      - `max` integer, nullable
      - `min` integer, nullable
    - `source` string, required: Where the listing comes from: "{Company} careers" for an employer's own job board, We Work Remotely, RemoteOK, Arbeitnow, or Noozra. Name it when you show the listing.
    - `title` string, required
    - `url` string, uri, required: The original listing; for a job posted on Noozra, its Noozra page. Link to this.
  - `next_before` string, date-time, nullable, required: Pass as `before` for the next page; null at the end.
  - `next_before_id` string, uuid, nullable, required: Pass as `before_id` with `before`.

## Other responses

- `400`: Unknown category, a country that is not an ISO 3166-1 alpha-2 code, a `q` or `company` over 200 characters, a `remote`, `from_employer` or `include_closed` other than true or false, or a date outside 1970–9999
- `401`: No API key, or an invalid or revoked one
- `403`: `after` reaches past the last 14 days, or `include_closed=true` was asked: both need API Pro
- `429`: Daily rate limit exceeded (honor the Retry-After header)

## Changes

- **2026-10-29** `e0c2d7df6d6f`: 1 info
  - api tag `Jobs` added
- **2026-10-04** `89d69ee01d0b`: 3 info
  - added the new optional `query` request parameter `company`
  - added the new optional `query` request parameter `from_employer`
  - added the required property `jobs/items/from_employer` to the response with the `200` status
- **2026-10-03** `26af087dc407`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/noozra/apis/noozra-news-api/changes/api/jobs/get.md)

---

[API](https://skmtc.dev/noozra/apis/noozra-news-api.md) - [All operations](https://skmtc.dev/noozra/apis/noozra-news-api/llms.txt) - [OpenAPI document](https://skmtc.dev/noozra/apis/noozra-news-api/revisions/9067da767e84?raw)
