You search LinkedIn daily and receive more results than you can evaluate. Define the role direction, location constraints, and working arrangements first. The useful output is a manageable review queue rather than the largest possible result count.
Separate essential conditions from preferences
The contract supports keywords, geographic codes, dates, sorting, and several list filters. Decide which constraints are firm and which deserve discussion. Use confirmed LinkedIn geographic codes instead of guessing them from city names. List filters can repeat the same parameter name for multiple values.
Keep pagination tied to one search
Follow the documented offset progression, beginning at zero. Store the query and filters with each batch. A changed condition creates a new search rather than another page of the old one. Deduplicate vacancies found through multiple queries while preserving how they were discovered. The reported total does not guarantee that every role remains open or suitable.
Read details before entering the application queue
Search fields offer clues about company, title, location, pay, and timing, but duties require closer inspection. Missing salary information does not mean unpaid work, and similar titles can hide different expectations. Review a small set carefully, recording matching evidence and unresolved conditions. Search should help allocate effort, not masquerade as a hiring forecast or a complete labor-market census.
Request URL and parameters
GET https://api.trmesh.com/openapi/api/v1/linkedin/web_v2/search_jobs
| Parameter | Type | Required | Meaning |
|---|---|---|---|
keywords |
string / null | No | Keywords |
geo_code |
integer / null | No | LinkedIn geo code, 92000000 = worldwide |
date_posted |
string / null | No | Any time / Past month / Past week / Past 24 hours |
experience_levels |
array / null | No | Internship / Entry level / Associate / Mid-Senior level / Director / Executive |
company_ids |
array / null | No | Company ids, repeatable |
title_ids |
array / null | No | Title ids, repeatable |
onsite_remotes |
array / null | No | On-site / Remote / Hybrid |
functions |
array / null | No | Functions, repeatable |
industries |
array / null | No | Industries, repeatable |
job_types |
array / null | No | Full-time / Part-time / Contract / Temporary / Internship / Volunteer |
sort_by |
string / null | No | Most relevant / Most recent |
easy_apply |
boolean | No | Easy-apply jobs only |
under_10_applicants |
boolean | No | Under 10 applicants only |
start |
integer / null | No | Pagination offset |
Run the Python example
Install requests and set TRMESH_API_TOKEN in your environment. Replace the sample identifiers with the public object you intend to inspect. Example IDs may no longer be available.
import os
import requests
# Read your own developer key from the server environment.
url = "https://api.trmesh.com/openapi/api/v1/linkedin/web_v2/search_jobs"
params = {
"keywords": "data analyst"
}
response = requests.get(
url, params=params, timeout=30,
headers={"Authorization": f"Bearer {os.environ['TRMESH_API_TOKEN']}"},
)
response.raise_for_status()
payload = response.json()
print(payload) # Inspect the actual response before mapping fields
Endpoint documentation · Free profile tool
API calls use your TRMesh account allowance. Check the endpoint price before running a script.