Jobs API
Export Jobs
Start a task to export jobs using an existing search query and format
POST
Export Jobs
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.
Endpoint
Authentication
string
required
Your Hirebase API key
Request Body
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.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. notify does not change how many jobs are exported — pair it with an explicit search.limit (see the email example below).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. If you omit limit, the default of 10 applies — only 10 jobs are exported and charged. Setting limit to 0 is treated as “no limit”: every matching job is exported and charged, so always pass an explicit limit and run POST /v2/jobs/estimate with the same filters 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
Present only when the task is complete
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
Both examples set
search.limit explicitly. Without it the export stops at the default of 10 jobs, whether or not notify is set.Example Response
Error Responses
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.