Feed API
The Feed API allows you as a Jobylon-customer to retrieve job data in XML/JSON format and display it in your own interface. This is suitable for more advanced implementations than what our job widget can provide.
Getting started
Our customer support can set up feeds on request. Once configured, you will receive a URL for the specific feed. The default content format is XML, but by appending ?format=json to any URL the content will be formatted in JSON.
Response body schema
You can find the XML schema for the response here: Job object schema
Response body example
You can find an example of the XML response here: Job structure example
curl --location --request GET '/feeds/<hash>/?format=xml'
# Or
curl --location --request GET '/feeds/<hash>/'curl --location --request GET '/feeds/<hash>/?format=json'
Response Examples
[
{
"id":4069,
"categories":[
{
"category":{
"text":"Tech",
"id":159
}
}
],
"company":{
"logo":"https://media-eu.jobylon.com/companies/company-logo/jobylon/social_squared_rgb.911b9470.png",
"slug":"jobylon",
"descr":"<p>Jobylon develops and offers a modern hiring software (SaaS) to companies who want to create and share <strong>beautiful job ads and manage their applicants with ease.</strong> The recruitment industry has stayed unchanged for too long whilst the need for a simple and efficient tool has increased.</p>\n<p>Jobylon was founded in 2011 and since then we've launched a number of exciting projects and ventures within the HR tech space. We've always had the same goal - <strong>to use technology and innovation to change and simplify what is today a traditional space.</strong></p>\n<p>During this time we've also been awarded as one of <strong>Sweden's hottest entrepreneurs</strong> and nominated for the <strong>Red Herring</strong> award - we've done this with a small but dedicated team!</p>\n<p>Today, we work with nearly <strong>1000 employers</strong> from more than <strong>80 countries worldwide</strong>, including amazing organisations such as 7-Eleven, Schibsted, Scandic Hotels, Vaimo, Bonnier and <a href=\"https://www.jobylon.com/testimonials/\">many more!</a></p>",
"website":"http://emp.jobylon.com/",
"id":6,
"industry":"Startup",
"name":"Jobylon",
"cover":"https://media-eu.jobylon.com/jobs/company-cover/full-stack-pythondjango-developer/cover.940fe1cc.jpg"
},
"contact":{
"phone":"+4670 487 25 18",
"email":"[email protected]",
"name":"Niklas Emanuelsson",
"photo":"https://media-eu.jobylon.com/main_contact/f299a79d289ca240b00bc57529552caa.0622460b.jpg"
},
"departments":[
{
"department": {
"descr": "IT",
"id": 1473
}
}
],
"summary": "Are you looking for a challenging role and to develop your skills? Then this position is perfect for you!",
"title":"Full-stack Python/Django developer ",
"slug":"full-stack-pythondjango-developer",
"descr":"<p>We're a growing start-up with big ambitions and even though we've come a long way, we have a lot of exciting challenges left to tackle! We are now looking for another <strong>dedicated, eager and passionate</strong> developer to further help us realise our vision. We have <a href=\"https://emp.jobylon.com/customers\">amazing clients</a>, loads of ideas and an exciting roadmap, but mainly we're looking to change a traditional space and create value for our customers. <strong>That's why we need you!</strong></p>\n<p>On a day to day basis, you'll be involved in all phases of the software life cycle, from specification to design, implementation and deployment.</p>\n<p>You are keen to contribute with your own ideas and we expect that you'll grow into an important part in our expansion, owning and driving parts of the system.</p>",
"skills":"<p>You are an experienced full-stack developer who have a genuine passion for web development and always looking to learn new technologies.</p>\n<p><strong>You build things daily with</strong></p>\n<ul>\n<li>Python and Django</li>\n<li>JavaScript/CoffeeScript/ES6</li>\n</ul>\n<p><strong>You know your way around</strong></p>\n<ul>\n<li>ElasticSearch</li>\n<li>Memcached and Redis</li>\n<li>MySQL/PostgreSQL</li>\n<li>RabbitMQ</li>\n</ul>\n<p><strong>Played a bit with</strong></p>\n<ul>\n<li>JavaScript MVC (Angular, Flux/React or similar)</li>\n</ul>\n<p><strong>And sometimes tamper with</strong></p>\n<ul>\n<li>LESS and CSS</li>\n</ul>",
"function":"Software Development",
"experience":"Experienced",
"employment_type":"Full-time",
"from_date":"2016-04-21",
"to_date":"2019-12-31",
"language":"en",
"locations":[
{
"location":{
"city":"Stockholm",
"municipality":"Stockholm",
"postal_code_short":"113 31",
"country_short":"SE",
"area_1_short":"Stockholms l\u00e4n",
"city_short":"Stockholm",
"area_1":"Stockholms l\u00e4n",
"url":"https://maps.google.com/?q=H%C3%A4lsingegatan+49,+113+31+Stockholm,+Sweden&ftid=0x465f9d76eae53039:0x1005e3c61fb0a66",
"place_id":"ChIJOTDl6nadX0YRZgr7YTxeAAE",
"text":"H\u00e4lsingegatan 49, Stockholm, Sweden",
"country":"Sweden",
"postal_code":"113 31"
}
}
],
"video":{
"url": "https://www.youtube.com/watch?v=v34S-hnm1Cg",
"content": {
"id": "v34S-hnm1Cg",
"src": "youtube",
"url": "https://www.youtube.com/watch?v=v34S-hnm1Cg"
}
},
"visibility": "external",
"benefits": [
{
"id": 1,
"text": "Free coffee"
},
{
"id": 2,
"text": "60 days vacation"
}
],
"workspace_type": "remote",
"internal_reference":null,
"dt_created": "2021-07-09T11:20:00.112428Z",
"dt_modified": "2021-07-09T11:21:30.347462Z",
"status_changed": "2021-07-09T11:21:30.347482Z",
"owner":{
"id":1,
"name":"Admin Adminsson",
"email":"[email protected]"
},
"salary":{
"currency": "EUR",
"frequency": "monthly",
"salary_value": 2000,
"salary_min": null,
"salary_max": null
},
"urls":{
"apply":"https://emp.jobylon.com/applications/jobs/4069/create/",
"ad":"https://emp.jobylon.com/jobs/4069-jobylon-full-stack-pythondjango-developer/"
}
}
]Field details
Job
Name | Type | Description |
|---|---|---|
id | integer | Job ID |
categories | array | Collection of Category |
company | object | Company object |
contact | object | Contact object |
departments | array | Collection of Department |
summary | string | Job summary |
descr | string | HTML-formatted string of text |
employment_type | string | Employment type |
experience | string | Experience level |
from_date | string | Job ad advertised from this date |
function | string | Job function |
language | string | Language used in job ad (ISO 639-1) |
locations | array | Collection of Location |
skills | string | HTML-formatted string of text |
slug | string | Job slug, without complete URL |
title | string | Job title |
to_date | string | Job ad advertised from to date |
dt_created | string | Datetime that job was created |
dt_modified | string | Datetime that job was last modified |
status_changed | string | Datetime when job status changed |
workspace_type | string | Workspace type |
video | object | Video object |
visibility | string | Job ad visibility one of the options in VisibilityType |
benefits | object | Benefits object |
internal_reference | object | Internal Reference |
owner | object | Owner object |
urls | object | URL object |
Benefits
Name | Type | Description |
|---|---|---|
id | integer | Benefit ID |
text | string | Benefit name |
Category
Name | Type | Description |
|---|---|---|
id | integer | Category ID |
text | string | Category name |
Company
Name | Type | Description |
|---|---|---|
id | integer | Company ID |
cover | url | URL to cover image |
descr | string | HTML-formatted string of text |
industry | string | Company industry |
logo | url | URL to logo |
name | string | Company name |
slug | string | Company slug, without complete URL |
website | url | URL for company website |
Contact
Name | Type | Description |
|---|---|---|
string | Email for contact | |
name | string | Full name of contact |
phone | string | Phone number for contact |
photo | url | URL to photo of contact |
Department
Name | Type | Description |
|---|---|---|
id | integer | Department ID |
desc | string | HTML-formatted string of text |
Location
Name | Type | Description |
|---|---|---|
area_1_short | string | Short name of city area, default to full name |
area_1 | string | Name of city area |
city | string | Name of city |
city_short | string | Short name of city, defaults to full name |
country | string | Country of location |
country_short | string | Country alpha-2 code |
municipality | string | Name of city municipality |
place_id | string | ID of location on Google maps |
postal_code | string | Postal code of location |
postal_code_short | string | Short postal code, default to full postal code |
text | string | Name or full address of location |
url | url | URL to location on Google maps |
Owner
Name | Type | Description |
|---|---|---|
id | integer | ID of the job owner |
name | string | Full name of the job owner |
string | Email of the job owner |
URL
Name | Type | Description |
|---|---|---|
apply | url | URL to application form |
ad | url | URL to ad |
Video
Name | Type | Description |
|---|---|---|
id | string | Video ID at source |
src | string | Source of video |
url | url | URL to video |
VisibilityType
Name | Description |
|---|---|
external | Job ad visible for external candidates |
internal | Job ad only visible for internal candidates |
Feed Metadata
By using the feed metadata /feeds/<hash>/meta/ or the job detail metadata /feeds/<hash>/<job_id>/meta/ endpoint, you can get info about how the different metadata of the feed.
Metadata
Name | Type | Description |
|---|---|---|
categories | url | Endpoint to fetch the categories metadata |
companies | url | Endpoint to fetch the companies metadata |
departments | url | Endpoint to fetch the departments metadata |
experiences | url | Endpoint to fetch the experiences metadata |
functions | url | Endpoint to fetch the functions metadata |
locations | url | Endpoint to fetch the locations metadata |
layers_* | url | Endpoint to fetch the layers metadata |
questions | url | Endpoint to fetch the job questions metadata |
statuses | url | Endpoint to fetch the statuses metadata |
NOTE layers are dynamic by nature. The metadata endpoint can provide information on how many there are.
Metadata Detail
Name | Type | Description |
|---|---|---|
questions | url | Endpoint to fetch the job questions metadata |
statuses | url | Endpoint to fetch the statuses metadata |
form_fields | url | Endpoint to fetch the required, optional and hidden fields in a Job application from |
Questions and statuses endpoints are paginated. Default pagination size is 10 and can be adjusted by the page_size query parameter.
The Maximum size is 300.
Categories
Name | Type | Description |
|---|---|---|
count | integer | Number of categories on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of CategoryMetadata |
CategoryMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the category |
text | string | Name of the category |
company | integer | Id of the company that the category belongs to |
Companies
Name | Type | Description |
|---|---|---|
count | integer | Number of companies on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of CompanyMetadata |
CompanyMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the company |
name | string | Name of the company |
internal_name | string | Name of the company used internally in Jobylon |
Departments
Name | Type | Description |
|---|---|---|
count | integer | Number of departments on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of DepartmentMetadata |
DepartmentMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the department |
name | string | Name of the department |
company | integer | Id of the company the department belongs to |
label | string | How the department is labelled in the company |
label_plural | string | How the department is labelled in the company in plural |
Experiences
Name | Type | Description |
|---|---|---|
count | integer | Number of experiences on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of ExperienceMetadata |
ExperienceMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the experience |
text | string | Name of the experience |
Functions
Name | Type | Description |
|---|---|---|
count | integer | Number of functions on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of FunctionMetadata |
FunctionMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the function |
text | string | Name of the function |
Locations
Name | Type | Description |
|---|---|---|
count | integer | Number of locations on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of LocationMetadata |
LocationMetadata
Name | Type | Description |
|---|---|---|
location | string | Name of the location |
area | string | Name of the area of the location |
company | integer | Id of the company the location belongs to |
Layers
Name | Type | Description |
|---|---|---|
count | integer | Number of layers on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of LayersMetadata |
LayersMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the layer |
text | string | Name of the layer |
company | integer | Id of the company the layer belongs to |
dimension | integer | Dimension that layer belongs to |
layer_name | string | The name of the dimension of the layer |
layer_name_plural | string | The plural name of the dimension of the layer |
Questions
Name | Type | Description |
|---|---|---|
count | integer | Number of questions on the job |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of QuestionsMetadata |
QuestionsMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the question |
label | string | Name of the question |
choice_type | string | Type of the question. One of QuestionsChoiceTypes |
choices | array | List of possible choices. Empty list if the answer is free. If choice_type is RANGE, the first element of the list is the minimum value, the second element is the maximum value, and the third element is the step. [
1, # min
10, # MAX
2 # step
] |
conditional_rules | array | List of ConditionalRulesMetadata that define when this question should be displayed to the user. Empty list if the question has no conditions. |
QuestionsChoiceTypes
Name | Description |
|---|---|
code | Code question |
text-short | Free text question |
link | Link question |
select-one | Select one choice from choices array question |
select-multiple | Select one or more choices from choices array question |
range | Range question |
file | File question |
ConditionalRulesMetadata
Name | Type | Description |
|---|---|---|
parent_question_id | integer | Id of the parent question that triggers this conditional |
trigger_operator | string | The operator used to evaluate the trigger. Supported operators: exact |
trigger_config | object | Configuration for the trigger, shape depends on trigger_operator. Example value when trigger_operator equals exact: {"value": "<choice_value>"} |
Statuses
Name | Type | Description |
|---|---|---|
count | integer | Number of statuses on the feed |
next | url | Next url to query the data |
previous | url | Previous url to query the data |
results | array | Collection of StatusesMetadata |
StatusesMetadata
Name | Type | Description |
|---|---|---|
id | integer | Id of the status |
name | string | Name of the status |
company | integer | Id of the company the status belongs to |
group | integer | The group the status belongs to |
FormFields
Name | Type | Description |
|---|---|---|
required_fields | array | List of the required fields |
optional_fields | array | List of the optional fields |
hidden_fields | array | List of the hidden fields |
conditional_fields | array | List of conditional question fields with their trigger conditions |
Note: In form_fields, questions will be shown in the format question_<ID> where ID is the ID of the question.
ConditionalField
Name | Type | Description |
|---|---|---|
field | string | The conditional field identifier in the format question_<ID> |
parent_field | string | The parent field identifier that triggers this condition, in the format question_<ID> |
trigger_operator | string | The operator used to evaluate the trigger condition. Supported operators: exact |
trigger_config | object | Configuration for the trigger, shape depends on trigger_operator. Example value when trigger_operator equals exact: {"value": "<choice_value>"} |
required | boolean | Defines whether the field becomes required when the rule's trigger condition is met |
Group
A group is an integer that categorizes the status into different "groups" (e.g. Rejected status). Bellow is a list of all availabe values a group can take and their meaning.
Number | Group |
|---|---|
0 | New |
1 | In Progress |
19 | Rejected |
20 | Hired |
21 | On Hold |