Search open jobs
const url = 'https://app.backspin.io/v1/jobs?metro=denver&workplace=onsite&employment_type=full_time&pay_from=ats&fields=full&limit=100';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://app.backspin.io/v1/jobs?metro=denver&workplace=onsite&employment_type=full_time&pay_from=ats&fields=full&limit=100' \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Backspin category. Repeat to match any of several
ISO 3166-1 alpha-2 country of any of the job’s locations
State or province code of any of the job’s locations; with country, of the same location
Backspin metro tag
Only jobs with this workplace, stated or read from the job’s text
Only jobs with this employment type, stated or read from the job’s text
Only jobs with pay, stated by the ATS or read from the description (pay.from says which)
Only jobs whose pay came from here
Posted on or after this date (2026-10-01, UTC) or RFC 3339 time; jobs with no stated date count from when Backspin first saw them
Every word must appear in the title or company name; up to 10 words
Leave out jobs with this flag, or with hourly_pay, jobs paid per hour (jobs without pay stay). Repeat to leave out several
Only jobs paid per one of these periods; jobs without pay never match. Repeat to allow several
Only jobs paid in this ISO 4217 currency
Only jobs whose top of range (max, else min) is at least this, in the job’s own period and currency. Needs exactly one pay_period and a pay_currency
Summary: description_html is null, for a much smaller answer
Jobs per page
Next_cursor from the previous page
Responses
Section titled “Responses”OK
object
object
The employer’s job page
Backspin categories: account_executive, sales, electrical
Null while the job is open
object
Filled once Backspin knows it
The employer’s HTML as published; sanitize before rendering. Null with fields=summary
object
Ats (the employer’s structured field), title or description
Full_time, part_time, contract, temporary or internship
When Backspin first saw the job
object
The job says pay is commission only
The job says the work is selling door to door
The title sells on a store floor, car lot or showroom
Backspin’s id, stable forever
object
ISO 3166-1 alpha-2 where known
State or province; US states as two-letter codes
As the employer wrote it, or the parts joined
Backspin metro tags
object
ISO 4217
Ats: the employer’s structured pay; description: read from the job description
Year, month, week, day or hour
Ats, description or amount; amount: judged from the size of the amounts
The exact description text pay was read from, when from is description
When the employer says it was posted; null when unstated
Intern, entry, mid, senior, lead, manager, director, vp or executive, read from the title; null when the title names no level
object
The employer’s own id for the job on that platform
The employer’s applicant tracking system
When the listing last changed
object
Ats (the employer’s structured field), location, title or description
Onsite, remote or hybrid
Pass as cursor for the next page; null on the last page
Example
{ "jobs": [ { "apply_url": "https://pyebarkerfire.wd1.myworkdayjobs.com/en-US/PB_V2/job/Denver-CO/Fire-Alarm-Technician_JR113627", "categories": [ "electrical" ], "company": { "domain": "pyebarkerfs.com", "name": "Pye-Barker Fire & Safety" }, "department": "Service", "description_html": "<p>Install and service fire alarm systems.</p>", "employment_type": { "from": "ats", "value": "full_time" }, "first_seen_at": "2026-10-28T18:00:00Z", "flags": { "commission_only": false, "door_to_door": false, "retail_sales": false }, "id": "bsj_8f3k2m9q", "locations": [ { "city": "Denver", "country": "US", "region": "CO", "text": "Denver, CO" } ], "metros": [ "denver" ], "pay": { "currency": "USD", "from": "ats", "max": 42, "min": 32, "period": "hour", "period_from": "ats" }, "posted_at": "2026-10-28T14:02:00Z", "seniority": "senior", "source": { "job_id": "JR113627", "platform": "workday" }, "status": "open", "title": "Fire Alarm Technician", "updated_at": "2026-10-30T06:00:00Z", "workplace": { "from": "ats", "value": "onsite" } } ], "next_cursor": "ajEuMTI4NzM"}Unauthorized
object
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}Unprocessable Entity
object
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}Too Many Requests
object
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}Internal Server Error
object
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}Service Unavailable
object
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}