Lightcast Titles APIs help you normalize, standardize, and analyze job title data across structured and unstructured inputs. They enable you to convert raw or inconsistent job titles into standardized titles from the Lightcast taxonomy, improving consistency, classification, and downstream analytics.
Explore the use cases below to understand how Titles APIs can be applied in real-world scenarios.
Extract Titles from File
Text is often complex and unstructured, especially when it includes variations in titles, descriptions, and company context. The workflow processes this information to generate standardized outputs from a single request.
When a request is submitted, the job title, description, and company details are analyzed together and mapped to the Lightcast taxonomy. The API returns a normalized job title, associated skills, and the corresponding LOT occupation classification, each supported by confidence scores. This allows you to consistently represent job data, reduce ambiguity, and enable more reliable analysis and comparison across datasets
When to Use
- You have full job posting data (title, description, company)
- You want to extract multiple structured outputs in a single request
- You need to enrich job data for search, matching, or analytics
Endpoint
https://classification.emsicloud.com/classifications/{release}/titles/normalize/fileSample Request
curl --request POST \
--url 'https://classification.emsicloud.com/classifications/release/titles/normalize/file?confidence_threshold=0.5' \
--header 'accept: application/json' \
--header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjNDNjZCRjIzMjBGNkY4RDQ2QzJERDhCMjI0MEVGMTFENTZEQkY3MUYiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJQR2FfSXlEMi1OUnNMZGl5SkE3eEhWYmI5eDgifQ.eyJuYmYiOjE3NzY4NDI0NjQsImV4cCI6MTc3Njg0NjA2NCwiaXNzIjoiaHR0cHM6Ly9hdXRoLmVtc2ljbG91ZC5jb20iLCJhdWQiOlsiZW1zaV9vcGVuIiwiaHR0cHM6Ly9hdXRoLmVtc2ljbG91ZC5jb20vcmVzb3VyY2VzIl0sImNsaWVudF9pZCI6ImdzYWlzdXJ5YXAiLCJuYW1lIjoiR2F0dGEgU2FpIFN1cnlhIiwiY29tcGFueSI6IkxpZ2h0Y2FzdCIsImVtYWlsIjoiZ3NhaXN1cnlhLnBAbGlnaHRjYXN0LmlvIiwicm9sZSI6WyJpcGVkcyIsImNvbXAiXSwiaWF0IjoxNzc2ODQyNDY0LCJzY29wZSI6WyJjbGFzc2lmaWNhdGlvbjp0YXhvbm9taWVzOioiLCJkYXRhc2V0OmVtc2kuKjoqOioiLCJiZW5jaG1hcms6c3VwcGx5LGRlbWFuZCxjb21wZW5zYXRpb24sZGl2ZXJzaXR5LHNraWxscyIsImVtc2lfb3BlbiJdfQ.PGbcXMAvi19bhlr4C9D2mByQ0r7AfCiygQIkSSYmM_YiNchzmYz_tK5iIE2pRFQwydjXhxdwNvuuDup_WD4J5C7zRU0IffbSA3MKbV0HPHW_AX7xwO4Zt8SGHuii5UJ7iksy0qd8KwPZbdhVg9vTp2Dmrqbk9fv77OQA4iWAinkqdLXrtWdysx5l1yMba0Lr8khAhpHEzhzO-1FnDqg2JIlUnR0t4P2Ck_3q61EEy4jtB4NLe6jT7ukEzahDazJDQfXuRaHel5zR7PVe5JcuGb4IC-nuReJZqUQQWPZjNaxRnd7vXEOgdeSYQNppEeluFL6HlyK-I3iPDedqM5BVwg' \
--header 'content-type: multipart/form-data' \
--form fileUpload=stringSample Response
{
"data": [
{
"term": "data scientist",
"count": 5,
"results": [
{
"confidence": 1,
"concept": {
"id": "ET3B93055220D592C8",
"levelName": "title",
"name": "Data Scientist"
}
},
{
"confidence": 0.8669570684432983,
"concept": {
"id": "ET3AE48711ACE264B6",
"levelName": "title",
"name": "Data Scientist/Analyst"
}
},
{
"confidence": 0.8461793661117554,
"concept": {
"id": "ETB15B6675998124CE",
"levelName": "title",
"name": "Lead Data Scientist"
}
},
{
"confidence": 0.8440513610839844,
"concept": {
"id": "ET3301B62626426FD5",
"levelName": "title",
"name": "Data Science Engineer"
}
},
{
"confidence": 0.8351563811302185,
"concept": {
"id": "ETAD0FE97673823E23",
"levelName": "title",
"name": "Director/Data Scientist"
}
}
]
},
{
"term": "software engineer",
"count": 5,
"results": [
{
"confidence": 1,
"concept": {
"id": "ET6850661D6AE5FA86",
"levelName": "title",
"name": "Software Engineer"
}
},
{
"confidence": 0.9032101631164551,
"concept": {
"id": "ET075A0E51EC31D29B",
"levelName": "title",
"name": "IT Software Engineer"
}
},
{
"confidence": 0.8967119455337524,
"concept": {
"id": "ET8597B2AB64F8F382",
"levelName": "title",
"name": "Software Engineer in C"
}
},
{
"confidence": 0.8702847957611084,
"concept": {
"id": "ETCBD24DF2BB8AFF42",
"levelName": "title",
"name": "Software Engineer/Software Developer"
}
},
{
"confidence": 0.8685315847396851,
"concept": {
"id": "ETE9B389D83C9376B0",
"levelName": "title",
"name": "Software Engineer/Analyst"
}
}
]
},
{
"term": "sysadmin",
"count": 5,
"results": [
{
"confidence": 1,
"concept": {
"id": "ET9CFD6A9577D1BCEF",
"levelName": "title",
"name": "Systems Administrator"
}
},
{
"confidence": 0.8456143140792847,
"concept": {
"id": "ETDF5FC25CDD76040A",
"levelName": "title",
"name": "Lead Systems Administrator"
}
},
{
"confidence": 0.7961276769638062,
"concept": {
"id": "ET1E554AE0233A437A",
"levelName": "title",
"name": "Systems Administrator/Engineer"
}
},
{
"confidence": 0.787236213684082,
"concept": {
"id": "ETE2068355A7CAD099",
"levelName": "title",
"name": "Data Systems Administrator"
}
},
{
"confidence": 0.7479365468025208,
"concept": {
"id": "ET4169B602DC577CCE",
"levelName": "title",
"name": "Security Systems Administrator"
}
}
]
}
],
"warnings": []
}Normalize a Job Title
Titles are often inconsistent or vary widely in format, especially when sourced from different systems or user inputs. This workflow maps these raw titles to standardized titles in the Lightcast taxonomy.
Each title is evaluated and matched to the closest canonical title, returning one or more possible matches ranked by confidence. This allows you to assess the reliability of each match, apply appropriate thresholds, and consistently represent job titles using standardized identifiers.
When to Use
- You have raw or inconsistent job titles
- You need to standardize titles for consistency across datasets
- You want to prepare title data for mapping or analytics
Endpoint
https://api.lightcast.io/titles/versions/{version}/normalizeSample Request
curl --request POST \
--url 'https://api.lightcast.io/titles/versions/version/normalize?confidenceThreshold=0.5&fields=id%2Cname' \
--header 'accept: application/json' \
--header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjNDNjZCRjIzMjBGNkY4RDQ2QzJERDhCMjI0MEVGMTFENTZEQkY3MUYiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJQR2FfSXlEMi1OUnNMZGl5SkE3eEhWYmI5eDgifQ.eyJuYmYiOjE3NzY3NjE4NjMsImV4cCI6MTc3Njc2NTQ2MywiaXNzIjoiaHR0cHM6Ly9hdXRoLmVtc2ljbG91ZC5jb20iLCJhdWQiOlsiZW1zaV9vcGVuIiwiaHR0cHM6Ly9hdXRoLmVtc2ljbG91ZC5jb20vcmVzb3VyY2VzIl0sImNsaWVudF9pZCI6InJlYWRtZS13ZWJob29rIiwiY29tcGFueSI6IkxpZ2h0Y2FzdCIsImVtYWlsIjoiYXBpLWRldi11c0BsaWdodGNhc3QuaW8iLCJpYXQiOjE3NzY3NjE4NjMsInNjb3BlIjpbImVtc2lfb3BlbiJdfQ.FZYanQxw8DBijyUreI28PG5dVADF9tm8AlEEC6k_z2zf4eo2TbYjOLd6W20IVZjfalxqqnGw3uO0gJUEpbkKSegjmpC49uVkII8ef9H93I5Yns0-oswr8WtqSQ4xGLzXHqkM6x2mzVap6QZCHETYs8epRnZHrRuieeWFQX50CDW-cZfeLOLw8As9iv7KnJOcf6PFwDGxtxGc3Jd00K3w5ixRDUAdU1Kk3bQj4zlnH8c8pAaPBxWfj7z4Exv7xMcR_vH3xu_hayW2Sew3CIJeColf1zN04jnya8tf3VtCgGdjJ3eCvT4Cwoa9wzCTZ5Dq-P4XtCT8Oj35wi6HDtWsMA' \
--header 'content-type: application/json' \
--data '
{
"term": "data scientist",
"confidenceThreshold": 0.5
}
'Sample Response
{
"data": {
"confidence": 1,
"jobLevels": [],
"title": {
"id": "ET3B93055220D592C8",
"name": "Data Scientist"
}
}
}Normalize Titles in Bulk
Titles are often processed in large volumes, especially when working with bulk datasets or multiple data sources. This workflow supports standardizing multiple titles within a single request.
When a request is submitted, each title is evaluated independently and mapped to the closest matching canonical title in the Lightcast taxonomy, with results ranked by confidence. This enables efficient bulk processing, reduces the need for repeated API calls, and ensures consistent normalization across your dataset.
When to Use
- You are processing large volumes of job title data
- You want to normalize multiple titles efficiently in a single request
- You need to reduce API calls by batching requests
Endpoint
https://api.lightcast.io/titles/versions/{version}/normalize/bulkSample Request
curl --request POST \
--url 'https://api.lightcast.io/titles/versions/latest/normalize/bulk?confidenceThreshold=0.5&fields=id%2Cname' \
--header 'accept: application/json' \
--header 'authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjNDNjZCRjIzMjBGNkY4RDQ2QzJERDhCMjI0MEVGMTFENTZEQkY3MUYiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJQR2FfSXlEMi1OUnNMZGl5SkE3eEhWYmI5eDgifQ.eyJuYmYiOjE3NzY3NjE4NjMsImV4cCI6MTc3Njc2NTQ2MywiaXNzIjoiaHR0cHM6Ly9hdXRoLmVtc2ljbG91ZC5jb20iLCJhdWQiOlsiZW1zaV9vcGVuIiwiaHR0cHM6Ly9hdXRoLmVtc2ljbG91ZC5jb20vcmVzb3VyY2VzIl0sImNsaWVudF9pZCI6InJlYWRtZS13ZWJob29rIiwiY29tcGFueSI6IkxpZ2h0Y2FzdCIsImVtYWlsIjoiYXBpLWRldi11c0BsaWdodGNhc3QuaW8iLCJpYXQiOjE3NzY3NjE4NjMsInNjb3BlIjpbImVtc2lfb3BlbiJdfQ.FZYanQxw8DBijyUreI28PG5dVADF9tm8AlEEC6k_z2zf4eo2TbYjOLd6W20IVZjfalxqqnGw3uO0gJUEpbkKSegjmpC49uVkII8ef9H93I5Yns0-oswr8WtqSQ4xGLzXHqkM6x2mzVap6QZCHETYs8epRnZHrRuieeWFQX50CDW-cZfeLOLw8As9iv7KnJOcf6PFwDGxtxGc3Jd00K3w5ixRDUAdU1Kk3bQj4zlnH8c8pAaPBxWfj7z4Exv7xMcR_vH3xu_hayW2Sew3CIJeColf1zN04jnya8tf3VtCgGdjJ3eCvT4Cwoa9wzCTZ5Dq-P4XtCT8Oj35wi6HDtWsMA' \
--header 'content-type: application/json' \
--data '
{
"terms": [
"data scientist",
"software engineer"
],
"confidenceThreshold": 0.5
}
'Sample Response
{
"data": [
{
"confidence": 1,
"term": "data scientist",
"jobLevels": [],
"title": {
"id": "ET3B93055220D592C8",
"name": "Data Scientist"
}
},
{
"confidence": 1,
"term": "software engineer",
"jobLevels": [],
"title": {
"id": "ET6850661D6AE5FA86",
"name": "Software Engineer"
}
}
]
}Map Title to Occupation (LOT)
Normalized job titles on their own do not provide full context for classification or analysis. To enable consistent role categorization, these titles can be mapped to the Lightcast Occupation Taxonomy (LOT).
Based on the normalized title, the system maps it to the appropriate LOT occupation, returning a standardized classification supported by the taxonomy. This allows you to align roles within a well-defined occupational framework, making it easier to group, analyze, and compare job data across different datasets.
When to Use
- You have normalized title IDs and need occupation mapping
- You want to group roles into standardized occupation categories
- You need occupation-level data for reporting or workforce insights
Endpoint
https://classification.emsicloud.com/mappings/titles_v5.3.0_lot_v6.1.4Sample Request
{
"ids": ["ETAA6FBD39376F5BBC"]
}Sample Response
{
"data": {
"ETAA6FBD39376F5BBC": [
"27111320"
]
}
}
