XML Guide: Stepstone [DE]

JobFeed XML Integration Guide

Document Structure

Each XML document starts with the XML declaration using UTF-8 encoding:

<?xml version="1.0" encoding="UTF-8"?>

After the XML declaration, the document contains the root element /jobfeed. The allowed number of joblisting elements depends on the integration type:

Element order inside each joblisting is significant because the schema uses xs:sequence. Produce child elements in the order shown in this guide.

Account Identification

Providing both company_id and user_id is recommended. When both identifiers are present, companydetails/companyname remains optional. If either identifier is missing, a non-empty companydetails/companyname must be supplied.

The company_id and user_id are provided by StepStone.

If jobs need to be submitted using only a company name and without company_id and user_id credentials, this feature must first be enabled by StepStone. Contact the Helpdesk team at helpdesk-jobfeed@stepstone.de to request activation.

When this feature is enabled, StepStone assigns the submitted job to the corresponding account and user. This additional assignment step may cause a delay in job posting because of additional validation steps.

user_id + company_id Company name Accepted
Provided Optional Yes
Partial Required Yes (delay)
Missing Required Yes (delay)

Node Reference

Every parent node, child node, and attribute is listed below. The XPath is shown below each node name.

Use the + / − control next to a parent node to show or hide its descendants.
NodeRequirementOccurrencesDatatypeDescription
jobfeed
Parent
/jobfeed
Required1complexRoot element. Contains exactly one joblisting for PUSH integrations and one or more joblisting elements for PULL integrations.
joblisting
Parent
/jobfeed/joblisting
Required1 (PUSH)
1..∞ (PULL)
complexRepresents one job record. PUSH documents contain exactly one joblisting. PULL documents may contain one or more joblisting elements.
reference_id
Attribute
/jobfeed/joblisting/@reference_id
Required1xs:stringUnique reference for the job listing.
company_id
Attribute
/jobfeed/joblisting/@company_id
Recommended0..1xs:stringCompany identifier. Recommended together with user_id. If either identifier is missing, a non-empty companyname is required.
user_id
Attribute
/jobfeed/joblisting/@user_id
Recommended0..1xs:stringUser identifier. Recommended together with company_id. If either identifier is missing, a non-empty companyname is required.
action
Attribute
/jobfeed/joblisting/@action
Required1restricted xs:stringProcessing action. Accepted case-insensitively: INSERT, UPDATE, OFFLINE.
channel
Child
/jobfeed/joblisting/channel
Required1ChannelTypeStepStone channel identifier. Accepted value is DE. Matching is case-insensitive.
categorization
Parent
/jobfeed/joblisting/categorization
Optional0..1complexGroups optional repeatable categorization values.
experience
Child
/jobfeed/joblisting/categorization/experience
Optional0..∞restricted xs:stringExperience category. Allowed values are case-insensitive.
contracttype
Child
/jobfeed/joblisting/categorization/contracttype
Optional0..∞restricted xs:stringContract category. Allowed values are case-insensitive.
contractime
Child
/jobfeed/joblisting/categorization/contractime
Optional0..∞restricted xs:stringWorking-time category. Allowed values are case-insensitive.
workpolicy
Child
/jobfeed/joblisting/categorization/workpolicy
Optional0..∞restricted xs:stringWork policy. Allowed values are case-insensitive.
jobdetails
Parent
/jobfeed/joblisting/jobdetails
Required1complexGroups job content, locations, application target, and optional salary.
language
Child
/jobfeed/joblisting/jobdetails/language
Required1LanguageTypeJob content language. Accepted values are DE and EN. Matching is case-insensitive.
jobtitle
Child
/jobfeed/joblisting/jobdetails/jobtitle
Required1JobTitleTypePublished job title. Max. 200 characters.
introduction
Child
/jobfeed/joblisting/jobdetails/introduction
Required1xs:stringIntroductory company or job text.
tasks
Child
/jobfeed/joblisting/jobdetails/tasks
Required1xs:stringJob duties and responsibilities.
profile
Child
/jobfeed/joblisting/jobdetails/profile
Required1xs:stringCandidate profile, skills, and qualifications.
weoffer
Child
/jobfeed/joblisting/jobdetails/weoffer
Optional0..1xs:stringBenefits or employer offer.
additionalinfo
Child
/jobfeed/joblisting/jobdetails/additionalinfo
Optional0..1xs:stringAdditional contact information.
joblocations
Parent
/jobfeed/joblisting/jobdetails/joblocations
Required1complexGroups one to five job locations.
location
Parent
/jobfeed/joblisting/jobdetails/joblocations/location
Required1..5complexRepresents one job location. countrycode and city are required.
countrycode
Child
/jobfeed/joblisting/jobdetails/joblocations/location/countrycode
Required1xs:stringCountry code of the job location.
city
Child
/jobfeed/joblisting/jobdetails/joblocations/location/city
Required1xs:stringCity name.
postalcode
Child
/jobfeed/joblisting/jobdetails/joblocations/location/postalcode
Optional0..1xs:stringPostal or ZIP code.
streetname
Child
/jobfeed/joblisting/jobdetails/joblocations/location/streetname
Optional0..1xs:stringStreet name.
buildingnumber
Child
/jobfeed/joblisting/jobdetails/joblocations/location/buildingnumber
Optional0..1xs:stringBuilding or house number.
apply
Parent
/jobfeed/joblisting/jobdetails/apply
Required1complex / xs:choiceApplication target. Include exactly one child: email or url.
email
Child
/jobfeed/joblisting/jobdetails/apply/email
Choiceexactly 1 of 2xs:stringApplication email address. Mutually exclusive with url.
url
Child
/jobfeed/joblisting/jobdetails/apply/url
Choiceexactly 1 of 2xs:anyURIApplication URL. Mutually exclusive with email.
salary
Parent
/jobfeed/joblisting/jobdetails/salary
Optional0..1complexSalary block. If present, all four children are required.
minimum
Child
/jobfeed/joblisting/jobdetails/salary/minimum
Conditional1 if salary existsxs:decimalMinimum salary amount. Must be strictly less than maximum.
maximum
Child
/jobfeed/joblisting/jobdetails/salary/maximum
Conditional1 if salary existsxs:decimalMaximum salary amount. Must be strictly greater than minimum.
currency
Child
/jobfeed/joblisting/jobdetails/salary/currency
Conditional1 if salary existsrestricted xs:stringSupported value: EUR, accepted case-insensitively.
period
Child
/jobfeed/joblisting/jobdetails/salary/period
Conditional1 if salary existsrestricted xs:stringAllowed values are case-insensitive: hourly, daily, monthly, yearly.
layoutdetails
Parent
/jobfeed/joblisting/layoutdetails
Optional0..1complexGroups optional image and video presentation data.
images
Parent
/jobfeed/joblisting/layoutdetails/images
Optional0..1complexGroups optional header and background images.
header
Child
/jobfeed/joblisting/layoutdetails/images/header
Optional0..3xs:anyURIHeader image URL. Up to three values are accepted.
background
Child
/jobfeed/joblisting/layoutdetails/images/background
Optional0..1xs:anyURIBackground image URL.
video
Child
/jobfeed/joblisting/layoutdetails/video
Optional0..1restricted xs:anyURIVideo URL containing YouTube, Vimeo or Wistia, case-insensitively.
companydetails
Parent
/jobfeed/joblisting/companydetails
Conditional0..1complexCompany metadata. Required in practice when identifiers are incomplete because companyname must then be supplied.
companyname
Child
/jobfeed/joblisting/companydetails/companyname
Conditional0..1xs:stringOptional when both company_id and user_id are present. Otherwise required and must contain non-whitespace text.
contract
Parent
/jobfeed/joblisting/companydetails/contract
Optional0..1complexGroups optional contract metadata.
name
Child
/jobfeed/joblisting/companydetails/contract/name
Optional0..1xs:stringContract name.
product
Child
/jobfeed/joblisting/companydetails/contract/product
Optional0..1ProductTypeProduct name. Accepted values are AllJobs, Pro, Pro Plus, Pro Ultimate, Pro Campus, and Pro XXL. Matching is case-insensitive.
billing
Parent
/jobfeed/joblisting/companydetails/billing
Optional0..1complexGroups optional billing metadata.
ordernumber
Child
/jobfeed/joblisting/companydetails/billing/ordernumber
Optional0..1xs:stringOrder or purchase-order number.
costcenter
Child
/jobfeed/joblisting/companydetails/billing/costcenter
Optional0..1xs:stringCost-center identifier.
email
Child
/jobfeed/joblisting/companydetails/billing/email
Optional0..1xs:stringBilling contact email.
reference
Child
/jobfeed/joblisting/companydetails/billing/reference
Optional0..1xs:stringInternal or secondary billing reference.
comment
Child
/jobfeed/joblisting/companydetails/billing/comment
Optional0..1xs:stringFree-text billing comment.
recruiter
Parent
/jobfeed/joblisting/companydetails/recruiter
Optional0..1complexGroups optional recruiter contact data.
position
Child
/jobfeed/joblisting/companydetails/recruiter/position
Optional0..1xs:stringRecruiter role or position.
gender
Child
/jobfeed/joblisting/companydetails/recruiter/gender
Optional0..1RecruiterGenderTypeRecruiter gender code. Accepted values are M, F, and D. Matching is case-insensitive.
firstname
Child
/jobfeed/joblisting/companydetails/recruiter/firstname
Optional0..1xs:stringRecruiter first name.
lastname
Child
/jobfeed/joblisting/companydetails/recruiter/lastname
Optional0..1xs:stringRecruiter last name.
email
Child
/jobfeed/joblisting/companydetails/recruiter/email
Optional0..1xs:stringRecruiter email address.
phone
Child
/jobfeed/joblisting/companydetails/recruiter/phone
Optional0..1xs:stringRecruiter phone number.

Allowed Values

The restricted values in this section are accepted case-insensitively. For example, INSERT, insert, and Insert are accepted for the action value.

/jobfeed/joblisting/@action
INSERTUPDATEOFFLINE
/jobfeed/joblisting/channel
DE
/jobfeed/joblisting/categorization/experience
NO_EXPERIENCEEXPERIENCELEADERSHIP_EXPERIENCE
/jobfeed/joblisting/categorization/contracttype
TEMPORARYFRANCHISEPERMANENT_CONTRACTTEMPORARY_CONTRACTTRAINEEFREELANCEAPPRENTICESHIPBACHELOR_DISSERTATIONINTERNSHIPSTUDENT_JOBDOCTORAL_THESISPROFESSIONAL_TRAINEESHIPTRADE_REPRESENTATIVE
/jobfeed/joblisting/categorization/contractime
FULL_TIMEPART_TIME
/jobfeed/joblisting/categorization/workpolicy
HYBRIDFULL_REMOTEON_SITE
/jobfeed/joblisting/jobdetails/language
DEEN
/jobfeed/joblisting/jobdetails/salary/currency
EUR
/jobfeed/joblisting/jobdetails/salary/period
hourlydailymonthlyyearly
/jobfeed/joblisting/companydetails/contract/product
AllJobsProPro PlusPro UltimatePro CampusPro XXL
/jobfeed/joblisting/companydetails/recruiter/gender
MFD

Implementation Rules

  • Company identification: send both company_id and user_id where available. If either is missing, send a non-empty companydetails/companyname.
  • Application target: apply must contain exactly one child: email or url.
  • Salary: salary is optional. When included, send minimum, maximum, currency, and period. minimum must be strictly less than maximum.
  • Locations: send between one and five location elements. Each requires countrycode and city.
  • Categorization: all direct categorization children are optional and repeatable.
  • Header images: send zero to three header elements.
    • Recommended minimum dimensions: 1140px × 456px.
    • Recommended aspect ratio: 5:2.
    • Recommended file size: approximately 500 KB.
    • Supported formats: JPG, JPEG, and PNG.
  • Video: when included, the URI must contain youtube, youtu.be, vimeo, or wistia, case-insensitively.
  • CDATA: CDATA is recommended when using special characters, umlauts, or supported HTML markup. If CDATA is not used, special characters and umlauts must be encoded as numeric XML character references, for example &#196; for Ä or &#228; for ä. Named HTML entities such as &auml; are not valid in XML unless they are declared in a DTD.
Allowed HTML tags

The following HTML tags are supported in introduction, tasks, profile, weoffer, and additionalinfo.

HTML tags that are not listed as supported are automatically filtered out by Stepstone.

Tag Description
pDefines a paragraph.
strongDefines important text.
bDefines bold text.
iDefines a part of text in an alternate voice or mood.
uDefines text that should be stylistically different from normal text.
ulDefines an unordered list.
olDefines an ordered list.
liDefines a list item.
brDefines a single line break.
emDefines emphasized text.

XML Validator

Paste a complete JobFeed XML document below and select Validate XML. The validator supports PUSH documents with exactly one joblisting and PULL documents with one or more joblisting elements. It validates every joblisting separately and lists every detected issue.

Example: The XML below represents a PUSH document with one joblisting. For a PULL feed, add further joblisting elements inside the same jobfeed root element.

Changelog

Changes @July 2026
Updated on 2026-07-17

Article Attachments

Related Articles