Skip to main content
GET
/
v1
/
linkedin
/
jobs
/
search
Search Jobs
curl --request GET \
  --url https://api.scrapebadger.com/v1/linkedin/jobs/search \
  --header 'X-API-Key: <x-api-key>'
import requests

url = "https://api.scrapebadger.com/v1/linkedin/jobs/search"

headers = {"X-API-Key": "<x-api-key>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {'X-API-Key': '<x-api-key>'}};

fetch('https://api.scrapebadger.com/v1/linkedin/jobs/search', 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.scrapebadger.com/v1/linkedin/jobs/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)

func main() {

url := "https://api.scrapebadger.com/v1/linkedin/jobs/search"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-API-Key", "<x-api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.scrapebadger.com/v1/linkedin/jobs/search")
.header("X-API-Key", "<x-api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.scrapebadger.com/v1/linkedin/jobs/search")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<x-api-key>'

response = http.request(request)
puts response.read_body
{
  "jobs": [
    {}
  ],
  "meta": {}
}
Search linkedin.com’s public jobs surface by keyword and location, with filters for date posted, experience level, job type and workplace. Paginates in blocks of 25 via start (0, 25, 50). Returns lightweight JobCards — hydrate a single card with /jobs/{job_id}. Credits: 5

Authorization

X-API-Key
string
required
Your ScrapeBadger API key.

Query Parameters

keywords
string
Free-text query — e.g. software engineer.
location
string
Free-text place — e.g. New York. Resolved server-side, or pass geo_id directly for an exact match.
geo_id
string
Numeric LinkedIn geo id (from /geo/suggest). Overrides location.
company_id
string
Restrict to a numeric company id.
date_posted
string
One of past_24h, past_week, past_month, any (default any).
experience
string
Experience level, CSV. One or more of internship, entry, associate, mid_senior, director, executive.
job_type
string
Employment type, CSV. One or more of full_time, part_time, contract, temporary, internship, volunteer, other.
workplace
string
Workplace, CSV. One or more of onsite, remote, hybrid.
sort
string
default:"relevant"
One of relevant, recent.
start
integer
default:"0"
Pagination offset — 0, 25, 50, … (page size is 25).
country
string
default:"us"
Country/locale for the request.

Response

jobs
JobCard[]
Result cards. Each JobCard includes job_id, title, job_url, company, company_url, company_logo, location, posted_at, posted_relative, is_new and benefits[].
meta
object
result_count, start, and has_more (whether another start page exists).

Example

curl "https://api.scrapebadger.com/v1/linkedin/jobs/search?keywords=software%20engineer&location=New%20York&date_posted=past_week&workplace=remote,hybrid&sort=recent" \
  -H "X-API-Key: YOUR_API_KEY"
const res = await fetch(
  "https://api.scrapebadger.com/v1/linkedin/jobs/search?" +
    new URLSearchParams({
      keywords: "software engineer",
      location: "New York",
      date_posted: "past_week",
      workplace: "remote,hybrid",
      sort: "recent",
    }),
  { headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const data = await res.json();
import requests

res = requests.get(
    "https://api.scrapebadger.com/v1/linkedin/jobs/search",
    headers={"X-API-Key": "YOUR_API_KEY"},
    params={
        "keywords": "software engineer",
        "location": "New York",
        "date_posted": "past_week",
        "workplace": "remote,hybrid",
        "sort": "recent",
    },
)
data = res.json()
Response
{
  "jobs": [
    {
      "job_id": "3801234567",
      "title": "Senior Software Engineer",
      "job_url": "https://www.linkedin.com/jobs/view/3801234567",
      "company": "Acme Corp",
      "company_url": "https://www.linkedin.com/company/acme-corp",
      "company_logo": "https://media.licdn.com/dms/image/acme-logo.png",
      "location": "New York, NY",
      "posted_at": "2026-07-09T14:02:00Z",
      "posted_relative": "4 days ago",
      "is_new": false,
      "benefits": ["401(k)", "Medical insurance"]
    }
  ],
  "meta": {
    "result_count": 25,
    "start": 0,
    "has_more": true
  }
}
start pages in increments of 25. Keep requesting the next page while meta.has_more is true.