# JobServe Jobs Scraper (`solidcode/jobserve-scraper`) Actor

\[💰 $2.5 / 1K] Extract IT, engineering & finance jobs from JobServe — title, company, location, salary or day rate, contract vs permanent, posted date, recruiter contact, and apply link. Search by keyword, location, radius, industry, and date across 9 country markets, or paste search URLs.

- **URL**: https://apify.com/solidcode/jobserve-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Jobs, Automation, Developer tools
- **Stats:** 4 total users, 3 monthly users, 40.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## JobServe Jobs Scraper

Pull IT, engineering, and finance job listings from JobServe at scale — contractor day rates and permanent salaries, recruiter contacts, full descriptions, and direct apply links, across nine country markets in one run. Built for recruiters, staffing agencies, and job-market analysts who need JobServe's rich contract and IT market as clean, structured data without copy-pasting listings one page at a time.

### Why This Scraper?

- **Nine JobServe country markets in one actor** — search the UK, US, Canada, Australia, New Zealand, France, Germany, Switzerland, and the UAE, each on its own regional market, from a single input.
- **27 industry sectors to filter by** — IT & Telecommunications, Finance/Accounting/Banking, Engineering, Mining/Energy/Oil & Gas, Legal, Healthcare, Construction, and 20 more, so you keep only the roles that matter.
- **Contract day rates AND permanent salaries** — day-rate-aware parsing captures "£900 - £1000pd" and "£475 p day" as a separate `rate` field while leaving annual salaries in `salary`, so contract and permanent pay never blur together.
- **Recruiter contacts on every enriched job** — turn on full detail and each row carries the recruitment agency name, its JobServe profile link, plus contact name, phone, and email where the advertiser provides them.
- **Five posting-recency windows and eight search radii** — filter down to jobs posted today (or in the last 1–7 days) and search within 1 to 100 miles of any town, city, county, or postcode.
- **Advertiser and remote filters** — split results by recruitment agency vs direct employer, or keep only remote / work-from-home roles.
- **Paste-a-URL mode** — drop any JobServe search or individual job URL straight in and the actor respects the filters already applied on the site, for advanced searches the fields don't cover.
- **De-duplication by job reference** — the same posting listed across several pages or repeated searches collapses to a single row, so you never pay twice for one job.

### Use Cases

**Recruitment & Staffing**
- Feed a fresh pipeline of IT and engineering roles into your ATS every morning
- Capture recruiter and agency contacts to map who is hiring for which skills
- Track competitor agencies by filtering to "Recruitment agencies only"

**Contract Market & Rate Research**
- Benchmark contractor day rates by skill, location, and industry
- Compare contract vs permanent demand for a given role over time
- Spot rate movement early by pulling only jobs posted in the last 1–3 days

**Salary & Market Intelligence**
- Build salary bands for permanent roles across UK regions and nine markets
- Measure hiring demand per industry sector across countries
- Quantify remote-vs-onsite job share for a skill or discipline

**Lead Generation**
- Build outreach lists of hiring companies and agencies with direct contacts
- Identify direct employers advertising without an agency to pitch your services
- Target decision-makers by pairing recruiter names with apply links

**Job Board & Aggregation**
- Populate a niche IT or engineering job board with structured, deduplicated listings
- Keep a live feed of new postings filtered to your audience's sectors
- Syndicate roles with full descriptions and working apply links

### Getting Started

#### Basic Keyword Search

The simplest run — one keyword near a location:

```json
{
    "keywords": ["java developer"],
    "location": "London",
    "maxResults": 50
}
````

#### Filtered Contract Search

Contract roles in IT, posted this week, within 25 miles, with full recruiter contacts:

```json
{
    "keywords": ["devops engineer", "cloud architect"],
    "location": "Manchester",
    "country": "gb",
    "distance": "25",
    "jobType": "2",
    "industries": ["01"],
    "postedSince": "7",
    "includeDescription": true,
    "maxResults": 200
}
```

#### Advanced — Remote, Agencies Only, International

Remote finance roles from recruitment agencies in the United States, fully enriched:

```json
{
    "keywords": ["financial analyst"],
    "location": "New York",
    "country": "us",
    "distance": "50",
    "jobType": "1",
    "industries": ["02"],
    "postedSince": "3",
    "remoteOnly": true,
    "advertisedBy": "AGENCY",
    "includeDescription": true,
    "onlyUniqueJobs": true,
    "maxResults": 500
}
```

#### Paste a JobServe URL

Already built a search on JobServe? Paste the URL and the actor honors its filters:

```json
{
    "startUrls": [
        "https://www.jobserve.com/gb/en/gZEQM"
    ],
    "includeDescription": true,
    "maxResults": 100
}
```

### Input Reference

#### Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keywords` | string\[] | `["java developer"]` | Job titles, skills, or keywords. Each keyword runs its own search. Leave empty to use URLs only. |
| `location` | string | `"London"` | Town, city, county, region, or postcode to search around (e.g. `"Manchester"`, `"EC1A 1BB"`). Applied to every keyword. |
| `country` | string | `"gb"` | JobServe regional market: United Kingdom, United States, Canada, Australia, New Zealand, France, Germany, Switzerland, or United Arab Emirates. |
| `distance` | string | `"50"` | Search radius around the location: 1, 5, 10, 15, 25, 50, 75, or 100 miles. |
| `startUrls` | string\[] | `[]` | Paste full JobServe search or job URLs. Filters already applied on the site are respected. Mix with keyword search freely. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `jobType` | string | `"Any"` | Permanent, Contract, Contract or Permanent, or Part-Time / Temporary / Seasonal. |
| `industries` | string\[] | `[]` | Keep only these sectors — 27 options from IT & Telecommunications to Real Estate & Property. Empty means all industries. |
| `postedSince` | string | `"Any time"` | Only jobs posted Today, or in the Last 1, 2, 3, or 7 days. |
| `remoteOnly` | boolean | `false` | Keep only jobs advertised as remote or work-from-home. |
| `advertisedBy` | string | `"Any advertiser"` | Recruitment agencies only, direct employers only, or both. |

#### Output & Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDescription` | boolean | `false` | Off for fast results. Turn on to fetch each job's full description, recruiter contact, reference, industry, and start date from its own page (slower on large searches). |
| `onlyUniqueJobs` | boolean | `true` | Return each job once even if it appears across several pages or searches. Turn off to keep every copy. |
| `maxResults` | integer | `50` | Cap on total jobs across all searches and URLs. Use `0` for unlimited. Results come a page at a time, so a small cap may return up to a full page more. |

### Output

Every job is one row. Cards come back fast with the core fields; turning on **Fetch Full Job Details** adds the description, recruiter, contacts, reference, and more from each job's own page.

```json
{
    "title": "Senior DevOps Engineer",
    "company": "Acme Technology Ltd",
    "location": "London, UK",
    "salary": null,
    "rate": "£600 - £700 per day",
    "jobType": "Contract",
    "isRemote": true,
    "industry": "IT & Telecommunications",
    "duration": "6 months",
    "startDate": "ASAP",
    "postedDate": "Today",
    "postedDateTime": "2026-07-02T09:14:00",
    "reference": "JS-DEV-88213",
    "recruiter": "BrightHire Recruitment",
    "recruiterUrl": "https://www.jobserve.com/gb/en/rc/BrightHire",
    "contactName": "Sarah Collins",
    "contactPhone": "+44 20 7946 0123",
    "contactEmail": "Sarah.Collins.REF.HASH@apps.jobserve.com",
    "description": "We are seeking a Senior DevOps Engineer to lead our cloud migration...",
    "descriptionHtml": "<div>We are seeking a Senior DevOps Engineer...</div>",
    "applyUrl": "https://www.jobserve.com/gb/en/gZEQM",
    "url": "https://www.jobserve.com/gb/en/gZEQM"
}
```

#### Core Fields

| Field | Type | Description |
|-------|------|-------------|
| `title` | string | Job title |
| `company` | string | Hiring company or posting organisation |
| `location` | string | Job location |
| `salary` | string | Raw annual salary text for permanent roles |
| `rate` | string | Day or hourly rate for contract roles, when distinct from an annual salary |
| `jobType` | string | Permanent, Contract, or Part-Time |
| `isRemote` | boolean | Whether the job reads as remote / work-from-home |
| `postedDate` | string | Human-readable posted date (e.g. "Today") |
| `postedDateTime` | string | ISO timestamp of the posting |

#### Detail & Classification

| Field | Type | Description |
|-------|------|-------------|
| `industry` | string | Industry / sector classification |
| `duration` | string | Contract length for contract roles |
| `startDate` | string | Position start date |
| `reference` | string | JobServe job reference (the de-duplication key) |
| `description` | string | Full job description, plain text |
| `descriptionHtml` | string | Full job description with original HTML formatting |

#### Recruiter & Contact

| Field | Type | Description |
|-------|------|-------------|
| `recruiter` | string | Recruitment agency name |
| `recruiterUrl` | string | Link to the recruiter's JobServe profile |
| `contactName` | string | Recruiter or company contact name |
| `contactPhone` | string | Contact phone, where the advertiser provides one |
| `contactEmail` | string | Contact email, where the advertiser provides one |
| `applyUrl` | string | Direct apply link |
| `url` | string | JobServe permalink for the job |

### Tips for Best Results

- **Turn on Fetch Full Job Details for recruiter contacts and apply links.** Fast mode returns the title, location, salary or rate, job type, and posted date; the reference, recruiter name, contact details, industry, start date, and apply link come only from each job's own page.
- **Contractor day rates appear on contract roles.** Set `jobType` to Contract and the `rate` field fills for roles priced per day or hour; permanent roles carry an annual figure in `salary` instead.
- **Contact phone and email are advertiser-dependent.** Agencies often publish a contact number and a working JobServe relay email; direct employers frequently don't — expect these fields on a meaningful share of enriched rows, not every one.
- **Pick the market that matches your location.** JobServe runs a separate market per country, so set `country` to the market your location and jobs belong to before searching.
- **Give each keyword its own line.** Every keyword runs a full search, so "java developer" and "scala developer" as two entries return two complete result sets in one run.
- **Use the posted-date window for rate and demand tracking.** Filtering to the last 1–3 days each day builds a clean time series of new postings without re-pulling stale listings.
- **Keep De-duplication on for accurate counts.** With `onlyUniqueJobs` on, a job repeated across pages or searches counts once — turn it off only when you deliberately want every copy.

### Pricing

**From $2.50 per 1,000 results** — cheaper than the market's leading JobServe extractor while returning richer data. No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.30 | $0.29 | $0.27 | $0.25 |
| 1,000 | $3.00 | $2.85 | $2.65 | $2.50 |
| 10,000 | $30.00 | $28.50 | $26.50 | $25.00 |
| 100,000 | $300.00 | $285.00 | $265.00 | $250.00 |

A "result" is any job row in the output dataset. Platform fees (compute, storage) are additional and depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate recruitment, market research, and business intelligence. Users are responsible for complying with applicable laws and JobServe's terms of service, including making reasonable-rate requests and handling any personal data — such as recruiter contact details — lawfully and in line with data-protection regulations. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

## `keywords` (type: `array`):

Job titles, skills, or keywords to search for, such as 'java developer', 'project manager', or 'data engineer'. Each keyword runs its own search. Leave empty if you only want to use the URLs below.

## `location` (type: `string`):

Town, city, county, region, or postcode to search around, such as 'London', 'Manchester', or 'EC1A 1BB'. Matches what you would type into JobServe's location box. Applied to every keyword search above.

## `country` (type: `string`):

Which JobServe regional market to search. JobServe runs separate markets per country; pick the one your location and jobs belong to.

## `distance` (type: `string`):

How far around the location to search, in miles.

## `startUrls` (type: `array`):

Optional. Paste full JobServe search or job URLs. Any filters already applied on the site are respected. Useful for advanced searches the fields above don't cover. You can mix URLs with the keyword search.

## `jobType` (type: `string`):

Limit the search to a single employment type. Leave on 'Any' to include permanent, contract, and part-time / temporary roles.

## `industries` (type: `array`):

Keep only jobs in these industry sectors. Leave empty to include every industry.

## `postedSince` (type: `string`):

Only return jobs posted within this time window. Leave on 'Any time' to include all jobs.

## `remoteOnly` (type: `boolean`):

Keep only jobs advertised as remote or work-from-home.

## `advertisedBy` (type: `string`):

Filter by who posted the job: recruitment agencies, direct employers, or both.

## `includeDescription` (type: `boolean`):

Off by default for fast results. Each job card already includes the title, location, salary or rate, job type, and posted date. Turn this on to also fetch the full job description, recruiter contact details, reference number, industry, and start date from each job's own page — this is slower, because every job needs an extra page visit, so expect longer runs on large searches.

## `onlyUniqueJobs` (type: `boolean`):

When on, each job is returned once even if JobServe lists it across several pages or searches. Turn off to keep every copy.

## `maxResults` (type: `integer`):

Cap on the total number of jobs returned across all searches and URLs. Leave blank or use the default (50) for a quick first run; raise it for larger pulls. Set it to 0 only if you want EVERY matching job with no limit — the run then keeps paging until JobServe runs out of jobs, which on a broad search can be tens of thousands of results (and is billed per result), so use 0 deliberately. Results are fetched a page at a time, so a small cap can return up to a full page more than you asked for.

## Actor input object example

```json
{
  "keywords": [
    "java developer"
  ],
  "location": "London",
  "country": "gb",
  "distance": "50",
  "startUrls": [],
  "jobType": "",
  "industries": [],
  "postedSince": "",
  "remoteOnly": false,
  "advertisedBy": "",
  "includeDescription": false,
  "onlyUniqueJobs": true,
  "maxResults": 50
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of jobs with key fields like title, company, location, salary or rate, job type, posted date, and link.

## `details` (type: `string`):

Full per-job detail rows including description, recruiter contact, reference, start date, and apply link.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "java developer"
    ],
    "location": "London",
    "country": "gb",
    "distance": "50",
    "startUrls": [],
    "jobType": "",
    "industries": [],
    "postedSince": "",
    "remoteOnly": false,
    "advertisedBy": "",
    "includeDescription": false,
    "onlyUniqueJobs": true,
    "maxResults": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/jobserve-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["java developer"],
    "location": "London",
    "country": "gb",
    "distance": "50",
    "startUrls": [],
    "jobType": "",
    "industries": [],
    "postedSince": "",
    "remoteOnly": False,
    "advertisedBy": "",
    "includeDescription": False,
    "onlyUniqueJobs": True,
    "maxResults": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/jobserve-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "java developer"
  ],
  "location": "London",
  "country": "gb",
  "distance": "50",
  "startUrls": [],
  "jobType": "",
  "industries": [],
  "postedSince": "",
  "remoteOnly": false,
  "advertisedBy": "",
  "includeDescription": false,
  "onlyUniqueJobs": true,
  "maxResults": 50
}' |
apify call solidcode/jobserve-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solidcode/jobserve-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "JobServe Jobs Scraper",
        "description": "[💰 $2.5 / 1K] Extract IT, engineering & finance jobs from JobServe — title, company, location, salary or day rate, contract vs permanent, posted date, recruiter contact, and apply link. Search by keyword, location, radius, industry, and date across 9 country markets, or paste search URLs.",
        "version": "1.0",
        "x-build-id": "KwwWN4MfAzPOpR9zz"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~jobserve-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-jobserve-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solidcode~jobserve-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-jobserve-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solidcode~jobserve-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-jobserve-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "Search Keywords",
                        "type": "array",
                        "description": "Job titles, skills, or keywords to search for, such as 'java developer', 'project manager', or 'data engineer'. Each keyword runs its own search. Leave empty if you only want to use the URLs below.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Town, city, county, region, or postcode to search around, such as 'London', 'Manchester', or 'EC1A 1BB'. Matches what you would type into JobServe's location box. Applied to every keyword search above."
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "gb",
                            "us",
                            "ca",
                            "au",
                            "nz",
                            "fr",
                            "de",
                            "ch",
                            "ae"
                        ],
                        "type": "string",
                        "description": "Which JobServe regional market to search. JobServe runs separate markets per country; pick the one your location and jobs belong to.",
                        "default": "gb"
                    },
                    "distance": {
                        "title": "Search Radius",
                        "enum": [
                            "1",
                            "5",
                            "10",
                            "15",
                            "25",
                            "50",
                            "75",
                            "100"
                        ],
                        "type": "string",
                        "description": "How far around the location to search, in miles.",
                        "default": "50"
                    },
                    "startUrls": {
                        "title": "JobServe Search URLs",
                        "type": "array",
                        "description": "Optional. Paste full JobServe search or job URLs. Any filters already applied on the site are respected. Useful for advanced searches the fields above don't cover. You can mix URLs with the keyword search.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "jobType": {
                        "title": "Job Type",
                        "enum": [
                            "",
                            "1",
                            "2",
                            "3",
                            "8"
                        ],
                        "type": "string",
                        "description": "Limit the search to a single employment type. Leave on 'Any' to include permanent, contract, and part-time / temporary roles.",
                        "default": ""
                    },
                    "industries": {
                        "title": "Industries",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Keep only jobs in these industry sectors. Leave empty to include every industry.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "01",
                                "02",
                                "03",
                                "04",
                                "06",
                                "07",
                                "08",
                                "09",
                                "10",
                                "11",
                                "12",
                                "13",
                                "14",
                                "15",
                                "16",
                                "17",
                                "18",
                                "19",
                                "20",
                                "21",
                                "22",
                                "23",
                                "24",
                                "25",
                                "26",
                                "27",
                                "28"
                            ],
                            "enumTitles": [
                                "IT & Telecommunications",
                                "Finance, Accounting & Banking",
                                "Engineering",
                                "Sales & Marketing",
                                "Office & Administration",
                                "Legal",
                                "Healthcare & Medical",
                                "Call Centre & Customer Services",
                                "HR & Recruitment",
                                "Construction & Civil Engineering",
                                "Transport & Logistics",
                                "Advertising, Media & Entertainment",
                                "Food & Hospitality",
                                "Mining, Energy, Oil & Gas",
                                "Science, Biotech & Pharmaceuticals",
                                "Retail & Consumer Products",
                                "Defence, Military & Armed Forces",
                                "Travel & Tourism",
                                "Education",
                                "Manufacturing",
                                "Trades & Services",
                                "Self Employment",
                                "Community & Sport",
                                "Consulting & Corporate Strategy",
                                "Agriculture, Forestry & Fishing",
                                "Real Estate & Property",
                                "Other"
                            ]
                        },
                        "default": []
                    },
                    "postedSince": {
                        "title": "Date Posted",
                        "enum": [
                            "",
                            "0",
                            "1",
                            "2",
                            "3",
                            "7"
                        ],
                        "type": "string",
                        "description": "Only return jobs posted within this time window. Leave on 'Any time' to include all jobs.",
                        "default": ""
                    },
                    "remoteOnly": {
                        "title": "Remote Jobs Only",
                        "type": "boolean",
                        "description": "Keep only jobs advertised as remote or work-from-home.",
                        "default": false
                    },
                    "advertisedBy": {
                        "title": "Advertised By",
                        "enum": [
                            "",
                            "AGENCY",
                            "COMPANY"
                        ],
                        "type": "string",
                        "description": "Filter by who posted the job: recruitment agencies, direct employers, or both.",
                        "default": ""
                    },
                    "includeDescription": {
                        "title": "Fetch Full Job Details",
                        "type": "boolean",
                        "description": "Off by default for fast results. Each job card already includes the title, location, salary or rate, job type, and posted date. Turn this on to also fetch the full job description, recruiter contact details, reference number, industry, and start date from each job's own page — this is slower, because every job needs an extra page visit, so expect longer runs on large searches.",
                        "default": false
                    },
                    "onlyUniqueJobs": {
                        "title": "Only Unique Jobs",
                        "type": "boolean",
                        "description": "When on, each job is returned once even if JobServe lists it across several pages or searches. Turn off to keep every copy.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Maximum Results",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on the total number of jobs returned across all searches and URLs. Leave blank or use the default (50) for a quick first run; raise it for larger pulls. Set it to 0 only if you want EVERY matching job with no limit — the run then keeps paging until JobServe runs out of jobs, which on a broad search can be tens of thousands of results (and is billed per result), so use 0 deliberately. Results are fetched a page at a time, so a small cap can return up to a full page more than you asked for.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
