Documentation
XML Feed
Structure and field reference for the Jobstream creator XML feed.
XML Feed
The Jobstream XML Feed delivers a real-time list of active job opportunities curated by a specific creator. Partners use it to ingest jobs into their own platforms, job boards, or distribution systems.
Endpoint
GET /partner/feed/:creator_handle/xmlReplace :creator_handle with the handle of the Jobstream creator whose feed you want to consume.
Base URL: https://production-api.jobstream.co
Authentication
All partner feed requests require the x-api-key header with your partner API key. See Get Started for instructions on obtaining your key.
Query parameters
| Parameter | Required | Description |
|---|---|---|
sub_id | Optional | Partner sub-attribution ID. When provided, validates the attribution context for the request. Format: <creator_handle>-<suffix>. |
Example request
curl -sS -X GET \
"https://production-api.jobstream.co/partner/feed/jiloma/xml?sub_id=jiloma-rthgip" \
-H "x-api-key: <your_api_key>"Response
- Status:
200 OK - Content-Type:
application/xml; charset=utf-8 - Body: An XML document containing all active jobs for the creator (see structure below).
Feed structure
The feed returns a well-formed XML document encoded in UTF-8. The root element is <source> and contains feed-level metadata followed by one <job> element per active listing.
<?xml version="1.0" encoding="UTF-8"?>
<source>
<publisher><![CDATA[Jobstream]]></publisher>
<publisherurl><![CDATA[https://production-api.jobstream.co]]></publisherurl>
<lastBuildDate><![CDATA[Wed, 27 May 2026 20:00:00 GMT]]></lastBuildDate>
<job>
<title><![CDATA[Senior Product Designer]]></title>
<date><![CDATA[Mon, 20 May 2026 00:00:00 GMT]]></date>
<referencenumber><![CDATA[job_abc123]]></referencenumber>
<url><![CDATA[https://js.to/xK9pQr]]></url>
<company><![CDATA[Acme Corp]]></company>
<city><![CDATA[Austin]]></city>
<state><![CDATA[TX]]></state>
<description><![CDATA[Full job description text...]]></description>
<type><![CDATA[Full-time]]></type>
<summary><![CDATA[Short AI-generated summary of the role.]]></summary>
<work_location_type><![CDATA[Remote]]></work_location_type>
<job_seniority><![CDATA[Senior]]></job_seniority>
<onet_code><![CDATA[27-1021.00]]></onet_code>
<onet_title><![CDATA[Commercial and Industrial Designers]]></onet_title>
<industry><![CDATA[design]]></industry>
<industry_label><![CDATA[Design]]></industry_label>
<sub_industry><![CDATA[ux-product-design]]></sub_industry>
<sub_industry_label><![CDATA[UX & Product Design]]></sub_industry_label>
<estimated_salary_min><![CDATA[95000]]></estimated_salary_min>
<estimated_salary_max><![CDATA[130000]]></estimated_salary_max>
</job>
<!-- additional <job> elements ... -->
</source>All text content is wrapped in CDATA sections, so you do not need to handle XML entity escaping when reading field values.
Feed-level fields
These fields appear once per feed response, at the top of the <source> element.
| Field | Description |
|---|---|
publisher | Always Jobstream. Identifies the feed source. |
publisherurl | The base URL of the Jobstream API used to generate the feed. |
lastBuildDate | UTC timestamp of when this feed was generated. Formatted as an RFC 2822 date string. |
Job-level fields
Each <job> element contains the following fields. All fields are always present in the response; fields with no data for a given job will be empty strings.
Identification
| Field | Description |
|---|---|
referencenumber | Unique identifier for the job within Jobstream. Use this as a stable key when deduplicating or cross-referencing jobs in your system. |
url | The URL to send candidates to when they click on a job. This is a Jobstream short link when one is available; otherwise it is the original job posting URL. Always use this field as the apply/redirect destination. |
Core job details
| Field | Description |
|---|---|
title | Job title as published by the employer. |
date | Publication date of the job listing, formatted as an RFC 2822 UTC date string. |
company | Name of the hiring company. |
city | City where the job is located. |
state | State or region where the job is located. |
type | Employment type (e.g., Full-time, Part-time, Contract). |
description | Full job description text. May contain HTML or plain text depending on the source listing. |
Enriched fields
These fields are generated by Jobstream's enrichment pipeline and provide standardized, structured metadata beyond what the original posting contains.
| Field | Description |
|---|---|
summary | A concise, AI-generated summary of the role. Useful for displaying a short preview without parsing the full description. |
work_location_type | Standardized work location classification. Common values: Remote, Hybrid, On-site. |
job_seniority | Seniority level of the role. Common values: Entry, Mid, Senior, Lead, Manager, Executive. |
estimated_salary_min | Lower bound of the estimated annual salary range, in USD. Integer value. May be empty if no salary data is available. |
estimated_salary_max | Upper bound of the estimated annual salary range, in USD. Integer value. May be empty if no salary data is available. |
Occupational classification
Jobstream maps each job to the O*NET occupational taxonomy, a U.S. Department of Labor standard for classifying jobs.
| Field | Description |
|---|---|
onet_code | O*NET-SOC code for the job's occupation (e.g., 15-1252.00). |
onet_title | Human-readable occupation title corresponding to the O*NET code. |
Industry taxonomy
Jobs are also classified within Jobstream's internal industry taxonomy.
| Field | Description |
|---|---|
industry | Machine-readable key for the top-level industry category (e.g., engineering, design, marketing). |
industry_label | Human-readable label for the industry category (e.g., Engineering, Design, Marketing). |
sub_industry | Machine-readable key for the industry subcategory (e.g., frontend-engineering, ux-product-design). |
sub_industry_label | Human-readable label for the subcategory (e.g., Frontend Engineering, UX & Product Design). |
Parsing the feed
When consuming the feed:
- Deduplicate by
referencenumber— this is the stable job identifier. The same job will always carry the same reference number across feed refreshes. - Always use
urlas the apply link — do not construct your own URLs from other fields. Theurlfield is the canonical destination and may be a Jobstream short link that enables proper click attribution. - Refresh the feed periodically — the feed reflects active jobs at the time of the request. We recommend polling on a regular schedule (e.g., every few hours) to keep your listing inventory in sync.
- Handle empty fields gracefully — enriched fields like
estimated_salary_min,work_location_type, and taxonomy fields may be empty for some jobs. Your parser should treat emptyCDATAsections as null/absent values.
Error responses
| Status | Meaning |
|---|---|
401 Unauthorized | Missing or invalid x-api-key header. |
404 Not Found | The provided :creator_handle does not match any creator in Jobstream. |