NAV
shell python

Introduction

Welcome to TalentUp's API! You can use our API to access TalentUp API endpoints, which can get information on salaries, offer and demand of different positions in our database.

We have language bindings in Shell and Python! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

Authentication

To authorize, use this code:

import requests

url = "https://talentup.io/api/authenticate"

querystring = {
    "api_key": "Your api key"
}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)

curl "https://talentup.io/api/authenticate/?api_key=<YOUR_API_KEY>" 

Make sure to replace Your api key with your API key. A correct authentication returns a JSON like this:

  {
    "valid": True,
    "code":"Authentication successful",
    "status":200
  }

TalentUp expects for the API key to be included in all API requests to the server in a header that looks like the following:

api_key: Your api key

Location API

Get All Cities

import requests

url = "https://talentup.io/api/cities"

querystring = {
    "api_key": "Your api key"
}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "https://talentup.io/api/cities/?api_key=YOUR_API_KEY" 

The above command returns JSON structured like this:

{"data": 
    {"cities": 
        [
            "Barcelona", "Madrid"
        ]
    },
"status": 200
}

This endpoint retrieves all cities available.

HTTP Request

GET http://talentup.io/api/cities

Position API

List available positions

import requests

url = "https://talentup.io/api/positions"

querystring = {
    "api_key": "Your api key"
}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "http://talentup.io/api/positions/?api_key=<YOUR_API_KEY>"

The above command returns JSON structured like this:

{
  "data":{
      "positions":[
          "Human Resources Specialist", "Accounts Payable Specialist"
      ]
  },
  "status":200
}

This request returns all available positions in the salary platform.

HTTP Request

GET http://talentup.io/api/positions/?api_key=<YOUR_API_KEY>

Talent Market API

Get Offer and Demand

import requests

url = "https://talentup.io/api/offer-demand"

querystring = {
    "api_key": "Your api key",
    "city": "Barcelona",
    "position": "Frontend Developer"
}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "https://talentup.io/api/offer-demand/?city=YourCity&position=Your%20Position&api_key=<YOUR_API_KEY>"

The above command returns JSON structured like this:

{
    "status": 200, 
    "data": {
            "job_offers": 784,
            "professionals": 10
            }
}

This endpoint retrieves offer and demand for a position in a certain city.

HTTP Request

GET https://talentup.io/api/offer-demand/?city=<City>&position=<Position>

URL Parameters

Parameter Description
City Name of the city to extract the demand and offer from
Position Name of the position to extract the demand and offer from

Get Job Offers

import requests

url = "https://talentup.io/api/jobs"

querystring = {
    "api_key": "Your api key",
    "city": "London",
    "country":"United Kingdom",
    "position": "Frontend Developer"
    "created_at":"2022-05-26T00:00:00",
    "page":"1"

}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "https://talentup.io/api/jobs/?city=Manchester&country=United%20Kingdom&created_at=2022-01-01T00:00:00&page=1&api_key=YourApiKey"

The above command returns JSON structured like this:

{
    "status": 200,
    "data": {
        "jobs": [{
            "position": {
                "subdepartment": null,
                "department": null,
                "name": "Associate Practitioner",
                "role": null,
                "family": null
            },
            "tags": {
                "tech": [],
                "secondary_tech": null
            },
            "salary": {
                "period": "year",
                "value": 23715,
                "currency": "GBP",
                "EUR": {
                    "value": 27833
                },
                "bonus": {
                    "percentage": null,
                    "value": null,
                    "EUR": {
                        "value": null
                    },
                    "sign-on": {
                        "value": null,
                        "EUR": {
                            "value": null
                        }
                    },
                    "referral": {
                        "value": null,
                        "EUR": {
                            "value": null
                        }
                    }
                },
                "min": 22549,
                "max": 24882
            },
            "source": "monster",
            "skills": null,
            "location": {
                "country": "United Kingdom",
                "continent": "Europe",
                "region": "East of England",
                "city": "Harlow",
                "coordinates": {
                    "lat": "51.77655",
                    "lon": "0.11158"
                },
                "raw": "Harlow"
            },
            "created_at": "2021-12-12T22:39:04.884685",
            "company": "National Health Service",
            "company_details": {
                "size": null,
                "raw": "National Health Service",
                "sector": null,
                "is_recruitment_agency": null
            }
        }]
    }
}

This endpoint retrieves job offers for a position given a timestamp and a location.

HTTP Request

GET https://talentup.io/api/jobs/?city=<City>&position=<Position>&country=<Country>&created_at=<Timestamp>&page=<PageNumber>&api_key=<YourApiKey>

URL Parameters

Parameter Description
City Name of the city to extract the demand and offer from (optional)
Position Name of the position to extract the demand and offer from (optional)
Country Name of the country to extract the demand and offer from (locked to United Kingdom)
Created_at All the job offers returned will have been created after this timestamp
Page Pagination of the results (defaults to 0)

Get Professionals

import requests

url = "https://talentup.io/api/professionals"

querystring = {
    "api_key": "Your api key",
    "city": "London",
    "country":"United Kingdom",
    "position": "Frontend Developer"
    "updated_at":"2022-05-26T00:00:00",
    "page":"1"

}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "https://talentup.io/api/professionals/?city=London&position=Frontend%20Developer&country=United%20Kingdom&updated_at=2022-01-01T00:00:00&page=1&api_key=YourApiKey"

The above command returns JSON structured like this:

{
    "status": 200,
    "data": {
        "professionals": [{
            "position": {
                "company": {
                    "is_recruitment_agency": null,
                    "name": "Genesys",
                    "size": "5001-10000",
                    "sector": "Information Technology",
                    "raw": "Genesys",
                    "funding": {
                        "EUR": {
                            "value": 777460554
                        }
                    },
                    "id": null
                },
                "role": "First-Line Supervisors of Non-Retail Sales Workers",
                "raw": "QA Director",
                "family": "Sales and Related",
                "name": "Director"
            },
            "location": {
                "continent": "Europe",
                "raw": "frimley, surrey, united kingdom",
                "coordinates": {
                    "lon": "-0.74544",
                    "lat": "51.31667"
                },
                "country": "United Kingdom",
                "city": "Frimley"
            }
        }]
    }
}

This endpoint retrieves job offers for a position given a timestamp and a location.

HTTP Request

GET https://talentup.io/api/professionals/?city=<City>&position=<Position>&country=<Country>&updated_at=<Timestamp>&page=<PageNumber>&api_key=<YourApiKey>

URL Parameters

Parameter Description
City Name of the city to extract the demand and offer from (optional)
Position Name of the position to extract the demand and offer from (optional)
Country Name of the country to extract the demand and offer from (locked to United Kingdom)
Updated_at All the job offers returned will have been updated after this timestamp
Page Pagination of the results (defaults to 0)

Salaries API

Salary Overview

import requests

url = "https://talentup.io/api/salaryOverview"

querystring = {
    "api_key": "Your api key",
    "city":"Barcelona",
    "country":"Spain",
    "position":"Frontend Developer"
}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "http://talentup.io/api/salaryOverview/?api_key=<YOUR_API_KEY>&city=<CITY>&country=<COUNTRY>&position=<POSITION>"

The above command returns JSON structured like this:

{
    "status": 200,
    "data": {
        "observations": 630,
        "location": {
            "city": "Barcelona",
            "country": "Spain"
            }, 
        "position": "Frontend Developer", 
        "salary": 50000,
        "currency":"EUR"
    }
}

This request returns all available positions in the salary platform.

HTTP Request

GET http://talentup.io/api/salaryOverview/?api_key=<YOUR_API_KEY>&city=<CITY>&country=<COUNTRY>&position=<POSITION>

URL Parameters

Parameter Description
City Name of the city to extract the salary information from
Country Name of the country to extract the salary information from
Position Name of the position to extract the salary information from

Get Salary

import requests

url = "https://talentup.io/api/salary"

querystring = {
    "api_key": "Your api key",
    "city":"London",
    "country":"United Kingdom",
    "position":"Frontend Developer"
}
headers = {
    'Cache-Control': 'no-cache',
    'Content-Type': 'application/json'
}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
curl "http://talentup.io/api/salary/?api_key=<YOUR_API_KEY>&city=<CITY>&country=<COUNTRY>&position=<POSITION>"

The above command returns JSON structured like this:

{
    "data": {
        "position": "frontend developer",
        "salary": [{
            "salary": [{
                "skip": false,
                "exp": 1.0,
                "seniority": "junior",
                "quantile10": 27900,
                "seniorityRatio": 0.658,
                "experienceRange": "1",
                "experienceRatio": 0.94,
                "quantile75": 35500,
                "quantile25": 29200,
                "quantile99": 42000,
                "minMaxRatio": 1.339,
                "quantile90": 39100,
                "quantile50": 31500
            }, {
                "skip": false,
                "exp": 2.0,
                "seniority": "junior",
                "quantile10": 29500,
                "seniorityRatio": 0.0,
                "experienceRange": "2",
                "experienceRatio": 0.0,
                "quantile75": 36500,
                "quantile25": 30900,
                "quantile99": 42400,
                "minMaxRatio": 1.307,
                "quantile90": 40400,
                "quantile50": 33500
            }],
            "seniorityRatio": 0.658,
            "seniority": "junior",
            "bonus": {
                "max": 5700,
                "avg": 3800,
                "min": 1900
            },
            "stock": {
                "max": 33200,
                "avg": 22200,
                "min": 14500
            }
        }, {
            "salary": [{
                "skip": false,
                "exp": 1.0,
                "seniority": "mid",
                "quantile10": 41500,
                "seniorityRatio": 0.823,
                "experienceRange": "1",
                "experienceRatio": 0.947,
                "quantile75": 55500,
                "quantile25": 44800,
                "quantile99": 62200,
                "minMaxRatio": 1.33,
                "quantile90": 59600,
                "quantile50": 47900
            }, {
                "skip": false,
                "exp": 2.0,
                "seniority": "mid",
                "quantile10": 42900,
                "seniorityRatio": 0.0,
                "experienceRange": "2",
                "experienceRatio": 0.958,
                "quantile75": 57300,
                "quantile25": 45600,
                "quantile99": 63500,
                "minMaxRatio": 1.353,
                "quantile90": 61700,
                "quantile50": 50600
            }, {
                "skip": false,
                "exp": 3.0,
                "seniority": "mid",
                "quantile10": 44300,
                "seniorityRatio": 0.0,
                "experienceRange": "3",
                "experienceRatio": 0.967,
                "quantile75": 58900,
                "quantile25": 46500,
                "quantile99": 64900,
                "minMaxRatio": 1.366,
                "quantile90": 63500,
                "quantile50": 52800
            }, {
                "skip": false,
                "exp": 4.0,
                "seniority": "mid",
                "quantile10": 45300,
                "seniorityRatio": 0.0,
                "experienceRange": "4",
                "experienceRatio": 0.986,
                "quantile75": 60300,
                "quantile25": 47700,
                "quantile99": 66500,
                "minMaxRatio": 1.363,
                "quantile90": 65000,
                "quantile50": 54600
            }, {
                "skip": false,
                "exp": 5.0,
                "seniority": "mid",
                "quantile10": 46200,
                "seniorityRatio": 0.0,
                "experienceRange": "5",
                "experienceRatio": 0.988,
                "quantile75": 61700,
                "quantile25": 48700,
                "quantile99": 68300,
                "minMaxRatio": 1.361,
                "quantile90": 66300,
                "quantile50": 55400
            }, {
                "skip": false,
                "exp": 6.0,
                "seniority": "mid",
                "quantile10": 46800,
                "seniorityRatio": 0.0,
                "experienceRange": "6",
                "experienceRatio": 0.991,
                "quantile75": 62800,
                "quantile25": 49600,
                "quantile99": 69600,
                "minMaxRatio": 1.351,
                "quantile90": 67000,
                "quantile50": 56100
            }, {
                "skip": false,
                "exp": 7.0,
                "seniority": "mid",
                "quantile10": 47500,
                "seniorityRatio": 0.0,
                "experienceRange": "7 - 9",
                "experienceRatio": 0.995,
                "quantile75": 63800,
                "quantile25": 50300,
                "quantile99": 70900,
                "minMaxRatio": 1.344,
                "quantile90": 67600,
                "quantile50": 56600
            }, {
                "skip": true,
                "exp": 8.0,
                "seniority": "mid",
                "quantile10": 47800,
                "seniorityRatio": 0.0,
                "experienceRange": "8",
                "experienceRatio": 0.995,
                "quantile75": 64300,
                "quantile25": 50900,
                "quantile99": 71800,
                "minMaxRatio": 1.34,
                "quantile90": 68200,
                "quantile50": 56900
            }, {
                "skip": true,
                "exp": 9.0,
                "seniority": "mid",
                "quantile10": 48100,
                "seniorityRatio": 0.0,
                "experienceRange": "9",
                "experienceRatio": 0.997,
                "quantile75": 64800,
                "quantile25": 51200,
                "quantile99": 72800,
                "minMaxRatio": 1.34,
                "quantile90": 68600,
                "quantile50": 57200
            }, {
                "skip": false,
                "exp": 10.0,
                "seniority": "mid",
                "quantile10": 48400,
                "seniorityRatio": 0.0,
                "experienceRange": "10",
                "experienceRatio": 0.0,
                "quantile75": 65500,
                "quantile25": 51500,
                "quantile99": 74700,
                "minMaxRatio": 1.342,
                "quantile90": 69100,
                "quantile50": 57400
            }],
            "seniorityRatio": 0.823,
            "seniority": "mid",
            "bonus": {
                "max": 9800,
                "avg": 6500,
                "min": 3200
            },
            "stock": {
                "max": 56800,
                "avg": 38000,
                "min": 24900
            }
        }, {
            "salary": [{
                "skip": false,
                "exp": 1.0,
                "seniority": "senior",
                "quantile10": 51800,
                "seniorityRatio": 0.657,
                "experienceRange": "1",
                "experienceRatio": 0.948,
                "quantile75": 66100,
                "quantile25": 54900,
                "quantile99": 74900,
                "minMaxRatio": 1.26,
                "quantile90": 69200,
                "quantile50": 58200
            }, {
                "skip": false,
                "exp": 2.0,
                "seniority": "senior",
                "quantile10": 54900,
                "seniorityRatio": 0.0,
                "experienceRange": "2",
                "experienceRatio": 0.955,
                "quantile75": 66900,
                "quantile25": 58200,
                "quantile99": 76000,
                "minMaxRatio": 1.21,
                "quantile90": 70400,
                "quantile50": 61400
            }, {
                "skip": false,
                "exp": 3.0,
                "seniority": "senior",
                "quantile10": 57400,
                "seniorityRatio": 0.0,
                "experienceRange": "3",
                "experienceRatio": 0.964,
                "quantile75": 69000,
                "quantile25": 60800,
                "quantile99": 77200,
                "minMaxRatio": 1.196,
                "quantile90": 72700,
                "quantile50": 64300
            }, {
                "skip": false,
                "exp": 4.0,
                "seniority": "senior",
                "quantile10": 59400,
                "seniorityRatio": 0.0,
                "experienceRange": "4",
                "experienceRatio": 0.972,
                "quantile75": 71000,
                "quantile25": 62800,
                "quantile99": 78500,
                "minMaxRatio": 1.191,
                "quantile90": 74800,
                "quantile50": 66700
            }, {
                "skip": false,
                "exp": 5.0,
                "seniority": "senior",
                "quantile10": 60900,
                "seniorityRatio": 0.0,
                "experienceRange": "5",
                "experienceRatio": 0.0,
                "quantile75": 72800,
                "quantile25": 64100,
                "quantile99": 79800,
                "minMaxRatio": 1.197,
                "quantile90": 76700,
                "quantile50": 68600
            }],
            "seniorityRatio": 0.657,
            "seniority": "senior",
            "bonus": {
                "max": 10900,
                "avg": 7200,
                "min": 3500
            },
            "stock": {
                "max": 63000,
                "avg": 42200,
                "min": 27600
            }
        }, {
            "salary": [{
                "skip": false,
                "exp": 1.0,
                "seniority": "lead",
                "quantile10": 80800,
                "seniorityRatio": 0.0,
                "experienceRange": "1",
                "experienceRatio": 0.937,
                "quantile75": 97900,
                "quantile25": 83500,
                "quantile99": 105300,
                "minMaxRatio": 1.212,
                "quantile90": 101200,
                "quantile50": 88600
            }, {
                "skip": false,
                "exp": 2.0,
                "seniority": "lead",
                "quantile10": 86800,
                "seniorityRatio": 0.0,
                "experienceRange": "2",
                "experienceRatio": 0.945,
                "quantile75": 102300,
                "quantile25": 89700,
                "quantile99": 110000,
                "minMaxRatio": 1.186,
                "quantile90": 106400,
                "quantile50": 94600
            }, {
                "skip": false,
                "exp": 3.0,
                "seniority": "lead",
                "quantile10": 92100,
                "seniorityRatio": 0.0,
                "experienceRange": "3",
                "experienceRatio": 0.952,
                "quantile75": 106700,
                "quantile25": 95100,
                "quantile99": 114800,
                "minMaxRatio": 1.169,
                "quantile90": 111200,
                "quantile50": 100100
            }, {
                "skip": false,
                "exp": 4.0,
                "seniority": "lead",
                "quantile10": 96800,
                "seniorityRatio": 0.0,
                "experienceRange": "4",
                "experienceRatio": 0.96,
                "quantile75": 110800,
                "quantile25": 99800,
                "quantile99": 119800,
                "minMaxRatio": 1.161,
                "quantile90": 115900,
                "quantile50": 105100
            }, {
                "skip": false,
                "exp": 5.0,
                "seniority": "lead",
                "quantile10": 100900,
                "seniorityRatio": 0.0,
                "experienceRange": "5",
                "experienceRatio": 0.0,
                "quantile75": 114800,
                "quantile25": 103600,
                "quantile99": 125000,
                "minMaxRatio": 1.159,
                "quantile90": 120100,
                "quantile50": 109500
            }],
            "seniorityRatio": 0.0,
            "seniority": "lead",
            "bonus": {
                "max": 17000,
                "avg": 11200,
                "min": 5500
            },
            "stock": {
                "max": 98700,
                "avg": 66100,
                "min": 43200
            }
        }],
        "location": {
            "country": "United Kingdom",
            "city": "London"
        }
    },
    "status": 200
}

This request returns all available positions in the salary platform.

HTTP Request

GET http://talentup.io/api/salary/?api_key=<YOUR_API_KEY>&city=<CITY>&country=<COUNTRY>&position=<POSITION>

URL Parameters

Parameter Description
City Name of the city to extract the salary information from
Country Name of the country to extract the salary information from
Position Name of the position to extract the salary information from

Errors

The TalentUp API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- Your request is hidden for administrators only.
404 Not Found -- Your could not be found or gave 0 results.
405 Method Not Allowed -- Invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The request result has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- Too many requests! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.