Examples - Job Title Enrichment API
Code examples and walkthroughs using the Job Title Enrichment API
We've provided code samples in Python, cURL, Ruby, Go and JavaScript. If you aren't comfortable working in any of these languages, feel free to use this handy tool to convert code from cURL to the language of your choice.
See a Bug? Want To See a Specific Example?
Feel free to use the
Suggest Edits
button in the top right-hand corner of this page to point out any bugs or to request any specific code examples for this API that you'd like to see here.
Basic Usage
"I want to look up information for a job title that I have."
# See https://github.com/peopledatalabs/peopledatalabs-python
from peopledatalabs import PDLPY
# Create a client, specifying your API key
CLIENT = PDLPY(
api_key="YOUR API KEY",
)
# Create a parameters JSON object
QUERY_STRING = {"job_title": "pastry chef"}
# Pass the parameters object to the Job Title Enrichment API
response = CLIENT.job_title(**QUERY_STRING)
# Print the API response
print(response.text)
curl -X GET -G \
'https://api.peopledatalabs.com/v5/job_title/enrich' \
-H 'X-Api-Key: YOUR API KEY' \
--data-urlencode 'job_title=pastry chef'
// See https://github.com/peopledatalabs/peopledatalabs-js
import PDLJS from 'peopledatalabs';
// Create a client, specifying your API key
const PDLJSClient = new PDLJS({ apiKey: "YOUR API KEY" });
// Create a parameters JSON object
const queryString = {jobTitle: "pastry chef"}
// Pass the parameters object to the Job Title API
PDLJSClient.jobTitle(queryString).then((data) => {
// Print the API response
console.log(data);
}).catch((error) => {
console.log(error);
});
# See https://github.com/peopledatalabs/peopledatalabs-ruby
require 'peopledatalabs'
# Set your API key
Peopledatalabs.api_key = 'YOUR API KEY'
# Pass parameters to the Job Title API
response = Peopledatalabs::JobTitle.retrieve("job_title":"pastry chef")
# Print the API response
puts response
package main
import (
"fmt"
"context"
)
// See https://github.com/peopledatalabs/peopledatalabs-go
import (
pdl "github.com/peopledatalabs/peopledatalabs-go"
pdlmodel "github.com/peopledatalabs/peopledatalabs-go/model"
)
func main() {
// Set your API key
apiKey := "YOUR API KEY"
// Set API key as environmental variable
// apiKey := os.Getenv("API_KEY")
// Create a client, specifying your API key
client := pdl.New(apiKey)
// Create a parameters JSON object
queryString := pdlmodel.JobTitleBaseParams{JobTitle: "pastry chef"}
params := pdlmodel.JobTitleParams{
JobTitleBaseParams: queryString,
}
// Pass the parameters object to the Job Title API
response, err := client.JobTitle(context.Background(), params)
// Check for successful response
if err == nil {
// Print the API response
fmt.Println(response)
}
}
import requests
# Set your API key
API_KEY = "YOUR API KEY"
# Set the Job Title Enrichment API URL
PDL_URL = "https://api.peopledatalabs.com/v5/job_title/enrich"
# Create a parameters JSON object
QUERY_STRING = {"job_title": "pastry chef"}
# Set headers
HEADERS = {
'accept': "application/json",
'content-type': "application/json",
'x-api-key': API_KEY
}
# Pass the parameters object to the Job Title Enrichment API
response = requests.request("GET", PDL_URL, headers=HEADERS, params=QUERY_STRING)
# Print the API response
print(response.text)
Person Searching Using Job Title Data
"I want to search for people with similar job titles."
import json
# See https://github.com/peopledatalabs/peopledatalabs-python
from peopledatalabs import PDLPY
# Create a client, specifying your API key
CLIENT = PDLPY(
api_key="YOUR API KEY",
)
# Set the maximum number of people to search
MAX_NUM_PEOPLE = 100
# The job title you want to enrich
JOB_TITLE = "supply manager"
# Create a parameters JSON object
QUERY_STRING = {"job_title": JOB_TITLE}
# Pass the parameters object to the Job Title Enrichment API
response = CLIENT.job_title(**QUERY_STRING)
# Check for successful response
if response.status_code == 200:
# Store enriched job title
enriched_job_title = response.json()
# Build list of job titles
job_titles = enriched_job_title["data"]["similar_job_titles"]
job_titles.insert(0, JOB_TITLE)
else:
enriched_job_title = {}
print(f"Job Title Enrichment Error for [{JOB_TITLE}]: {response.text}")
# Person Search matches
employee_matches = {}
# Check for enriched job title
if enriched_job_title:
# Create an Elasticsearch query
ES_QUERY = {
"query": {
"bool": {
"must": [
{"term": {"location_metro": "detroit, michigan"}},
{'term': {'industry': "automotive"}},
{"terms": {"job_title": job_titles}}
]
}
}
}
# Create a parameters JSON object
PARAMS = {
'query': ES_QUERY,
'size': MAX_NUM_PEOPLE
}
# Pass the parameters object to the Person Search API
response = CLIENT.person.search(**PARAMS).json()
# Check for successful response
if response["status"] == 200:
# Store matches
employee_matches = response["data"]
else:
employee_matches = {}
print(f"Person Search Error for [{JOB_TITLE}]: {response}")
print(f"Found {len(employee_matches)} employee profiles for {JOB_TITLE}.")
import json
# See https://github.com/peopledatalabs/peopledatalabs-python
from peopledatalabs import PDLPY
# Create a client, specifying your API key
CLIENT = PDLPY(
api_key="YOUR API KEY",
)
# Set the maximum number of people to search
MAX_NUM_PEOPLE = 100
# The job title you want to enrich
JOB_TITLE = "supply manager"
# Create a parameters JSON object
QUERY_STRING = {"job_title": JOB_TITLE}
# Pass the parameters object to the Job Title Enrichment API
response = CLIENT.job_title(**QUERY_STRING)
# Check for successful response
if response.status_code == 200:
# Store enriched job title
enriched_job_title = response.json()
# Build list of job titles
job_titles = enriched_job_title["data"]["similar_job_titles"]
job_titles.insert(0, JOB_TITLE)
job_titles_string_rep = ", ".join(
(f"'{title}'" for title in job_titles)
)
else:
enriched_job_title = {}
print(f"Job Title Enrichment Error for [{JOB_TITLE}]: {response.text}")
# Person Search matches
employee_matches = {}
# Check for enriched job title
if enriched_job_title:
# Create an SQL query
SQL_QUERY = \
f"""
SELECT * FROM person
WHERE location_metro='detroit, michigan'
AND industry = 'automotive'
AND job_title IN ({job_titles_string_rep});
"""
# Create a parameters JSON object
PARAMS = {
'sql': SQL_QUERY,
'size': MAX_NUM_PEOPLE
}
# Pass the parameters object to the Person Search API
response = CLIENT.person.search(**PARAMS).json()
# Check for successful response
if response["status"] == 200:
# Store matches
employee_matches = response["data"]
else:
employee_matches = {}
print(f"Person Search Error for [{JOB_TITLE}]: {response}")
print(f"Found {len(employee_matches)} employee profiles for {JOB_TITLE}.")
// See https://github.com/peopledatalabs/peopledatalabs-js
import PDLJS from 'peopledatalabs';
// Create a client, specifying your API key
const PDLJSClient = new PDLJS({ apiKey: "YOUR API KEY" });
// Set the maximum number of people to search
const maxNumPeople = 100;
// The job title you want to enrich
const jobTitle = "supply manager";
// Create a parameters JSON object
const queryString = {jobTitle: jobTitle};
// Pass the parameters object to the Job Title API
PDLJSClient.jobTitle(queryString).then((data) => {
// Store enriched job title
var enrichedJobTitle = data;
// Build list of job titles
var jobTitles = enrichedJobTitle["data"]["similar_job_titles"];
jobTitles.splice(0, 0, jobTitle);
// Create an Elasticsearch query
const esQuery = {
"query": {
"bool": {
"must": [
{"term": {"location_metro": "detroit, michigan"}},
{'term': {'industry': "automotive"}},
{"terms": {"job_title": jobTitles}}
]
}
}
}
// Create a parameters JSON object
const params = {
searchQuery: esQuery,
size: maxNumPeople
}
// Pass the parameters object to the Person Search API
PDLJSClient.person.search.elastic(params).then((data) => {
// Store matches
var employeeMatches = data["data"];
console.log(`Found ${employeeMatches.length} employee profiles for ${jobTitle}.`);
}).catch((error) => {
console.log(`Person Search Error for [${jobTitle}]:`, error);
});
}).catch((error) => {
console.log(`Job Title Enrichment Error for [${jobTitle}]:`, error);
});
// See https://github.com/peopledatalabs/peopledatalabs-js
import PDLJS from 'peopledatalabs';
// Create a client, specifying your API key
const PDLJSClient = new PDLJS({ apiKey: "YOUR API KEY" });
// Set the maximum number of people to search
const maxNumPeople = 100;
// The job title you want to enrich
const jobTitle = "supply manager";
// Create a parameters JSON object
const queryString = {jobTitle: jobTitle};
// Pass the parameters object to the Job Title API
PDLJSClient.jobTitle(queryString).then((data) => {
// Store enriched job title
var enrichedJobTitle = data;
// Build list of job titles
var jobTitles = enrichedJobTitle["data"]["similar_job_titles"];
jobTitles.splice(0, 0, jobTitle);
var jobTitlesStringRep = "'" + jobTitles.join("', '") + "'";
// Create an SQL query
const sqlQuery = `SELECT * FROM person
WHERE location_metro='detroit, michigan'
AND industry = 'automotive'
AND job_title IN (${jobTitlesStringRep});`
// Create a parameters JSON object
const params = {
searchQuery: sqlQuery,
size: maxNumPeople
}
// Pass the parameters object to the Person Search API
PDLJSClient.person.search.sql(params).then((data) => {
// Store matches
var employeeMatches = data["data"];
console.log(`Found ${employeeMatches.length} employee profiles for ${jobTitle}.`);
}).catch((error) => {
console.log(`Person Search Error for [${jobTitle}]:`, error);
});
}).catch((error) => {
console.log(`Job Title Enrichment Error for [${jobTitle}]:`, error);
});
# See https://github.com/peopledatalabs/peopledatalabs-ruby
require 'peopledatalabs'
# Set your API key
Peopledatalabs.api_key = 'YOUR API KEY'
# Set the maximum number of people to search
MAX_NUM_PEOPLE = 100
# The job title you want to enrich
JOB_TITLE = "supply manager"
# Pass parameters to the Job Title API
response = Peopledatalabs::JobTitle.retrieve("job_title":JOB_TITLE)
# Check for successful response
if response['status'] == 200
# Store enriched job title
enriched_job_title = response
# Build list of job titles
job_titles = enriched_job_title['data']['similar_job_titles']
job_titles.insert(0, JOB_TITLE)
else
enriched_job_title = {}
puts "Job Title Enrichment Error for [#{JOB_TITLE}]: #{response}"
end
# Person Search matches
employee_matches = {}
# Check for enriched job title
if !enriched_job_title.nil?
# Create an Elasticsearch query
ES_QUERY = {
"query": {
"bool": {
"must": [
{"term": {"location_metro": "detroit, michigan"}},
{'term': {'industry': "automotive"}},
{"terms": {"job_title": job_titles}}
]
}
}
}
# Pass parameters to the Person Search API
response = Peopledatalabs::Search.person(searchType: 'elastic', query: ES_QUERY, size: MAX_NUM_PEOPLE)
# Check for successful response
if response['status'] == 200
# Store matches
employee_matches = response['data']
else
employee_matches = {}
puts "Person Search Error for [#{JOB_TITLE}]: #{response}"
end
puts "Found #{employee_matches.length()} employee profiles for #{JOB_TITLE}."
end
# See https://github.com/peopledatalabs/peopledatalabs-ruby
require 'peopledatalabs'
# Set your API key
Peopledatalabs.api_key = 'YOUR API KEY'
# Set the maximum number of people to search
MAX_NUM_PEOPLE = 100
# The job title you want to enrich
JOB_TITLE = "supply manager"
# Pass parameters to the Job Title API
response = Peopledatalabs::JobTitle.retrieve("job_title":JOB_TITLE)
# Check for successful response
if response['status'] == 200
# Store enriched job title
enriched_job_title = response
# Build list of job titles
job_titles = enriched_job_title['data']['similar_job_titles']
job_titles.insert(0, JOB_TITLE)
job_titles_string_rep = "'" + job_titles.join("','") + "'"
else
enriched_job_title = {}
puts "Job Title Enrichment Error for [#{JOB_TITLE}]: #{response}"
end
# Person Search matches
employee_matches = {}
# Check for enriched job title
if !enriched_job_title.nil?
# Create an SQL query
SQL_QUERY = """
SELECT * FROM person
WHERE location_metro='detroit, michigan'
AND industry = 'automotive'
AND job_title IN (#{job_titles_string_rep});
"""
# Pass parameters to the Person Search API
response = Peopledatalabs::Search.person(searchType: 'sql', query: SQL_QUERY, size: MAX_NUM_PEOPLE)
# Check for successful response
if response['status'] == 200
# Store matches
employee_matches = response['data']
else
employee_matches = {}
puts "Person Search Error for [#{JOB_TITLE}]: #{response}"
end
puts "Found #{employee_matches.length()} employee profiles for #{JOB_TITLE}."
end
package main
import (
"fmt"
"encoding/json"
"reflect"
"context"
)
// See https://github.com/peopledatalabs/peopledatalabs-go
import (
pdl "github.com/peopledatalabs/peopledatalabs-go"
pdlmodel "github.com/peopledatalabs/peopledatalabs-go/model"
)
func main() {
// Set your API key
apiKey := "YOUR API KEY"
// Set API key as environmental variable
// apiKey := os.Getenv("API_KEY")
// Create a client, specifying your API key
client := pdl.New(apiKey)
// Set the maximum number of people to search
const maxNumPeople = 100
// The job title you want to enrich
jobTitle := "supply manager"
var jobTitles []string
// Create a parameters JSON object
queryString := pdlmodel.JobTitleBaseParams{JobTitle: jobTitle}
params := pdlmodel.JobTitleParams{
JobTitleBaseParams: queryString,
}
// Pass the parameters object to the Job Title API
response, err := client.JobTitle(context.Background(), params)
var enrichedJobTitle map[string][]string
// Check for successful response
if err == nil {
// Convert the API response to JSON
jsonResponse, jsonErr := json.Marshal(response.Data)
if jsonErr == nil {
// Store enriched job title
json.Unmarshal(jsonResponse, &enrichedJobTitle)
// Build list of job titles
jobTitles = enrichedJobTitle["similar_job_titles"]
jobTitles = append(jobTitles, jobTitle)
}
} else {
fmt.Printf("Job Title Enrichment Error for [%s]:\n\t", jobTitle)
fmt.Println(err)
}
// Person Search matches
var employeeMatches []pdlmodel.Person
// Check for enriched job title
if !reflect.DeepEqual(enrichedJobTitle, pdlmodel.JobTitleResponse{}) {
// Create an Elasticsearch query
elasticSearchQuery := map[string]interface{} {
"query": map[string]interface{} {
"bool": map[string]interface{} {
"must": []map[string]interface{} {
{"term": map[string]interface{}{"location_metro": "detroit, michigan"}},
{"term": map[string]interface{}{"industry": "automotive"}},
{"terms": map[string]interface{}{"job_title": jobTitles}},
},
},
},
}
// Create a parameters JSON object
params := pdlmodel.SearchParams {
BaseParams: pdlmodel.BaseParams {
Size: maxNumPeople,
},
SearchBaseParams: pdlmodel.SearchBaseParams {
Query: elasticSearchQuery,
},
}
// Pass the parameters object to the Person Search API
response, err := client.Person.Search(context.Background(), params)
// Check for successful response
if err == nil {
// Store matches
employeeMatches = response.Data
fmt.Printf("Found %d employee profiles for %s.\n", len(employeeMatches), jobTitle)
} else {
fmt.Printf("Person Search Error for [%s]:\n\t", jobTitle)
fmt.Println(err)
}
}
}
package main
import (
"fmt"
"encoding/json"
"strings"
"reflect"
"context"
)
// See https://github.com/peopledatalabs/peopledatalabs-go
import (
pdl "github.com/peopledatalabs/peopledatalabs-go"
pdlmodel "github.com/peopledatalabs/peopledatalabs-go/model"
)
func main() {
// Set your API key
apiKey := "YOUR API KEY"
// Set API key as environmental variable
// apiKey := os.Getenv("API_KEY")
// Create a client, specifying your API key
client := pdl.New(apiKey)
// Set the maximum number of people to search
const maxNumPeople = 100
// The job title you want to enrich
jobTitle := "supply manager"
var jobTitles []string
// Create a parameters JSON object
queryString := pdlmodel.JobTitleBaseParams{JobTitle: jobTitle}
params := pdlmodel.JobTitleParams{
JobTitleBaseParams: queryString,
}
// Pass the parameters object to the Job Title API
response, err := client.JobTitle(context.Background(), params)
var enrichedJobTitle map[string][]string
var jobTitlesStringRep string
// Check for successful response
if err == nil {
// Convert the API response to JSON
jsonResponse, jsonErr := json.Marshal(response.Data)
if jsonErr == nil {
// Store enriched job title
json.Unmarshal(jsonResponse, &enrichedJobTitle)
// Build list of job titles
jobTitles = enrichedJobTitle["similar_job_titles"]
jobTitles = append(jobTitles, jobTitle)
jobTitlesStringRep = "'" + strings.Join(jobTitles[:], "','") + "'"
}
} else {
fmt.Printf("Job Title Enrichment Error for [%s]:\n\t", jobTitle)
fmt.Println(err)
}
// Person Search matches
var employeeMatches []pdlmodel.Person
// Check for enriched job title
if !reflect.DeepEqual(enrichedJobTitle, pdlmodel.JobTitleResponse{}) {
// Create an SQL query
sqlQuery := "SELECT * FROM person" +
" WHERE location_metro='detroit, michigan'" +
" AND industry = 'automotive'" +
" AND job_title IN (" + jobTitlesStringRep + ");"
// Create a parameters JSON object
params := pdlmodel.SearchParams {
BaseParams: pdlmodel.BaseParams {
Size: maxNumPeople,
},
SearchBaseParams: pdlmodel.SearchBaseParams {
SQL: sqlQuery,
},
}
// Pass the parameters object to the Person Search API
response, err := client.Person.Search(context.Background(), params)
// Check for successful response
if err == nil {
// Store matches
employeeMatches = response.Data
fmt.Printf("Found %d employee profiles for %s.\n", len(employeeMatches), jobTitle)
} else {
fmt.Printf("Person Search Error for [%s]:\n\t", jobTitle)
fmt.Println(err)
}
}
}
import requests, json
# Set your API key
API_KEY = "YOUR API KEY"
# Set the Job Title Enrichment API URL
PDL_JOB_TITLE_ENRICH_URL = "https://api.peopledatalabs.com/v5/job_title/enrich"
# Set the Person Search API URL
PDL_PERSON_SEARCH_URL = "https://api.peopledatalabs.com/v5/person/search"
# Set the maximum number of people to search
MAX_NUM_PEOPLE = 100
# The job title you want to enrich
JOB_TITLE = "supply manager"
# Create a parameters JSON object
QUERY_STRING = {"job_title": JOB_TITLE}
# Set headers
HEADERS = {
'accept': "application/json",
'content-type': "application/json",
'x-api-key': API_KEY
}
# Pass the parameters object to the Job Title Enrichment API
response = requests.request("GET", PDL_JOB_TITLE_ENRICH_URL,
headers=HEADERS, params=QUERY_STRING)
# Check for successful response
if response.status_code == 200:
# Store enriched job title
enriched_job_title = response.json()
# Build list of job titles
job_titles = enriched_job_title["data"]["similar_job_titles"]
job_titles.insert(0, JOB_TITLE)
else:
enriched_job_title = {}
print(f"Job Title Enrichment Error for [{JOB_TITLE}]: {response.text}")
# Person Search matches
employee_matches = {}
# Check for enriched job title
if enriched_job_title:
# Create an Elasticsearch query
ES_QUERY = {
"query": {
"bool": {
"must": [
{"term": {"location_metro": "detroit, michigan"}},
{'term': {'industry': "automotive"}},
{"terms": {"job_title": job_titles}},
]
}
}
}
# Create a parameters JSON object
PARAMS = {
'query': json.dumps(ES_QUERY),
'size': MAX_NUM_PEOPLE
}
# Pass the parameters object to the Person Search API
response = requests.get(PDL_PERSON_SEARCH_URL, headers=HEADERS, params=PARAMS)
# Check for successful response
if response.status_code == 200:
# Store matches
employee_matches = response.json()["data"]
else:
employee_matches = {}
print(f"Person Search Error for [{JOB_TITLE}]: {response.text}")
print(f"Found {len(employee_matches)} employee profiles for {JOB_TITLE}.")
import requests, json
# Set your API key
API_KEY = "YOUR API KEY"
# Set the Job Title Enrichment API URL
PDL_JOB_TITLE_ENRICH_URL = "https://api.peopledatalabs.com/v5/job_title/enrich"
# Set the Person Search API URL
PDL_PERSON_SEARCH_URL = "https://api.peopledatalabs.com/v5/person/search"
# Set the maximum number of people to search
MAX_NUM_PEOPLE = 100
# The job title you want to enrich
JOB_TITLE = "supply manager"
# Create a parameters JSON object
QUERY_STRING = {"job_title": JOB_TITLE}
# Set headers
HEADERS = {
'accept': "application/json",
'content-type': "application/json",
'x-api-key': API_KEY
}
# Pass the parameters object to the Job Title Enrichment API
response = requests.request("GET", PDL_JOB_TITLE_ENRICH_URL,
headers=HEADERS, params=QUERY_STRING)
# Check for successful response
if response.status_code == 200:
# Store enriched job title
enriched_job_title = response.json()
# Build list of job titles
job_titles = enriched_job_title["data"]["similar_job_titles"]
job_titles.insert(0, JOB_TITLE)
job_titles_string_rep = ", ".join(
(f"'{title}'" for title in job_titles)
)
else:
enriched_job_title = {}
print(f"Job Title Enrichment Error for [{JOB_TITLE}]: {response.text}")
# Person Search matches
employee_matches = {}
# Check for enriched job title
if enriched_job_title:
# Create an SQL query
SQL_QUERY = f"""
SELECT * FROM person
WHERE location_metro='detroit, michigan'
AND industry = 'automotive'
AND job_title IN ({job_titles_string_rep});
"""
# Create a parameters JSON object
PARAMS = {
'sql': SQL_QUERY,
'size': MAX_NUM_PEOPLE
}
# Pass the parameters object to the Person Search API
response = requests.get(PDL_PERSON_SEARCH_URL, headers=HEADERS, params=PARAMS)
# Check for successful response
if response.status_code == 200:
# Store matches
employee_matches = response.json()["data"]
else:
employee_matches = {}
print(f"Person Search Error for [{JOB_TITLE}]: {response.text}")
print(f"Found {len(employee_matches)} employee profiles for {JOB_TITLE}.")
Updated 12 months ago