Jobr collects fresh job listings directly from company career portals and ATS systems throughout the day. If you run a job board, aggregator, or career site, you can pull from our feed for free and syndicate listings on your own site.
https://jobr.pro/feed.xmlReturns fresh, active listings as XML, refreshed hourly. Filter it with the query parameters below — for example:
https://jobr.pro/feed.xml?role=Software+Engineer&location=US&limit=50| Parameter | Example | Description |
|---|---|---|
| role | Software Engineer | Filter to a single job title. |
| location | US | Filter to a country — ISO 3166-1 alpha-2 code (e.g. US, GB). |
| limit | 100 | Max results per request (default 100, capped at 500). |
Only these three parameters affect the response — the feed is cached per unique combination, so sticking to these keeps requests fast. Other query params are ignored.
The feed only returns jobs from these markets — a location value outside this list is ignored and falls back to all of them combined:
A stable id, title, full description (HTML, wrapped in CDATA — see below), location, job type, company name/website/logo, and a publish date — enough to display and de-duplicate a real listing on your own site.
The description field contains real HTML (headings, lists, bold text — however the employer originally formatted it), wrapped in a CDATA block per the XML spec, so tags inside it don't get parsed as XML markup. Any standard XML parser unwraps this automatically — you'll get the HTML back as a plain string to render or strip tags from, however you prefer.
The applyUrl field points to a Jobr redirect page rather than the employer's raw application URL directly — clicking through still takes the visitor to the real application, same as if they'd found the job on Jobr itself.
A route handler that fetches and parses the feed, using fast-xml-parser (any XML parser works the same way — this one's just a common, lightweight choice):
// app/api/jobr-jobs/route.ts
import { XMLParser } from 'fast-xml-parser';
export async function GET() {
const res = await fetch(
'https://jobr.pro/feed.xml?role=Software+Engineer&location=US&limit=50',
{ next: { revalidate: 3600 } }, // stay within one fetch per cache window
);
const xml = await res.text();
const parser = new XMLParser({ cdataPropName: '__cdata' });
const parsed = parser.parse(xml);
// Normalize: fast-xml-parser gives a single object (not an array) when there's only one <job>
const rawJobs = parsed.jobs?.job ?? [];
const jobs = Array.isArray(rawJobs) ? rawJobs : [rawJobs];
const listings = jobs.map((job: any) => ({
id: job.id,
title: job.title,
descriptionHtml: job.description?.__cdata ?? '',
location: job.location,
company: job.company?.name,
applyUrl: job.applyUrl,
}));
return Response.json(listings);
}This feed is free to use, no signup required. If you're displaying these listings on your own site, we'd appreciate a visible credit — something like “Jobs via Jobr” linking back to jobr.pro. It's not required to use the feed, but it helps us keep it free and worth continuing to invest in.
Reach out at [email protected] if you're integrating this and run into anything.