> For the complete documentation index, see [llms.txt](https://developer.parvenu.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.parvenu.io/search/job-search/create-a-schedule.md).

# Create a Schedule

Save a job search that re-runs on a schedule into a list.

<mark style="color:green;">`POST`</mark> `/jobs_schedule_create`

Saves a LinkedIn job search that runs again on a schedule. Each run saves the **new** jobs into `listname`. With `find_contact` on, each run also finds people with the given `titles` at the hiring companies and adds them, with their emails, to the same list.

{% hint style="info" %}
**Saving is free.** Each run is billed like any [Job Search](/search/job-search/list-lookup.md): **0.1 credit per new job saved**. Jobs already on the list are skipped and not charged (`unique_jobs`, on by default). With `find_contact` on, the people and emails found are billed at their normal rates.
{% endhint %}

{% hint style="success" %}
**Nothing runs now unless you ask.** By default the first run is on `next_run`. Send `run_now: true` to also start the first run straight away. The balance is checked first; if it cannot cover the jobs, the call returns `400` and nothing is saved.
{% endhint %}

{% hint style="warning" %}
**One schedule per list.** A `listname` that already has a schedule returns `409`. Change that schedule with [Update or Pause a Schedule](/search/job-search/update-or-pause-a-schedule.md) instead.
{% endhint %}

## Headers

| Name         | Value              |
| ------------ | ------------------ |
| Content-Type | `application/json` |

## Body

| Name                       | Type    | Description                                                                                                                                                                                                                              |
| -------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `api_key`                  | string  | **Required.** Your API key.                                                                                                                                                                                                              |
| `listname`                 | string  | **Required.** The list every run saves into.                                                                                                                                                                                             |
| `keywords`                 | string  | **Required.** LinkedIn job keywords, e.g. `roofing estimator`.                                                                                                                                                                           |
| `job_location`             | string  | **Required.** A LinkedIn location name: `United States`, `Texas, United States`, `Toronto, Ontario, Canada`.                                                                                                                             |
| `schedule_type`            | string  | `daily`, `weekly` or `every_x_days` (default).                                                                                                                                                                                           |
| `run_every_x_days`         | integer | With `every_x_days`. Default `7`.                                                                                                                                                                                                        |
| `schedule_days`            | array   | With `weekly`: weekday names, e.g. `["Monday", "Thursday"]`.                                                                                                                                                                             |
| `run_now`                  | boolean | Also start the first run now. Default `false`.                                                                                                                                                                                           |
| `time_posted`              | string  | `Any Time`, `Past 24 Hours`, `Past Week` or `Past Month`. Leave it out and it matches the timing: `daily` searches the past 24 hours, `weekly` the past week, `every_x_days` the past 24 hours, week or month, whichever covers the gap. |
| `job_types`                | array   | Any of `Full-time`, `Part-time`, `Contract`, `Temporary`, `Volunteer`, `Internship`.                                                                                                                                                     |
| `experience_levels`        | array   | Any of `Internship`, `Entry level`, `Associate`, `Mid-Senior level`, `Director`, `Executive`.                                                                                                                                            |
| `salary_min`               | string  | `Any`, `$40,000+` ... `$200,000+`.                                                                                                                                                                                                       |
| `max_results`              | integer | Most jobs per run, `10` to `5000`. Default `100`.                                                                                                                                                                                        |
| `unique_jobs`              | boolean | Skip jobs already on the list. Default `true`.                                                                                                                                                                                           |
| `exclude_staffing_company` | boolean | Drop jobs posted by staffing and recruiting firms.                                                                                                                                                                                       |
| `find_contact`             | boolean | After each run, find people at the hiring companies. Needs `titles`.                                                                                                                                                                     |
| `titles`                   | array   | Job titles to find, e.g. `["Owner", "CEO"]`.                                                                                                                                                                                             |
| `company_size`             | array   | Only hiring companies of these sizes: `1-10`, `11-50`, `51-200`, `201-500`, `501-1000`, `1001-5000`, `5001-10000`, `10001+`.                                                                                                             |
| `contact_location`         | array   | Only people in these places, e.g. `["united states"]`.                                                                                                                                                                                   |
| `max_contacts`             | integer | Most people to find per run.                                                                                                                                                                                                             |
| `find_job_posters`         | boolean | Also find the person who posted each job.                                                                                                                                                                                                |
| `is_active`                | boolean | Send `false` to save it paused.                                                                                                                                                                                                          |

## Response

| Field               | Description                                                                                |
| ------------------- | ------------------------------------------------------------------------------------------ |
| `data.schedule`     | The saved schedule, same fields as [List Schedules](/search/job-search/list-schedules.md). |
| `data.run_started`  | `true` when `run_now` started the first run.                                               |
| `credits_estimated` | With `run_now`: the most the jobs part of the run can cost (`0.1 x max_results`).          |
| `credits_used`      | Always `0`. The run itself is billed as it happens.                                        |

## Example

This weekly schedule sends no `time_posted`, so it is saved as `Past Week`.

{% tabs %}
{% tab title="Input" %}

```json
{
  "api_key": "your_api_key",
  "listname": "Roofing Estimator Jobs TX",
  "keywords": "roofing estimator",
  "job_location": "Texas, United States",
  "max_results": 10,
  "find_contact": true,
  "titles": ["Owner", "CEO", "President"],
  "max_contacts": 2,
  "contact_location": ["united states"],
  "schedule_type": "weekly",
  "schedule_days": ["monday"],
  "run_now": true
}
```

{% endtab %}

{% tab title="Output" %}

```json
{
  "status": "success",
  "credits_used": 0.0,
  "credits_remaining": 6014.5,
  "credits_estimated": 1.0,
  "message": "Saved. The first run has started.",
  "data": {
    "schedule": {
      "schedule_id": 62,
      "list_name": "Roofing Estimator Jobs TX",
      "is_active": true,
      "schedule_type": "weekly",
      "run_every_x_days": null,
      "schedule_days": ["Monday"],
      "last_run": "2026-09-29",
      "next_run": "2026-10-05",
      "keywords": "roofing estimator",
      "job_location": "Texas, United States",
      "time_posted": "Past Week",
      "max_results": 10,
      "find_contact": true,
      "titles": ["Owner", "CEO", "President"],
      "max_contacts": 2,
      "contact_location": ["united states"]
    },
    "run_started": true
  }
}
```

{% endtab %}
{% endtabs %}

See what the run found with [Schedule Run History](/search/job-search/schedule-run-history.md).
