Update Settings
curl --request POST \
--url https://api.lobstr.io/v1/squids/{squid_hash} \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.lobstr.io/v1/squids/{squid_hash}"
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'}
};
fetch('https://api.lobstr.io/v1/squids/{squid_hash}', 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.lobstr.io/v1/squids/{squid_hash}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/squids/{squid_hash}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
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.lobstr.io/v1/squids/{squid_hash}")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/squids/{squid_hash}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
response = http.request(request)
puts response.read_bodyLinkedIn Jobs Scraper
Update Settings
Configure LinkedIn Jobs Scraper settings
POST
/
v1
/
squids
/
{squid_hash}
Update Settings
curl --request POST \
--url https://api.lobstr.io/v1/squids/{squid_hash} \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>'import requests
url = "https://api.lobstr.io/v1/squids/{squid_hash}"
headers = {
"Authorization": "<authorization>",
"Content-Type": "<content-type>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': '<content-type>'}
};
fetch('https://api.lobstr.io/v1/squids/{squid_hash}', 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.lobstr.io/v1/squids/{squid_hash}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/squids/{squid_hash}"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "<content-type>")
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.lobstr.io/v1/squids/{squid_hash}")
.header("Authorization", "<authorization>")
.header("Content-Type", "<content-type>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/squids/{squid_hash}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = '<content-type>'
response = http.request(request)
puts response.read_bodyConfigure your LinkedIn Jobs Scraper squid settings.
Headers
string
required
Your API authentication token. Value:
Token YOUR_API_KEYstring
required
Must be application/json. Value:
application/jsonSquid Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| date_posted | string | Any time | Only return jobs posted within this time window. Applied on top of your URL, unless the URL already carries a date filter. One of: Any time, Past month, Past week, Past 24 hours. |
| job_type | string | Any | Filter by employment type. Applied on top of your URL. NB: LinkedIn’s new AI search treats this as search intent (like typing it in the search box), so close matches may occasionally appear. One of: Any, Full-time, Part-time, Contract, Temporary, Internship, Volunteer, Other. |
| experience_level | string | Any | Filter by required experience level. Applied on top of your URL. NB: LinkedIn’s new AI search treats this as search intent (like typing it in the search box), so close matches may occasionally appear. One of: Any, Internship, Entry level, Associate, Mid-Senior level, Director, Executive. |
| workplace_type | string | Any | Filter by workplace arrangement. Applied on top of your URL. NB: LinkedIn’s new AI search treats this as search intent (like typing it in the search box), so close matches may occasionally appear. One of: Any, On-site, Remote, Hybrid. |
| easy_apply | boolean | false | Only return jobs that can be applied to directly on LinkedIn. Applied on top of your URL, unless the URL already carries this filter. |
| under_10_applicants | boolean | false | Only return jobs with fewer than 10 applicants. Applied on top of your URL, unless the URL already carries this filter. |
| distance | string | Any distance | Maximum search radius around the location in the URL. Applied unless the URL already carries a distance. One of: Any distance, 5 miles, 10 miles, 25 miles, 50 miles, 100 miles. |
| sort_by | string | Relevance | How results are ordered. Most recent sorts by listing time. Applied unless the URL already carries a sort. One of: Relevance, Most recent. |
| exclude_job_titles | string | — | Comma-separated words. Jobs whose title contains any of them are skipped before collection, so they never consume credits (e.g. senior, manager, director). |
| exclude_companies | string | — | Comma-separated company names. Jobs posted by these companies are skipped before collection, so they never consume credits (e.g. Randstad, Adecco). |
| max_results | int | 1000 | Max number of jobs to scrape per search. NB: LinkedIn displays up to 1,000 jobs per search URL, no more. To collect more, split your search by location or keyword. |
| max_unique_results_per_run | int | — | Maximum number of unique results retrieved across all tasks in the entire run. Leave empty for unlimited. |
| fetch_since | fetch_since | — | Only collect jobs posted after this threshold (based on posted_at) — applied directly in the LinkedIn search, so filtered-out jobs cost nothing. Use a relative duration (24h, 7d, 2w) or an absolute date (YYYY-MM-DD HH:MM:SS). NB: LinkedIn exposes posting dates with daily granularity. |
| fetch_since_timezone | string | — | Timezone for interpreting an absolute fetch_since date (e.g. Europe/Paris). Ignored for relative values. |
| job_details | boolean | false | Paid add-on. Visit each job posting page to collect the full description, structured salary, seniority, industries, recruiter and apply link. When off, you get the fields shown in the search results only. Free when the task input is a single job URL, since that posting page is already scraped in full. Costs 1 extra credit per job. |
| company_details | boolean | false | Paid add-on. Visit each hiring company’s LinkedIn page to collect website, industry, headcount, followers, founding year, headquarters and specialties. Costs 1 extra credit per job. |
Code Examples
curl -X POST https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH \
-H "Authorization: Token YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"date_posted": "Past week",
"job_type": "Full-time",
"experience_level": "Mid-Senior level",
"workplace_type": "Remote",
"max_results": 500,
"job_details": true
}'
import requests
response = requests.post(
"https://api.lobstr.io/v1/squids/YOUR_SQUID_HASH",
headers={
"Authorization": "Token YOUR_API_KEY",
"Content-Type": "application/json",
},
json={
"date_posted": "Past week",
"job_type": "Full-time",
"experience_level": "Mid-Senior level",
"workplace_type": "Remote",
"max_results": 500,
"job_details": True,
},
)
print(response.json())
Response
201
{"params": {"date_posted": "Past week", "job_type": "Full-time", "experience_level": "Mid-Senior level", "workplace_type": "Remote", "max_results": 500, "job_details": true}}