Skip to content

Create Search Job

POST
/v1/search-jobs
agent-data call f9a6ec16-0bfd-44d8-b3ee-073776745ee7 search-jobs --keywords <keywords> [--location New York] [--limit <limit>] [--fields <fields>] [--published_on_or_after <published_on_or_after>] [--source <source>] [--cursor <cursor>]

Single-source job search. Every request targets exactly one source: linkedin, ashby, greenhouse, lever. If source is omitted the API defaults to linkedin. This route never fans out across multiple sources. LinkedIn searches live upstream; Ashby, Greenhouse, and Lever search the service-refreshed local postings store. Returns up to limit summary rows. For Ashby/Greenhouse/Lever, keyword terms are stemmed and searched across title/company/department/team/location and the full description; postings matching ALL terms rank first, then progressively relaxed matches (floor: half the terms), newest-first within each tier. Pagination order is deterministic; page through with cursor. Each row carries an id (format jp_<12-hex>) AND a source_url — keep BOTH; you’ll need them as a pair when calling get-posting. Use fields=id,title,company_name (comma-separated) to request a subset of fields and reduce response size. Allowed fields: [‘capture_method’, ‘company_name’, ‘department_name’, ‘detail_available’, ‘employment_type’, ‘id’, ‘is_remote’, ‘location_display’, ‘missing_fields’, ‘posted_at’, ‘published_at’, ‘salary_display’, ‘search_status’, ‘source’, ‘source_id’, ‘source_url’, ‘staleness_status’, ‘team_name’, ‘title’, ‘workplace_type’]. Errors: 422 validation_error (param fails type/range validation; details[].loc identifies the field); 400 validation_error (fields= or source= violates the request contract); 503 upstream_unavailable (the chosen upstream source failed, retryable:true — caller decides backoff).

keywords
required
Keywords

Search terms. For ashby/greenhouse/lever: terms are stemmed tokens matched against title, company, department, team, location, and the full job description. Results return postings matching all terms first, then progressively fewer (never below half), ordered newest-first within each match tier. A trailing * makes a term a prefix (scrap* matches scraping/scraper). Max 8 terms (422 above). Punctuation is ignored. linkedin: forwarded verbatim to LinkedIn’s own search.

string
>= 1 characters

Search terms. For ashby/greenhouse/lever: terms are stemmed tokens matched against title, company, department, team, location, and the full job description. Results return postings matching all terms first, then progressively fewer (never below half), ordered newest-first within each match tier. A trailing * makes a term a prefix (scrap* matches scraping/scraper). Max 8 terms (422 above). Punctuation is ignored. linkedin: forwarded verbatim to LinkedIn’s own search.

location
Any of:
string

Optional location filter, e.g. New York. Accepts a city, state/region, or country (names, common aliases like NYC/SF, ISO codes like US/GBR, and native spellings like München all resolve via GeoNames). linkedin: forwarded to LinkedIn’s own location filter. ashby/greenhouse/lever: matched against each posting’s resolved location with hierarchical containment — a country matches every city in it. ‘Remote’ matches remote-flagged postings. Unrecognized strings fall back to substring match on the posting’s displayed location. Qualify ambiguous cities (‘London, UK’).

limit
Limit

Maximum number of results to return (1-100).

integer
default: 20 >= 1 <= 100

Maximum number of results to return (1-100).

fields
Any of:
string

Optional comma-separated list of fields to include per row. Allowed: [‘capture_method’, ‘company_name’, ‘department_name’, ‘detail_available’, ‘employment_type’, ‘id’, ‘is_remote’, ‘location_display’, ‘missing_fields’, ‘posted_at’, ‘published_at’, ‘salary_display’, ‘search_status’, ‘source’, ‘source_id’, ‘source_url’, ‘staleness_status’, ‘team_name’, ‘title’, ‘workplace_type’].

published_on_or_after
Any of:
string format: date

Inclusive recency filter as ISO YYYY-MM-DD. Keeps only jobs whose effective publication timestamp (later of published_at and posted_at, using whichever is present) is on or after this date. Jobs with unknown publication date are excluded when this filter is set.

source
Any of:
string

Single source to search. Allowed: linkedin, ashby, greenhouse, lever. Omitted defaults to linkedin. Comma-separated or repeated values are rejected with 400 validation_error; this route never fans out across sources.

cursor
Cursor

Opaque continuation cursor for store-backed pagination.

string

Opaque continuation cursor for store-backed pagination.

Search results.

Media type application/json
SearchJobApiResponse
object
data
required
SearchJobData
object
query
required
SearchJobQuery
object
source
required
Source
string
keywords
required
Keywords
string
location
Any of:
string
published_on_or_after
Any of:
string format: date
status
required
Status
string
results
required
Results
Array<object>
SearchJobRow

One row in a search-jobs result. All fields optional because sparse fieldsets (?fields=id,title) may omit any subset.

object
id
Any of:
string
title
Any of:
string
source
Any of:
string
is_remote
Any of:
boolean
posted_at
Any of:
string format: date-time
source_id
Any of:
string
team_name
Any of:
string
source_url
Any of:
string
company_name
Any of:
string
published_at
Any of:
string format: date-time
search_status
Any of:
string
capture_method
Any of:
string
missing_fields
Any of:
Array<string>
salary_display
Any of:
string
workplace_type
Any of:
string
department_name
Any of:
string
employment_type
Any of:
string
detail_available
Any of:
boolean
location_display
Any of:
string
staleness_status
Any of:
string
warnings
Warnings
Array<string>
default:
pagination
Any of:
SearchPagination
object
has_more
required
Has More
boolean
next_cursor
required
Any of:
string
started_at
Any of:
string format: date-time
completed_at
Any of:
string format: date-time
meta
required
SearchJobMeta
object
request_id
required
Request Id
string
Example
{
"data": {
"warnings": []
}
}

Service-side request contract error. error.param identifies the offending field when available.

Media type application/json
ErrorResponse
object
error
required
ErrorBody
object
body
Any of:
Body
code
required
Code
string
param
Any of:
string
source
Source
string
default: service
Allowed values: upstream gateway cli aws_authorizer service client
status
required
Status
integer
details
Any of:
Array<object>
object
key
additional properties
any
message
required
Message
string
retryable
required
Retryable
boolean
request_id
required
Request Id
string
Example
{
"error": {
"source": "upstream"
}
}

The upstream source responded successfully but no posting data was available for the requested resource.

Media type application/json
ErrorResponse
object
error
required
ErrorBody
object
body
Any of:
Body
code
required
Code
string
param
Any of:
string
source
Source
string
default: service
Allowed values: upstream gateway cli aws_authorizer service client
status
required
Status
integer
details
Any of:
Array<object>
object
key
additional properties
any
message
required
Message
string
retryable
required
Retryable
boolean
request_id
required
Request Id
string
Example
{
"error": {
"source": "upstream"
}
}

Client validation error. details[] identifies the offending field.

Media type application/json
ErrorResponse
object
error
required
ErrorBody
object
body
Any of:
Body
code
required
Code
string
param
Any of:
string
source
Source
string
default: service
Allowed values: upstream gateway cli aws_authorizer service client
status
required
Status
integer
details
Any of:
Array<object>
object
key
additional properties
any
message
required
Message
string
retryable
required
Retryable
boolean
request_id
required
Request Id
string
Example
{
"error": {
"source": "upstream"
}
}

Upstream dependency unavailable (retryable:true). The caller decides retry cadence.

Media type application/json
ErrorResponse
object
error
required
ErrorBody
object
body
Any of:
Body
code
required
Code
string
param
Any of:
string
source
Source
string
default: service
Allowed values: upstream gateway cli aws_authorizer service client
status
required
Status
integer
details
Any of:
Array<object>
object
key
additional properties
any
message
required
Message
string
retryable
required
Retryable
boolean
request_id
required
Request Id
string
Example
{
"error": {
"source": "upstream"
}
}