Examples - Skill 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.

💡

We want your feedback!

Do you see a bug? Is there an example you'd like to see that's not listed here?

Head over to the public roadmap and submit a bug ticket or a feature request and receive automatic notifications as your bug is resolved or your request is implemented.

Basic Usage

"I want to look up information for a skill 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 = {"skill": "pyspark"}

# Pass the parameters object to the Skill Enrichment API
response = CLIENT.skill(**QUERY_STRING)

# Print the API response
print(response.text)
curl -X GET -G \
  'https://api.peopledatalabs.com/v5/skill/enrich' \
  -H 'X-Api-Key: YOUR API KEY' \
  --data-urlencode 'skill=pyspark'
// 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 = {skill: "pyspark"}

// Pass the parameters object to the Skill API
PDLJSClient.skill(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 Skill API
response = Peopledatalabs::Skill.retrieve("skill": "pyspark")

# 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.SkillBaseParams{Skill: "pyspark"}
    
    params := pdlmodel.SkillParams{
        SkillBaseParams: queryString,
    }
    
    // Pass the parameters object to the Skill API
    response, err := client.Skill(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 Skill Enrichment API URL
PDL_URL = "https://api.peopledatalabs.com/v5/skill/enrich"

# Create a parameters JSON object
QUERY_STRING = {"skill": "pyspark"}

# Set headers
HEADERS = {
    'accept': "application/json",
    'content-type': "application/json",
    'x-api-key': API_KEY
}

# Pass the parameters object to the Skill Enrichment API
response = requests.request("GET", PDL_URL, headers=HEADERS, params=QUERY_STRING)

# Print the API response
print(response.text)

Person Searching Using Skill Data

"I want to search for people with similar skills."

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 skill you want to enrich
SKILL = "ai"
# Create a parameters JSON object
QUERY_STRING = {"skill": SKILL}

# Pass the parameters object to the Skill Enrichment API
response = CLIENT.skill(**QUERY_STRING)

# Check for successful response
if response.status_code == 200:
  # Store enriched skill
  enriched_skill = response.json()
  # Build list of skills
  skills = enriched_skill["data"]["similar_skills"]
  skills.insert(0, SKILL)
else:
  enriched_skill = {}
  print(f"Skill Enrichment Error for [{SKILL}]: {response.text}")
                                                      
# Person Search matches
employee_matches = {}

# Check for enriched skill
if enriched_skill:
  # Create an Elasticsearch query
  ES_QUERY = {
  	"query": {
    	"bool": {
        	"must": [
            	{"term": {"location_region": "utah"}},
            	{"terms": {"skills": skills}},
      		]
    	}
  	}
  }

  # 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 [{SKILL}]: {response}")

  print(f"Found {len(employee_matches)} employee profiles for {SKILL}.")
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 skill you want to enrich
SKILL = "ai"
# Create a parameters JSON object
QUERY_STRING = {"skill": SKILL}

# Pass the parameters object to the Skill Enrichment API
response = CLIENT.skill(**QUERY_STRING)

# Check for successful response
if response.status_code == 200:
  # Store enriched skill
  enriched_skill = response.json()
  # Build list of skills
  skills = enriched_skill["data"]["similar_skills"]
  skills.insert(0, SKILL)
  skills_string_rep = ", ".join(
    (f"'{skl}'" for skl in skills)
  )
else:
  enriched_skill = {}
  print(f"Skill Enrichment Error for [{SKILL}]: {response.text}")
                                                      
# Person Search matches
employee_matches = {}

# Check for enriched skill
if enriched_skill:
  # Create an SQL query
  SQL_QUERY = f"""
  SELECT * FROM person
  WHERE location_region='utah'
  AND skills IN ({skills_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 [{SKILL}]: {response}")

  print(f"Found {len(employee_matches)} employee profiles for {SKILL}.")
// 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 skill you want to enrich
const skill = "ai";
// Create a parameters JSON object
const queryString = {skill: skill};

// Pass the parameters object to the Skill API
PDLJSClient.skill(queryString).then((data) => {
    // Store enriched skill
    var enrichedSkill = data;
    // Build list of skills
    var skills = enrichedSkill["data"]["similar_skills"];
    skills.splice(0, 0, skill);
    
    // Create an Elasticsearch query
    const esQuery = {
        "query": {
            "bool": {
                "must": [
                    {"term": {"location_region": "utah"}},
                    {"terms": {"skills": skills}}
      		    ]
    	   }
        }
    }

    // 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 ${skill}.`); 
    }).catch((error) => {
        console.log(`Person Search Error for [${skill}]:`, error);
    });
       
}).catch((error) => {
    console.log(`Skill Enrichment Error for [${skill}]:`, 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 skill you want to enrich
const skill = "ai";
// Create a parameters JSON object
const queryString = {skill: skill};

// Pass the parameters object to the Skill API
PDLJSClient.skill(queryString).then((data) => {
    // Store enriched skill
    var enrichedSkill = data;
    // Build list of skills
    var skills = enrichedSkill["data"]["similar_skills"];
    skills.splice(0, 0, skill);
    var skillsStringRep = "'" + skills.join("', '") + "'";
    
    // Create an SQL query
    const sqlQuery = `SELECT * FROM person 
                        WHERE location_region='utah'
                        AND skills IN (${skillsStringRep});`

    // 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 ${skill}.`); 
    }).catch((error) => {
        console.log(`Person Search Error for [${skill}]:`, error);
    });
       
}).catch((error) => {
    console.log(`Skill Enrichment Error for [${skill}]:`, 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 skill you want to enrich
SKILL = "ai"

# Pass parameters to the Skill API
response = Peopledatalabs::Skill.retrieve("skill":SKILL)

# Check for successful response
if response['status'] == 200
  # Store enriched skill
  enriched_skill = response
  # Build list of skills
  skills = enriched_skill['data']['similar_skills']
  skills.insert(0, SKILL)
else
  enriched_skill = {}
  puts "Skill Enrichment Error for [#{SKILL}]: #{response}"
end

# Person Search matches
employee_matches = {}

# Check for enriched job title
if !enriched_skill.nil?
  # Create an Elasticsearch query
  ES_QUERY = {
  	"query": {
    	"bool": {
        	"must": [
            	{"term": {"location_region": "utah"}},
            	{"terms": {"skills": skills}}
      		]
    	}
  	}
  }

  # 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 [#{SKILL}]: #{response}"
  end

  puts "Found #{employee_matches.length()} employee profiles for #{SKILL}."
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 skill you want to enrich
SKILL = "ai"

# Pass parameters to the Skill API
response = Peopledatalabs::Skill.retrieve("skill":SKILL)

# Check for successful response
if response['status'] == 200
  # Store enriched skill
  enriched_skill = response
  # Build list of skills
  skills = enriched_skill['data']['similar_skills']
  skills.insert(0, SKILL)
  skills_string_rep = "'" + skills.join("','") + "'"
else
  enriched_skill = {}
  puts "Skill Enrichment Error for [#{SKILL}]: #{response}"
end

# Person Search matches
employee_matches = {}

# Check for enriched job title
if !enriched_skill.nil?
  # Create an SQL query
  SQL_QUERY = """
    SELECT * FROM person
    WHERE location_region='utah'
    AND skills IN (#{skills_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 [#{SKILL}]: #{response}"
  end

  puts "Found #{employee_matches.length()} employee profiles for #{SKILL}."
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 skill you want to enrich
    skill := "ai"
    
    var skills []string
    
    // Create a parameters JSON object
    queryString := pdlmodel.SkillBaseParams{Skill: skill}
    
    params := pdlmodel.SkillParams{
        SkillBaseParams: queryString,
    }
    
    // Pass the parameters object to the Skill API
    response, err := client.Skill(context.Background(), params)
    
    var enrichedSkill 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 skill
            json.Unmarshal(jsonResponse, &enrichedSkill)
            // Build list of skills
            skills = enrichedSkill["similar_skills"]
            skills = append(skills, skill)
        }
    } else {
        fmt.Printf("Skill Enrichment Error for [%s]:\n\t", skill)
        fmt.Println(err)
   	}
    
    // Person Search matches
    var employeeMatches []pdlmodel.Person

    // Check for enriched job title
    if !reflect.DeepEqual(enrichedSkill, pdlmodel.SkillResponse{}) {
        // 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_region": "utah"}},
                        {"terms": map[string]interface{}{"skills": skills}},
                   },
                },
            },
        }
    
        // 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), skill)
        } else {
            fmt.Printf("Person Search Error for [%s]:\n\t", skill)
            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 skill you want to enrich
    skill := "ai"
    
    var skills []string
    
    // Create a parameters JSON object
    queryString := pdlmodel.SkillBaseParams{Skill: skill}
    
    params := pdlmodel.SkillParams{
        SkillBaseParams: queryString,
    }
    
    // Pass the parameters object to the Skill API
    response, err := client.Skill(context.Background(), params)
    
    var enrichedSkill map[string][]string
    var skillsStringRep 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 skill
            json.Unmarshal(jsonResponse, &enrichedSkill)
            // Build list of skills
            skills = enrichedSkill["similar_skills"]
            skills = append(skills, skill)
            skillsStringRep = "'" + strings.Join(skills[:], "','") + "'"
        }
    } else {
        fmt.Printf("Skill Enrichment Error for [%s]:\n\t", skill)
        fmt.Println(err)
   	}
    
    // Person Search matches
    var employeeMatches []pdlmodel.Person

    // Check for enriched job title
    if !reflect.DeepEqual(enrichedSkill, pdlmodel.SkillResponse{}) {
        // Create an SQL query
        sqlQuery := "SELECT * FROM person" +
                    " WHERE location_region='utah'" +
                    " AND skills IN (" + skillsStringRep + ");"
   
        // 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), skill)
        } else {
            fmt.Printf("Person Search Error for [%s]:\n\t", skill)
            fmt.Println(err)
        }
    }
}
import requests, json

# Set your API key
API_KEY = "YOUR API KEY"

# Set the Skill Enrichment API URL
PDL_SKILL_ENRICH_URL = "https://api.peopledatalabs.com/v5/skill/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 skill you want to enrich
SKILL = "ai"
# Create a parameters JSON object
QUERY_STRING = {"skill": SKILL}

# Set headers
HEADERS = {
  'accept': "application/json",
  'content-type': "application/json",
  'x-api-key': API_KEY
}

# Pass the parameters object to the Skill Enrichment API
response = requests.request("GET", PDL_SKILL_ENRICH_URL, 
                            headers=HEADERS, params=QUERY_STRING)

# Check for successful response
if response.status_code == 200:
  # Store enriched skill
  enriched_skill = response.json()
  # Build list of skills
  skills = enriched_skill["data"]["similar_skills"]
  skills.insert(0, SKILL)
else:
  enriched_job_title = {}
  print(f"Skill Enrichment Error for [{SKILL}]: {response.text}")
                                                      
# Person Search matches
employee_matches = {}

# Check for enriched skill
if enriched_skill:
  # Create an Elasticsearch query
  ES_QUERY = {
  	"query": {
    	"bool": {
        	"must": [
            	{"term": {"location_region": "utah"}},
            	{"terms": {"skills": skills}},
      		]
    	}
  	}
  }

  # 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 [{SKILL}]: {response.text}")

  print(f"Found {len(employee_matches)} employee profiles for {SKILL}.")
import requests, json

# Set your API key
API_KEY = "YOUR API KEY"

# Set the Skill Enrichment API URL
PDL_SKILL_ENRICH_URL = "https://api.peopledatalabs.com/v5/skill/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 skill you want to enrich
SKILL = "ai"
# Create a parameters JSON object
QUERY_STRING = {"skill": SKILL}

# Set headers
HEADERS = {
  'accept': "application/json",
  'content-type': "application/json",
  'x-api-key': API_KEY
}

# Pass the parameters object to the Skill Enrichment API
response = requests.request("GET", PDL_SKILL_ENRICH_URL, 
                            headers=HEADERS, params=QUERY_STRING)

# Check for successful response
if response.status_code == 200:
  # Store enriched skill
  enriched_skill = response.json()
  # Build list of skills
  skills = enriched_skill["data"]["similar_skills"]
  skills.insert(0, SKILL)
  skills_string_rep = ", ".join(
    (f"'{skl}'" for skl in skills)
  )

else:
  enriched_job_title = {}
  print(f"Skill Enrichment Error for [{SKILL}]: {response.text}")
                                                      
# Person Search matches
employee_matches = {}

# Check for enriched skill
if enriched_skill:
  # Create an SQL query
  SQL_QUERY = f"""
  SELECT * FROM person
  WHERE location_region='utah'
  AND skills IN ({skills_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 [{SKILL}]: {response.text}")

  print(f"Found {len(employee_matches)} employee profiles for {SKILL}.")