Skills & Occupations API
Archive Partners provides a skills and occupations API built on the ESCO v1.2.1 classification. It is compatible with the Lightcast DDN response shape.
This service uses the ESCO classification of the European Commission.
Base URL: https://archive.partners/api
Endpoints
GET /api/skills
Search skills by name or retrieve all skills for a given occupation.
GET /api/occupations
Search occupations by name or ISCO code. Retrieve a single occupation with its full essential and optional skills.
POST /api/skills-to-occ
Submit a list of skills and receive ranked occupations by match score. Mirrors Lightcast's DDN bulk endpoint.
GET /api/skills
Search skills by name, or get all skills for a specific occupation.
Query parameters
| Param | Type | Description |
|---|---|---|
q |
string | Search skills by name. Partial match. |
occupation |
string | ESCO occupation ID — returns all skills for that occupation. |
type |
string | Filter by knowledge or skill/competence. |
limit |
integer | Max results. Default 20, max 100. |
Example — search by name
GET /api/skills?q=python&limit=5
{
"attributionText": "This service uses the ESCO classification of the European Commission. ESCO v1.2.1.",
"data": [
{
"id": "ccd0a1d9-afda-43d9-b901-96344886e14d",
"name": "Python (computer programming)",
"type": "knowledge"
}
],
"meta": { "total": 1, "returned": 1, "version": "esco-1.2.1" }
}
Example — skills for an occupation
GET /api/skills?occupation=57af9090-55b4-4911-b2d0-86db01c00b02
Returns definingSkills, distinguishingSkills, and necessarySkills for that occupation.
GET /api/occupations
Search occupations by name or ISCO code, or retrieve a single occupation by ID.
Query parameters
| Param | Type | Description |
|---|---|---|
q |
string | Search occupations by name. Partial match. |
id |
string | ESCO occupation UUID — returns full record with all skills. |
code |
string | ISCO-08 code (e.g. 2512). |
limit |
integer | Max results. Default 20, max 100. |
Example — search
GET /api/occupations?q=software+developer&limit=3
{
"attributionText": "This service uses the ESCO classification of the European Commission. ESCO v1.2.1.",
"data": [
{ "id": "57af9090-...", "name": "embedded systems software developer", "code": "2514.2.1" },
{ "id": "781a6350-...", "name": "cloud software developer", "code": "2512.8" },
{ "id": "bb6198c4-...", "name": "industrial mobile devices software developer", "code": "2514.3" }
],
"meta": { "total": 4, "returned": 3, "version": "esco-1.2.1" }
}
Example — single occupation with skills
GET /api/occupations?id=57af9090-55b4-4911-b2d0-86db01c00b02
{
"attributionText": "...",
"data": {
"id": "57af9090-...",
"name": "embedded systems software developer",
"code": "2514.2.1",
"iscoGroup": "2514",
"essentialSkills": [
{ "id": "...", "name": "C++", "type": "knowledge" },
{ "id": "...", "name": "embedded systems", "type": "knowledge" }
],
"optionalSkills": [
{ "id": "...", "name": "Python (computer programming)", "type": "knowledge" }
]
},
"meta": { "version": "esco-1.2.1" }
}
POST /api/skills-to-occ
Submit up to 50 skill names or ESCO skill IDs. Returns occupations ranked by how many of your skills they require, with a matchScore from 0 to 1.
Request body
| Field | Type | Description |
|---|---|---|
skills |
string[] | Required. 1–50 skill names or ESCO IDs. |
relationType |
string | essential or any (default). |
limit |
integer | Max occupations returned. Default 10, max 50. |
Example
POST /api/skills-to-occ
Content-Type: application/json
{
"skills": ["Python (computer programming)", "machine learning", "data analysis"],
"limit": 5
}
{
"attributionText": "This service uses the ESCO classification of the European Commission. ESCO v1.2.1. Occupation matching by Archive Partners.",
"data": [
{
"id": "abc123-...",
"name": "data scientist",
"code": "2511.4",
"matchScore": 1.0,
"matchedSkills": ["Python (computer programming)", "machine learning", "data analysis"],
"matchCount": 3
},
{
"id": "def456-...",
"name": "machine learning engineer",
"code": "2511.8",
"matchScore": 0.67,
"matchedSkills": ["Python (computer programming)", "machine learning"],
"matchCount": 2
}
],
"meta": { "inputSkills": 3, "resolvedSkills": 3, "version": "esco-1.2.1" }
}
Match score is matchCount / resolvedSkills — the proportion of your input skills that appear in that occupation’s ESCO profile.
Also see
- Jobs API — live UK job listings by county via Reed
- Company data — Companies House signals, county leaderboards, iXBRL filings
- Talk to us — custom feeds, bulk exports, partner access
Live jobs at
Loading jobs…