Get Job Posts
curl --request POST \
--url https://api.linkupapi.com/v2/recruiter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"job_id": "<string>",
"count": 123,
"offset": 123,
"fetch_details": true
}
}
'import requests
url = "https://api.linkupapi.com/v2/recruiter"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": {
"job_id": "<string>",
"count": 123,
"offset": 123,
"fetch_details": True
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {job_id: '<string>', count: 123, offset: 123, fetch_details: true}
})
};
fetch('https://api.linkupapi.com/v2/recruiter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/recruiter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'job_id' => '<string>',
'count' => 123,
'offset' => 123,
'fetch_details' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/recruiter"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"job_id\": \"<string>\",\n \"count\": 123,\n \"offset\": 123,\n \"fetch_details\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/recruiter")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"job_id\": \"<string>\",\n \"count\": 123,\n \"offset\": 123,\n \"fetch_details\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/recruiter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"job_id\": \"<string>\",\n \"count\": 123,\n \"offset\": 123,\n \"fetch_details\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"posts": [
{
"linkedin_job_id": "4178681638",
"title": "Growth Hacker",
"company_name": "Acme Corp",
"location": "France",
"job_state": "CLOSED",
"employment_status": "Full-time",
"workplace_type": "",
"created_at": 1741369464000,
"listed_at": 1761591723000,
"closed_at": 1762167565000,
"num_views": 962,
"num_applies": 100,
"job_url": "https://www.linkedin.com/jobs/view/4178681638/",
"contact_email": "[email protected]",
"industry": ["Software Development"],
"budget": {
"total_charge": "277.20",
"currency": "EUR",
"buffered_total_charge": "417.00",
"daily_budget": "88.0"
}
}
],
"total_results": 1,
"total_available_results": 1,
"pagination": {
"offset": 0,
"count": 1,
"next_offset": null,
"has_more": false,
"results_per_page": 25
}
},
"metadata": {
"action": "get_posts",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "account_id is required."
},
"metadata": {
"action": "get_posts",
"account_id": null,
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Recruiting
Get Job Posts
Retrieve job postings from your recruiter account.
POST
/
v2
/
recruiter
Get Job Posts
curl --request POST \
--url https://api.linkupapi.com/v2/recruiter \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"account_id": "<string>",
"action": "<string>",
"params": {
"job_id": "<string>",
"count": 123,
"offset": 123,
"fetch_details": true
}
}
'import requests
url = "https://api.linkupapi.com/v2/recruiter"
payload = {
"account_id": "<string>",
"action": "<string>",
"params": {
"job_id": "<string>",
"count": 123,
"offset": 123,
"fetch_details": True
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_id: '<string>',
action: '<string>',
params: {job_id: '<string>', count: 123, offset: 123, fetch_details: true}
})
};
fetch('https://api.linkupapi.com/v2/recruiter', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.linkupapi.com/v2/recruiter",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'account_id' => '<string>',
'action' => '<string>',
'params' => [
'job_id' => '<string>',
'count' => 123,
'offset' => 123,
'fetch_details' => true
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.linkupapi.com/v2/recruiter"
payload := strings.NewReader("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"job_id\": \"<string>\",\n \"count\": 123,\n \"offset\": 123,\n \"fetch_details\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.linkupapi.com/v2/recruiter")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"job_id\": \"<string>\",\n \"count\": 123,\n \"offset\": 123,\n \"fetch_details\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.linkupapi.com/v2/recruiter")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_id\": \"<string>\",\n \"action\": \"<string>\",\n \"params\": {\n \"job_id\": \"<string>\",\n \"count\": 123,\n \"offset\": 123,\n \"fetch_details\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"posts": [
{
"linkedin_job_id": "4178681638",
"title": "Growth Hacker",
"company_name": "Acme Corp",
"location": "France",
"job_state": "CLOSED",
"employment_status": "Full-time",
"workplace_type": "",
"created_at": 1741369464000,
"listed_at": 1761591723000,
"closed_at": 1762167565000,
"num_views": 962,
"num_applies": 100,
"job_url": "https://www.linkedin.com/jobs/view/4178681638/",
"contact_email": "[email protected]",
"industry": ["Software Development"],
"budget": {
"total_charge": "277.20",
"currency": "EUR",
"buffered_total_charge": "417.00",
"daily_budget": "88.0"
}
}
],
"total_results": 1,
"total_available_results": 1,
"pagination": {
"offset": 0,
"count": 1,
"next_offset": null,
"has_more": false,
"results_per_page": 25
}
},
"metadata": {
"action": "get_posts",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "account_id is required."
},
"metadata": {
"action": "get_posts",
"account_id": null,
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Overview
Retrieve job postings from your recruiter account. Passjob_id to fetch a specific job (with full details) or omit it to list all jobs (offset-based pagination).
This endpoint consumes 1 credit per 10 results returned. Ignore this if you’re on per-seat pricing: usage is unlimited.
Request
string
required
Your API key for authentication.
string
required
The unique identifier of the account to use.
string
required
Must be
"get_posts".object
Show params properties
Show params properties
string
Fetch a single specific job posting by ID. When provided,
count and offset are ignored and fetch_details is forced to true.integer
default:10
Number of job posts to return. Defaults to
10. Capped at 1000 per call.integer
default:0
Zero-indexed offset into the job posts list. Defaults to
0. Use pagination.next_offset from a previous response to fetch the next page.boolean
default:true
Include full job details (description, budget, talent_questions, etc.). Set to
false for a faster lightweight listing.Response
boolean
Indicates whether the request was successful.
object
Show data properties
Show data properties
array
List of job postings.
Show post properties
Show post properties
string
Numeric job ID.
string
Job title.
string
Hiring company name.
string
Job location.
string
Job state:
"LISTED", "CLOSED", "DRAFT", etc.string
Plain-text job description (only when
fetch_details: true).string
HTML-rich job description (only when
fetch_details: true).string
e.g.
"Full-time", "Part-time", "Contract", "Internship".string
e.g.
"Remote", "On-site", "Hybrid".integer
Unix epoch (ms) when the job was created.
integer
Unix epoch (ms) when the job became live.
integer
Unix epoch (ms) when the job was closed (null if still open).
integer
Total view count.
integer
Total applicant count.
string
Public job URL.
string
Contact email associated with the job.
array
List of industry categories (strings).
array
Screening questions configured on the post.
object
Budget data when the job is sponsored:
total_charge, currency, buffered_total_charge, daily_budget.array
Reasons the post was suspended (empty when active).
integer
Number of job posts returned in this response.
integer
Total number of job posts on the recruiter account.
object
Show pagination properties
Show pagination properties
object
{
"success": true,
"data": {
"posts": [
{
"linkedin_job_id": "4178681638",
"title": "Growth Hacker",
"company_name": "Acme Corp",
"location": "France",
"job_state": "CLOSED",
"employment_status": "Full-time",
"workplace_type": "",
"created_at": 1741369464000,
"listed_at": 1761591723000,
"closed_at": 1762167565000,
"num_views": 962,
"num_applies": 100,
"job_url": "https://www.linkedin.com/jobs/view/4178681638/",
"contact_email": "[email protected]",
"industry": ["Software Development"],
"budget": {
"total_charge": "277.20",
"currency": "EUR",
"buffered_total_charge": "417.00",
"daily_budget": "88.0"
}
}
],
"total_results": 1,
"total_available_results": 1,
"pagination": {
"offset": 0,
"count": 1,
"next_offset": null,
"has_more": false,
"results_per_page": 25
}
},
"metadata": {
"action": "get_posts",
"account_id": "your-account-id",
"credits_consumed": 1,
"timestamp": "2026-04-26T10:35:00Z"
}
}
{
"success": false,
"error": {
"code": "INVALID_PARAMS",
"message": "account_id is required."
},
"metadata": {
"action": "get_posts",
"account_id": null,
"credits_consumed": 0,
"timestamp": "2026-04-26T10:35:00Z"
}
}
Was this page helpful?