Jobs Data API (v2, deprecated)
In this guide, you'll learn about the JobFront API, how to authenticate API calls, and response data formats.
Quickstart
Retrieve a paginated list of jobs from SpaceX, using your Bearer token:
curl https://api.jobfront.io/v2/sources/spacex.com/jobs -H "Authorization: Bearer XACCESSTOKENX"{
"cursor_job_id": "J123",
"data": [
{
<job_post>
},
{
<job_post>
}
],
"metrics": {
"count_jobs": 855,
"updated_at": 1724032522
}
}API Root URL
JobFront's API is hosted at the following root url. Each endpoint is specified below. The most recent API version is currently 'v2'
Data Formatting
All time fields are unix timestamps, returned via the api as numbers.
Authentication
JobFront's API uses Bearer tokens to authenticate API calls. When you make API calls to JobFront, you must include this Bearer token in the Authorization header
You can create a Bearer token directly in the JobFront app after logging in (https://app.jobfront.io)

Rate Limits
If you make API requests above the limit, you will receive a 429 HTTP code "Too Many Requests".
Please implement backoffs if this happens.
The current API rate limits are set at 60 requests per minute.
Please connect with us if you need to increase your account limits.
Job Data Fields
See below common fields and descriptions in each job post data object
Job Search - Get jobs list in reverse chronological order based on search query/filters
On JobFront job boards, jobs are displayed in reverse chronological order. You can retrieve jobs from the API using the 2-step approach below:
1) Query Filters - a list of available filters to use in the job search query. View and select filters based on this response, which is personalized to your job board/token.
2) Job Search - highly configurable and filterable list of jobs, in reverse chronological order. These are the jobs that have passed through your filters for your job board and through your query filters from step 1) above.
The query filters are optional, so you can also request jobs directly from the Job Search endpoint.
Query Filters
For your job board, there are certain location, job tags, industry tags, and other filters that you can specify in your API calls to retrieve more customized results.
You can retrieve these filter options with the following API call:
200 Example Response
Now you can use these options in the below API to retrieve jobs that match any combination of these filter options. If you'd like to select multiple locations, please separate multiple entries with a ',' comma. For example:
You can also include free-text search inputs that will search not only these industry/location/category tags but also the full job posting itself for keywords.
Keep in mind that adding more filter options is done via an OR filter. Specifying multiple locations/filters will match jobs in any of those locations/filters.
Job Search
You can use one or more query filter options specified above, or retrieve the full list of jobs in your account by not specifying any query filter options.
In the Response, the 'metrics' dictionary will display total count of all available jobs that match your filters, to help with pagination and user experience (if you are displaying jobs to a user).
Complex Searches
You can use both 'include' and 'exclude' options in our search interface by adding "-" and "+" in front of your search queries. For example, include both "document" and "extraction" matches but not the phrase "document extraction". By default, all search terms will be inclusive "+" if not explicitly added. Phrases will be separated by each "," comma in the search parameter.
This approach to inclusion vs exclusion is available for both the search and locations search options.
AND/OR Searches
You can also compose complex and/or searches on both locations= and search= filters. This is done with the | operator. For example:
This example search will return jobs in California OR in New York, it will also not include jobs specifically in San Diego. It will return jobs that match all of these 3 keywords together mobile+engineer+ios, but not jobs that match android or electron.
Longer example:
200 Example Response
'count_jobs' is the total number of jobs on your job board or total number of jobs available with your search query. Keep in mind this includes all jobs from all sources that you track, that also meet and pass through your configured filters.
Job Categories
Every job is tagged with up to 5 of these job function categories below. The tagging will try to classify the most likely at the beginning of the list, and least likely tag at the end of the list of responses.
You can use these categories in your own app for sorting/filtering and display, and you can add any of these categories into the jobs api above and return only jobs that match that tag.
Engineering (Software)
Engineering (Hardware)
DevOps
Cybersecurity
IT & Business Systems
Technical Support
Quality Assurance
Design
Product
Data & Analytics
Artificial Intelligence, Data Science, & Machine Learning
Sales
Marketing
Growth
Partnerships
Customer Success
Social Media
Content
Community
Program Management
Operations
Business Development
People (HR)
People (Recruiting)
Legal
Finance
Supply Chain
Office & Admin
Learning & Development
Corporate Strategy
Investing & Corporate Development
Research
Diversity & Inclusion
Event Planning
Procurement
Vertical Specific
Get Jobs List for Source/Company
You can retrieve all jobs for a given company based on that company domain. You can also retrieve jobs by source domain OR by source_id
Option 1) Get jobs by domain (url_source)
200 Example Response
Option 2) Get jobs by company/source id (source_id)
All other details pertaining to the formatting and response are the same as when you're retrieving jobs based on url_source / domain just above.
Get all sources in my account
This is a 2-step process: 1) get my collections of sources, and 2) get sources within each collection.
Collections of sources are groups of similar companies/organizations, and while many accounts have a single collection it is possible over time that you may need to organize collections of your sources into different groupings.
Step 1) Get my Collections
This API request will use your Bearer token to retrieve your account/organization, and discover collections that you have activated in your account.
200 Example Response
Step 2) Get Sources within a Collection
200 Example Response
Another 200 Example Response with pagination
Reaching the end of paginated results
If you paginate through all results with no additional results available, you'll receive an empty data field. The metrics field will continue to be returned.
Please also note that as you paginate through results, if there are no additional pages, the cursor field will not be available but if it is the final page you will still receive data field entries. For example:
More results available, can continue to paginate:
No more results available, final page:
Get Job by job_id
While the above jobs lists will contain all information about a job, sometimes it's important to retrieve only one job post at a time.
Example API Call
Example API Response
Get Company/Source by domain (url_source)
Retrieve information about a given source, which includes company name/description, location, logo, and other metadata.
Note: When adding the url_source of the company, please use the naked domain. For example, please use 'spacex.com' and not 'https://www.spacex.com'.
Example API Call
Example API Response
It's important to note that our jobs scrapers run about once per day right now, so you can keep track of when the 'count_jobboard_jobs' was last updated with the field 'count_jobbard_jobs_success_at' to indicate to your users when this active jobboard count was last updated.
Get Company/Source by id (source_id)
If you prefer, you can also retrieve a company/source by their unique internal source_id. This may be helpful for your internal organization, or if you have a domain that is changing. We constantly track domains of the sources we track, and will update the url_source domain when we notice a change.
(We are building a series of webhooks to track these types of company/source changes). In the meantime, you can retrieve sources based on their source_id. Responses will be in the same format as above:
Example API Call
Example API Response
You can retrieve a list of all sources in your account using the above endpoint "Get all sources in my account" documented above
A note on timestamps
By default, 'created_at' unix timestamps signify when jobs are scraped by JobFront systems.
There is one exception:
When a Job Board is added to our scraping system, the first time we track/scrape that job board (and only the first time) we will search for a standardized Google-SEO-optimized JobPosting timestamp that helps us determine when that job was originally added to the Job Board
If we detect this information about when a job was originally posted in a reputable format, we will adjust the 'created_at' time to represent when the job was actually posted
We do not do this on an ongoing basis, because sometimes jobs are toggled 'active' and 'inactive' and this Google-optimized information is not updated. On an ongoing basis, we will assign the created_at time to when the scrape took place.
'updated_at' unix timestamps are updated any time a job is updated. This includes any internal process or data augmentation, any re-scraping that we do, or any adjustments to the job post itself (such as adjustments to the job title)
Last updated