UN APIcareers.un.org ↗
Retrieve structured UN job openings data filtered by job network and family. Access titles, levels, departments, duty stations, and direct URLs via one endpoint.
What is the UN API?
The UN Careers API exposes a single get_job_openings endpoint that returns structured data across up to 13 fields per position — including job title, level, department, duty station, and posting dates — sourced from the United Nations Careers portal. Supports filtering by job network codes (such as LEGALNET, POLNET, DEVNET) and job family codes (such as LEG, POL, HRI), and automatically paginates through all matching results to return a complete dataset in one call.
curl -X GET 'https://api.parse.bot/scraper/38aeaefc-8ad9-426a-90d9-73be35810e3e/get_job_openings?job_networks=LEGALNET&items_per_page=10' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace careers-un-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.un_careers_job_openings_api import UNCareers, JobOpening, JobNetwork
client = UNCareers()
# Search for legal job openings
for job in client.jobopenings.search(job_networks=JobNetwork.LEGALNET):
print(job.posting_title, job.job_level, job.duty_station, job.deadline)
Retrieve all open job positions matching the specified job network and job family filters. Returns structured data for each position including title, level, department, duty station, dates, and direct URL. Automatically paginates through all matching results. When no filters are provided, defaults to LEGALNET and POLNET networks. Each returned job includes a direct URL to its posting on the UN Careers portal.
| Param | Type | Description |
|---|---|---|
| job_families | string | Comma-separated job family codes to filter by (e.g. LEG, POL, HRI, HRA). Omitting returns all families within the selected networks. |
| job_networks | string | Comma-separated job network codes to filter by. Accepted values: LEGALNET, POLNET, DEVNET, ITECNET, PSNET, SAFETYNET, ECONSOCNET, MGTNET, LOGNET, INFONET. |
| items_per_page | integer | Number of items per internal API page. Higher values reduce API calls. |
{
"type": "object",
"fields": {
"jobs": "array of job objects with fields: job_id, posting_title, job_title, job_code_title, job_level, category, category_code, job_network, job_network_code, job_family, job_family_code, department, duty_station, date_posted, deadline, recruitment_type, url",
"total_count": "integer - Total number of matching jobs",
"jobs_returned": "integer - Number of jobs in this response",
"filters_applied": "object containing job_networks (array of applied network codes) and job_families (array of applied family codes)"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://careers.un.org/jobopening/278490?language=en",
"job_id": 278490,
"category": "Professional and Higher Categories",
"deadline": "2026-06-28",
"job_level": "P-5",
"job_title": "Registrar",
"department": "United Nations Relief and Works Agency (UNRWA)",
"job_family": "Legal Affairs",
"date_posted": "2026-06-07",
"job_network": "Legal",
"duty_station": "HQ Amman",
"category_code": "PD",
"posting_title": "Registrar, P5",
"job_code_title": "Registrar",
"job_family_code": "LEG",
"job_network_code": "LEGALNET",
"recruitment_type": "R"
}
],
"total_count": 6,
"jobs_returned": 6,
"filters_applied": {
"job_families": [],
"job_networks": [
"LEGALNET"
]
}
},
"status": "success"
}
}About the UN API
What the Endpoint Returns
The get_job_openings endpoint returns an array of job objects under the jobs field, each containing: job_id, posting_title, job_title, job_code_title, job_level, category, category_code, job_network, duty station, date fields, and a direct URL to the listing on careers.un.org. The response also includes total_count (total matching positions), jobs_returned (positions in the current response), and a filters_applied object confirming which job_networks and job_families arrays were active.
Filtering and Pagination
Two optional string parameters control scope: job_networks accepts comma-separated codes from a fixed set — LEGALNET, POLNET, DEVNET, ITECNET, PSNET, SAFNET — and job_families accepts codes such as LEG, POL, HRI, or HRA. Omitting either parameter returns all values within that dimension. The items_per_page integer parameter controls batch size for internal pagination; the endpoint aggregates all pages automatically so the caller always receives the full result set, not a single page.
Coverage and Scope
Data covers currently open positions posted on the UN Careers portal across departments and duty stations worldwide. The job_level field distinguishes grades (e.g., P-3, D-1, G-5), and category_code separates professional, general service, and other contract types. Results reflect the live state of the portal at call time.
The UN API is a managed, monitored endpoint for careers.un.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when careers.un.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official careers.un.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a job alert system that monitors new postings in POLNET or LEGALNET networks by comparing
job_idsets between daily calls. - Aggregate UN vacancy data by duty station to analyze geographic distribution of open roles across departments.
- Filter by
job_levelvalues to surface only senior professional (P-5, D-1) postings for executive-level candidates. - Feed a custom careers dashboard that surfaces UN positions alongside other international organization listings.
- Track posting frequency by
category_codeto research UN hiring patterns across professional and general service categories. - Extract
posting_titleand direct URLs to populate a curated newsletter of open UN legal or policy roles. - Compare open headcount across job networks (DEVNET vs. ITECNET) for organizational research or workforce analysis.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does the UN Careers portal have an official public developer API?+
What does the `filters_applied` field tell me, and why does it matter?+
filters_applied object in the response echoes back the job_networks and job_families arrays that were actually applied to the query. This is useful for confirming that your filter codes were recognized — particularly when passing multiple comma-separated values — and for logging which parameters produced a given result set.Does the API return historical or closed job postings?+
get_job_openings only returns positions that are currently open on the portal at the time of the call. Closed, expired, or filled postings are not included in the response. You can fork this API on Parse and revise it to add an endpoint targeting archived or past postings if that data becomes accessible.Can I retrieve individual job descriptions or application details for a specific posting?+
job_id.Are there job network codes beyond the six listed in the parameter documentation?+
job_networks are LEGALNET, POLNET, DEVNET, ITECNET, PSNET, and SAFNET. Passing unrecognized codes will result in no filter being applied for that value, and filters_applied in the response will reflect only the recognized codes.