Export Jobs
curl --request POST \
--url https://api.hirebase.org/v2/jobs/export \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"search": {
"job_titles": [
"<string>"
],
"keywords": [
"<string>"
],
"job_board": "<string>",
"location_types": [
"<string>"
],
"geo_locations": [
{
"city": "<string>",
"region": "<string>",
"country": "<string>"
}
],
"geofilter_params": {
"mode": "<string>",
"radius": 123,
"unit": "<string>"
},
"experience": [
"<string>"
],
"yoe": {
"min": 123,
"max": 123
},
"company_name": "<string>",
"company_slug": "<string>",
"salary": {
"min": 123,
"max": 123
},
"job_types": [
"<string>"
],
"job_category": [
"<string>"
],
"company_types": [
"<string>"
],
"industry": [
"<string>"
],
"date_posted": "<string>",
"visa": "<string>",
"sort_by": "<string>",
"sort_order": "<string>",
"currency": "<string>",
"days_ago": 123,
"include_no_salary": "<string>",
"include_yoe": "<string>",
"hide_recruiting_agencies": "<string>",
"return_raw_description": "<string>",
"page": 123,
"limit": 123
},
"notify": true,
"format": "<string>"
}
'import requests
url = "https://api.hirebase.org/v2/jobs/export"
payload = {
"search": {
"job_titles": ["<string>"],
"keywords": ["<string>"],
"job_board": "<string>",
"location_types": ["<string>"],
"geo_locations": [
{
"city": "<string>",
"region": "<string>",
"country": "<string>"
}
],
"geofilter_params": {
"mode": "<string>",
"radius": 123,
"unit": "<string>"
},
"experience": ["<string>"],
"yoe": {
"min": 123,
"max": 123
},
"company_name": "<string>",
"company_slug": "<string>",
"salary": {
"min": 123,
"max": 123
},
"job_types": ["<string>"],
"job_category": ["<string>"],
"company_types": ["<string>"],
"industry": ["<string>"],
"date_posted": "<string>",
"visa": "<string>",
"sort_by": "<string>",
"sort_order": "<string>",
"currency": "<string>",
"days_ago": 123,
"include_no_salary": "<string>",
"include_yoe": "<string>",
"hide_recruiting_agencies": "<string>",
"return_raw_description": "<string>",
"page": 123,
"limit": 123
},
"notify": True,
"format": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
search: {
job_titles: ['<string>'],
keywords: ['<string>'],
job_board: '<string>',
location_types: ['<string>'],
geo_locations: [{city: '<string>', region: '<string>', country: '<string>'}],
geofilter_params: {mode: '<string>', radius: 123, unit: '<string>'},
experience: ['<string>'],
yoe: {min: 123, max: 123},
company_name: '<string>',
company_slug: '<string>',
salary: {min: 123, max: 123},
job_types: ['<string>'],
job_category: ['<string>'],
company_types: ['<string>'],
industry: ['<string>'],
date_posted: '<string>',
visa: '<string>',
sort_by: '<string>',
sort_order: '<string>',
currency: '<string>',
days_ago: 123,
include_no_salary: '<string>',
include_yoe: '<string>',
hide_recruiting_agencies: '<string>',
return_raw_description: '<string>',
page: 123,
limit: 123
},
notify: true,
format: '<string>'
})
};
fetch('https://api.hirebase.org/v2/jobs/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hirebase.org/v2/jobs/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'search' => [
'job_titles' => [
'<string>'
],
'keywords' => [
'<string>'
],
'job_board' => '<string>',
'location_types' => [
'<string>'
],
'geo_locations' => [
[
'city' => '<string>',
'region' => '<string>',
'country' => '<string>'
]
],
'geofilter_params' => [
'mode' => '<string>',
'radius' => 123,
'unit' => '<string>'
],
'experience' => [
'<string>'
],
'yoe' => [
'min' => 123,
'max' => 123
],
'company_name' => '<string>',
'company_slug' => '<string>',
'salary' => [
'min' => 123,
'max' => 123
],
'job_types' => [
'<string>'
],
'job_category' => [
'<string>'
],
'company_types' => [
'<string>'
],
'industry' => [
'<string>'
],
'date_posted' => '<string>',
'visa' => '<string>',
'sort_by' => '<string>',
'sort_order' => '<string>',
'currency' => '<string>',
'days_ago' => 123,
'include_no_salary' => '<string>',
'include_yoe' => '<string>',
'hide_recruiting_agencies' => '<string>',
'return_raw_description' => '<string>',
'page' => 123,
'limit' => 123
],
'notify' => true,
'format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hirebase.org/v2/jobs/export"
payload := strings.NewReader("{\n \"search\": {\n \"job_titles\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"<string>\"\n ],\n \"job_board\": \"<string>\",\n \"location_types\": [\n \"<string>\"\n ],\n \"geo_locations\": [\n {\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\"\n }\n ],\n \"geofilter_params\": {\n \"mode\": \"<string>\",\n \"radius\": 123,\n \"unit\": \"<string>\"\n },\n \"experience\": [\n \"<string>\"\n ],\n \"yoe\": {\n \"min\": 123,\n \"max\": 123\n },\n \"company_name\": \"<string>\",\n \"company_slug\": \"<string>\",\n \"salary\": {\n \"min\": 123,\n \"max\": 123\n },\n \"job_types\": [\n \"<string>\"\n ],\n \"job_category\": [\n \"<string>\"\n ],\n \"company_types\": [\n \"<string>\"\n ],\n \"industry\": [\n \"<string>\"\n ],\n \"date_posted\": \"<string>\",\n \"visa\": \"<string>\",\n \"sort_by\": \"<string>\",\n \"sort_order\": \"<string>\",\n \"currency\": \"<string>\",\n \"days_ago\": 123,\n \"include_no_salary\": \"<string>\",\n \"include_yoe\": \"<string>\",\n \"hide_recruiting_agencies\": \"<string>\",\n \"return_raw_description\": \"<string>\",\n \"page\": 123,\n \"limit\": 123\n },\n \"notify\": true,\n \"format\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hirebase.org/v2/jobs/export")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"search\": {\n \"job_titles\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"<string>\"\n ],\n \"job_board\": \"<string>\",\n \"location_types\": [\n \"<string>\"\n ],\n \"geo_locations\": [\n {\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\"\n }\n ],\n \"geofilter_params\": {\n \"mode\": \"<string>\",\n \"radius\": 123,\n \"unit\": \"<string>\"\n },\n \"experience\": [\n \"<string>\"\n ],\n \"yoe\": {\n \"min\": 123,\n \"max\": 123\n },\n \"company_name\": \"<string>\",\n \"company_slug\": \"<string>\",\n \"salary\": {\n \"min\": 123,\n \"max\": 123\n },\n \"job_types\": [\n \"<string>\"\n ],\n \"job_category\": [\n \"<string>\"\n ],\n \"company_types\": [\n \"<string>\"\n ],\n \"industry\": [\n \"<string>\"\n ],\n \"date_posted\": \"<string>\",\n \"visa\": \"<string>\",\n \"sort_by\": \"<string>\",\n \"sort_order\": \"<string>\",\n \"currency\": \"<string>\",\n \"days_ago\": 123,\n \"include_no_salary\": \"<string>\",\n \"include_yoe\": \"<string>\",\n \"hide_recruiting_agencies\": \"<string>\",\n \"return_raw_description\": \"<string>\",\n \"page\": 123,\n \"limit\": 123\n },\n \"notify\": true,\n \"format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hirebase.org/v2/jobs/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"search\": {\n \"job_titles\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"<string>\"\n ],\n \"job_board\": \"<string>\",\n \"location_types\": [\n \"<string>\"\n ],\n \"geo_locations\": [\n {\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\"\n }\n ],\n \"geofilter_params\": {\n \"mode\": \"<string>\",\n \"radius\": 123,\n \"unit\": \"<string>\"\n },\n \"experience\": [\n \"<string>\"\n ],\n \"yoe\": {\n \"min\": 123,\n \"max\": 123\n },\n \"company_name\": \"<string>\",\n \"company_slug\": \"<string>\",\n \"salary\": {\n \"min\": 123,\n \"max\": 123\n },\n \"job_types\": [\n \"<string>\"\n ],\n \"job_category\": [\n \"<string>\"\n ],\n \"company_types\": [\n \"<string>\"\n ],\n \"industry\": [\n \"<string>\"\n ],\n \"date_posted\": \"<string>\",\n \"visa\": \"<string>\",\n \"sort_by\": \"<string>\",\n \"sort_order\": \"<string>\",\n \"currency\": \"<string>\",\n \"days_ago\": 123,\n \"include_no_salary\": \"<string>\",\n \"include_yoe\": \"<string>\",\n \"hide_recruiting_agencies\": \"<string>\",\n \"return_raw_description\": \"<string>\",\n \"page\": 123,\n \"limit\": 123\n },\n \"notify\": true,\n \"format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "<string>",
"state": "<string>",
"progress": 123,
"created_at": "<string>",
"updated_at": "<string>",
"started_at": "<string>",
"completed_at": "<string>",
"user_id": "<string>",
"error": "<string>",
"worker_id": "<string>",
"priority": 123,
"input": {},
"result": {
"download_url": "<string>",
"file_size": 123,
"record_count": 123,
"expiry_time": "<string>"
}
}Jobs API
Export Jobs
Start a task to export jobs using an existing search query and format
POST
/
v2
/
jobs
/
export
Export Jobs
curl --request POST \
--url https://api.hirebase.org/v2/jobs/export \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"search": {
"job_titles": [
"<string>"
],
"keywords": [
"<string>"
],
"job_board": "<string>",
"location_types": [
"<string>"
],
"geo_locations": [
{
"city": "<string>",
"region": "<string>",
"country": "<string>"
}
],
"geofilter_params": {
"mode": "<string>",
"radius": 123,
"unit": "<string>"
},
"experience": [
"<string>"
],
"yoe": {
"min": 123,
"max": 123
},
"company_name": "<string>",
"company_slug": "<string>",
"salary": {
"min": 123,
"max": 123
},
"job_types": [
"<string>"
],
"job_category": [
"<string>"
],
"company_types": [
"<string>"
],
"industry": [
"<string>"
],
"date_posted": "<string>",
"visa": "<string>",
"sort_by": "<string>",
"sort_order": "<string>",
"currency": "<string>",
"days_ago": 123,
"include_no_salary": "<string>",
"include_yoe": "<string>",
"hide_recruiting_agencies": "<string>",
"return_raw_description": "<string>",
"page": 123,
"limit": 123
},
"notify": true,
"format": "<string>"
}
'import requests
url = "https://api.hirebase.org/v2/jobs/export"
payload = {
"search": {
"job_titles": ["<string>"],
"keywords": ["<string>"],
"job_board": "<string>",
"location_types": ["<string>"],
"geo_locations": [
{
"city": "<string>",
"region": "<string>",
"country": "<string>"
}
],
"geofilter_params": {
"mode": "<string>",
"radius": 123,
"unit": "<string>"
},
"experience": ["<string>"],
"yoe": {
"min": 123,
"max": 123
},
"company_name": "<string>",
"company_slug": "<string>",
"salary": {
"min": 123,
"max": 123
},
"job_types": ["<string>"],
"job_category": ["<string>"],
"company_types": ["<string>"],
"industry": ["<string>"],
"date_posted": "<string>",
"visa": "<string>",
"sort_by": "<string>",
"sort_order": "<string>",
"currency": "<string>",
"days_ago": 123,
"include_no_salary": "<string>",
"include_yoe": "<string>",
"hide_recruiting_agencies": "<string>",
"return_raw_description": "<string>",
"page": 123,
"limit": 123
},
"notify": True,
"format": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
search: {
job_titles: ['<string>'],
keywords: ['<string>'],
job_board: '<string>',
location_types: ['<string>'],
geo_locations: [{city: '<string>', region: '<string>', country: '<string>'}],
geofilter_params: {mode: '<string>', radius: 123, unit: '<string>'},
experience: ['<string>'],
yoe: {min: 123, max: 123},
company_name: '<string>',
company_slug: '<string>',
salary: {min: 123, max: 123},
job_types: ['<string>'],
job_category: ['<string>'],
company_types: ['<string>'],
industry: ['<string>'],
date_posted: '<string>',
visa: '<string>',
sort_by: '<string>',
sort_order: '<string>',
currency: '<string>',
days_ago: 123,
include_no_salary: '<string>',
include_yoe: '<string>',
hide_recruiting_agencies: '<string>',
return_raw_description: '<string>',
page: 123,
limit: 123
},
notify: true,
format: '<string>'
})
};
fetch('https://api.hirebase.org/v2/jobs/export', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hirebase.org/v2/jobs/export",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'search' => [
'job_titles' => [
'<string>'
],
'keywords' => [
'<string>'
],
'job_board' => '<string>',
'location_types' => [
'<string>'
],
'geo_locations' => [
[
'city' => '<string>',
'region' => '<string>',
'country' => '<string>'
]
],
'geofilter_params' => [
'mode' => '<string>',
'radius' => 123,
'unit' => '<string>'
],
'experience' => [
'<string>'
],
'yoe' => [
'min' => 123,
'max' => 123
],
'company_name' => '<string>',
'company_slug' => '<string>',
'salary' => [
'min' => 123,
'max' => 123
],
'job_types' => [
'<string>'
],
'job_category' => [
'<string>'
],
'company_types' => [
'<string>'
],
'industry' => [
'<string>'
],
'date_posted' => '<string>',
'visa' => '<string>',
'sort_by' => '<string>',
'sort_order' => '<string>',
'currency' => '<string>',
'days_ago' => 123,
'include_no_salary' => '<string>',
'include_yoe' => '<string>',
'hide_recruiting_agencies' => '<string>',
'return_raw_description' => '<string>',
'page' => 123,
'limit' => 123
],
'notify' => true,
'format' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hirebase.org/v2/jobs/export"
payload := strings.NewReader("{\n \"search\": {\n \"job_titles\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"<string>\"\n ],\n \"job_board\": \"<string>\",\n \"location_types\": [\n \"<string>\"\n ],\n \"geo_locations\": [\n {\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\"\n }\n ],\n \"geofilter_params\": {\n \"mode\": \"<string>\",\n \"radius\": 123,\n \"unit\": \"<string>\"\n },\n \"experience\": [\n \"<string>\"\n ],\n \"yoe\": {\n \"min\": 123,\n \"max\": 123\n },\n \"company_name\": \"<string>\",\n \"company_slug\": \"<string>\",\n \"salary\": {\n \"min\": 123,\n \"max\": 123\n },\n \"job_types\": [\n \"<string>\"\n ],\n \"job_category\": [\n \"<string>\"\n ],\n \"company_types\": [\n \"<string>\"\n ],\n \"industry\": [\n \"<string>\"\n ],\n \"date_posted\": \"<string>\",\n \"visa\": \"<string>\",\n \"sort_by\": \"<string>\",\n \"sort_order\": \"<string>\",\n \"currency\": \"<string>\",\n \"days_ago\": 123,\n \"include_no_salary\": \"<string>\",\n \"include_yoe\": \"<string>\",\n \"hide_recruiting_agencies\": \"<string>\",\n \"return_raw_description\": \"<string>\",\n \"page\": 123,\n \"limit\": 123\n },\n \"notify\": true,\n \"format\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hirebase.org/v2/jobs/export")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"search\": {\n \"job_titles\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"<string>\"\n ],\n \"job_board\": \"<string>\",\n \"location_types\": [\n \"<string>\"\n ],\n \"geo_locations\": [\n {\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\"\n }\n ],\n \"geofilter_params\": {\n \"mode\": \"<string>\",\n \"radius\": 123,\n \"unit\": \"<string>\"\n },\n \"experience\": [\n \"<string>\"\n ],\n \"yoe\": {\n \"min\": 123,\n \"max\": 123\n },\n \"company_name\": \"<string>\",\n \"company_slug\": \"<string>\",\n \"salary\": {\n \"min\": 123,\n \"max\": 123\n },\n \"job_types\": [\n \"<string>\"\n ],\n \"job_category\": [\n \"<string>\"\n ],\n \"company_types\": [\n \"<string>\"\n ],\n \"industry\": [\n \"<string>\"\n ],\n \"date_posted\": \"<string>\",\n \"visa\": \"<string>\",\n \"sort_by\": \"<string>\",\n \"sort_order\": \"<string>\",\n \"currency\": \"<string>\",\n \"days_ago\": 123,\n \"include_no_salary\": \"<string>\",\n \"include_yoe\": \"<string>\",\n \"hide_recruiting_agencies\": \"<string>\",\n \"return_raw_description\": \"<string>\",\n \"page\": 123,\n \"limit\": 123\n },\n \"notify\": true,\n \"format\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hirebase.org/v2/jobs/export")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"search\": {\n \"job_titles\": [\n \"<string>\"\n ],\n \"keywords\": [\n \"<string>\"\n ],\n \"job_board\": \"<string>\",\n \"location_types\": [\n \"<string>\"\n ],\n \"geo_locations\": [\n {\n \"city\": \"<string>\",\n \"region\": \"<string>\",\n \"country\": \"<string>\"\n }\n ],\n \"geofilter_params\": {\n \"mode\": \"<string>\",\n \"radius\": 123,\n \"unit\": \"<string>\"\n },\n \"experience\": [\n \"<string>\"\n ],\n \"yoe\": {\n \"min\": 123,\n \"max\": 123\n },\n \"company_name\": \"<string>\",\n \"company_slug\": \"<string>\",\n \"salary\": {\n \"min\": 123,\n \"max\": 123\n },\n \"job_types\": [\n \"<string>\"\n ],\n \"job_category\": [\n \"<string>\"\n ],\n \"company_types\": [\n \"<string>\"\n ],\n \"industry\": [\n \"<string>\"\n ],\n \"date_posted\": \"<string>\",\n \"visa\": \"<string>\",\n \"sort_by\": \"<string>\",\n \"sort_order\": \"<string>\",\n \"currency\": \"<string>\",\n \"days_ago\": 123,\n \"include_no_salary\": \"<string>\",\n \"include_yoe\": \"<string>\",\n \"hide_recruiting_agencies\": \"<string>\",\n \"return_raw_description\": \"<string>\",\n \"page\": 123,\n \"limit\": 123\n },\n \"notify\": true,\n \"format\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "<string>",
"state": "<string>",
"progress": 123,
"created_at": "<string>",
"updated_at": "<string>",
"started_at": "<string>",
"completed_at": "<string>",
"user_id": "<string>",
"error": "<string>",
"worker_id": "<string>",
"priority": 123,
"input": {},
"result": {
"download_url": "<string>",
"file_size": 123,
"record_count": 123,
"expiry_time": "<string>"
}
}Export job search results using the same search parameters as
/v2/jobs/search, but save the result as a downloadable file. This endpoint creates a task and returns its status and identifier. The user can poll the task using the Get Task Status endpoint.
This endpoint requires an API key for all requests. See Authentication to get one.
Endpoint
POST /v2/jobs/export
Authentication
string
required
Your Hirebase API key
Request Body
Use
job_types (plural) — job_type (singular) is silently ignored and your filter will not apply.Note:
- While some top-level request fields are required (such as search), the attributes within those fields are optional. You can include only the filters you need, for example, specifying just
job_titlesinsidesearchis valid. - Filter combinations can be mixed and matched.
- Use specific filters to narrow down search results and get relevant matches.
object
Parameters used to filter job search results
job_titles and keywords support the same quoting, AND, and - exclusion syntax as the Search Jobs endpoint.Show child attributes
Show child attributes
string[]
Array of job titles to search for.
string[]
Array of keywords matched against
description, technologies, skills, and benefits.string
Filter by the source job board (e.g., “iCIMS”, “Lever”, “Greenhouse”).
string[]
Array of work arrangements. Accepted values:
"Remote", "Hybrid", "In-Person".object[]
Array of structured location objects with
city, region, and country.⚠️ Use
geo_locations — a field named locations is silently ignored: the request succeeds but no location filtering is applied, and the export will contain jobs from everywhere. Since exports are metered, double-check this field name before running a large export.object
Geographic filtering configuration, used together with
geo_locations.Show child attributes
Show child attributes
string
Filtering mode for geographic search; ‘auto’, ‘weak’, ‘strict’, ‘box’ (defaults to: ‘auto’). Any other value returns a
422 validation error.- Weak: uses coordinate based matching
- Strict: uses exact matching
- Box: uses bounding box matching
- Auto: uses heuristics to pick the optimal matching mechanism (recommended)
number
Search radius for geographic filtering (defaults to 25.0)
string
Units for radius; ‘mi’, ‘km’, ‘degrees’ (defaults to: ‘mi’)
string[]
Array of experience levels. Accepted values:
"Entry", "Junior", "Mid", "Senior", "Executive".object
string
Filter by specific company name
string
Filter by the unique company slug (used for deep linking or specific company targeting).
string[]
Array of employment types. Accepted values:
"Full Time", "Part Time", "Contract", "Internship".The
"Contract" value matches roles whose returned job_type is "Contract / Temporary" — request token and response label differ.The correct field name is
job_types (plural). Using job_type (singular) is silently ignored — the request succeeds but the filter is not applied.string[]
Filter by one or more job category tags (e.g.,
"Engineering Jobs", "Marketing Jobs").string[]
Filter jobs by the hiring company’s headcount bucket. Accepted values:
"1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10000", "10000+". Pass multiple values to combine ranges (e.g., ["11-50", "51-200"]).This parameter is named
company_types for historical reasons but currently filters by company size. A separate classification filter (Public Company / Non-Profit / etc.) will be added in a future API update.string[]
Filter by industry sector. Can be a single string or an array of strings. See List Industries for accepted values.
string
The date when the job was posted. Format: YYYY-MM-DD
string
Filter for jobs that offer visa sponsorship (“true” or “false”)
string
Field to sort results by. Accepted values:
"relevance", "date_posted", "salary", "company", "yoe". Invalid values are silently ignored.string
Sort direction (
"asc" or "desc").string
Currency code for salary filtering (e.g., “USD”, “EUR”).
number
Filter jobs posted within the last specified number of days.
string
Whether to include jobs that do not specify a salary (“true” or “false”).
string
Whether to include jobs without explicit years of experience data (“true” or “false”).
string
Set to
"true" to exclude postings from recruiting/staffing agencies from the export.⚠️ Must be the string
"true". The boolean true is rejected with a 422 validation error.string
Set to
"true" to include a description_raw field in each exported record, containing the complete original HTML description from the source ATS (typically much longer than the cleaned description).⚠️ Must be the string
"true". The boolean true is rejected with a 422 validation error.number
default:"1"
Page number for pagination
number
default:"10"
Determines the number of records exported (default
10). Set high to export everything.Note:
limit controls how many jobs are exported and defaults to 10. To export your full result set, set limit to a high value (e.g. the total_count you get back from POST /v2/jobs/search for the same filters). page selects the offset window in the usual way.boolean
default:"false"
Set to
true to receive an email at your account address when the export completes, containing the download link. The flag is echoed back on the task object.string
required
Export file format:
csv or json.json exports NDJSON — newline-delimited JSON objects (one job per line), not a single JSON array. Parse line-by-line rather than calling JSON.parse() on the entire file. csv exports a standard comma-separated file.Differences from
/v2/jobs/search: The search object accepts the same filters as Search Jobs, including return_raw_description and hide_recruiting_agencies — both are documented in the search object above. limit controls how many jobs are exported (default 10) and page selects the offset window — set limit high to export your full result set.Rate limit: 100 requests per 60 seconds per API key.
429 responses include a Retry-After header. See Error Handling.Metering: exports bill the jobs meter (
m_jobs_api_calls) by the number of jobs exported: min(limit, total matches) is charged when the task is created and refunded if the task fails. Omit limit and every matching job is charged — use POST /v2/jobs/estimate first to see the cost.Flow
POST /v2/jobs/export returns a task immediately (state: "queued"). Poll GET /v2/tasks/{task_id} until state is "finished" (or "failed"), then download from result.download_url before result.expiry_time (~30 days). Set notify: true to get the link by email instead of polling.
Response
Returns a task object representing the export job.Asynchronous workflow: This endpoint returns immediately with a task object. Use the returned
id to poll GET /v2/tasks/{task_id}. When state becomes "finished", the result.download_url field will contain the URL to fetch your exported file.Heads-up: limit controls how many jobs are exported and defaults to 10. To export your full result set, set limit to a high value (e.g. the total_count returned by POST /v2/jobs/search for the same filters). page selects the offset window in the usual way.string
Unique task ID
Note:Use this task ID to check the export status using the Get Task Status endpoint and download the result once it’s ready.
string
Type of the task, always
"export_job_data" for this endpointstring
Current state of the task (
queued, processing, finished, failed)number
Task progress as a float between 0.0 and 1.0
string
ISO timestamp of task creation
string
ISO timestamp of last update
string
ISO timestamp of when the task started, or
nullstring
ISO timestamp of when the task completed, or
nullstring
ID of the user who initiated the task
string
Error message if the task failed, otherwise
nullstring
ID of the worker that processed the task, or
nullinteger
Task priority level (higher means more urgent)
object
Task input payload, including the search query and export
formatobject
Exported Record Fields
Each record in the exported file contains the following fields:_id, application_link, company_data, company_link, company_logo, company_name, company_slug, date_posted, description, education_level, job_board, job_board_link, job_categories, job_slug, job_title, job_type, language, location_raw, location_type, locations, meta, meta_completeness, recruiter_agency, requirements_summary, score, skills, technologies, visa_sponsored, yoe_range
description_raw is added to every record when return_raw_description is set to "true" in the search object.Example Request
{
"search": {
"job_titles": ["Site/Civil Engineer"],
"geo_locations": [{"city": "Richmond", "region": "Virginia", "country": "United States"}],
"yoe": {"min": 1, "max": 6},
"company_name": "CompanyXYZ",
"job_types": ["Full Time"],
"industry": ["Design", "Construction"],
"visa": "true",
"sort_by": "relevance",
"sort_order": "desc",
"page": 1,
"limit": 10
},
"format": "json"
}
Example Response
{
"id": "7700n868-05b7-4763-af74-e2c789c3260d",
"type": "export_job_data",
"state": "queued",
"progress": 0.0,
"created_at": "2025-06-13T06:10:07.605259",
"updated_at": "2025-06-13T06:10:07.605260",
"started_at": null,
"completed_at": null,
"user_id": "27893d278da3e42f2878gh90",
"error": null,
"worker_id": null,
"priority": 0,
"input": {
"query": {
"job_titles": [
"Site/Civil Engineer"
],
"keywords": null,
"location_group": null,
"location_types": [
"In-Person"
],
"geo_locations": [
{
"city": "Richmond",
"region": "Virginia",
"country": "United States"
}
],
"experience": null,
"yoe": {
"min": 1.0,
"max": 6.0
},
"include_yoe": null,
"company_types": null,
"company_name": "CompanyXYZ",
"date_posted": null,
"days_ago": null,
"month": null,
"salary": null,
"include_no_salary": null,
"currency": null,
"job_types": [
"Full Time"
],
"job_category": null,
"industry": [
"Design",
"Construction"
],
"sub_industry": null,
"visa": "false",
"include_expired": null,
"hide_seen_jobs": null,
"user_id": null,
"company_slug": null,
"job_slug": null,
"job_board": null,
"sort_by": "relevance",
"sort_order": "desc",
"page": 1,
"limit": 10
},
"format": "json"
},
"result": null
}
Error Responses
401 Unauthorized
401 Unauthorized
Returns when the API key is missing, invalid, or incorrect.
403 Forbidden
403 Forbidden
Returns when your account does not have permission to access the requested feature.
- This usually means the feature is restricted to certain subscription tiers.
422 Unprocessable Entity Error
422 Unprocessable Entity Error
Returns when the request contains invalid or improperly formatted data.
- Occurs when the industry field is missing, not a string, or doesn’t match any value from the list of valid industries.
- May result from JSON decoding errors, such as malformed JSON or incorrect data types in the request body.
500 Internal Server Error
500 Internal Server Error
Returns when an unexpected error occurs on the server.
- Also occurs during unhandled server-side failures or bugs that prevent the request from being processed.