# LinkedIn Jobs — Zapi reference > LinkedIn job search through its public guest API — search, job detail, company and location typeahead, no account required. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ content, message, errors }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/jobs/linkedin - Endpoint catalog: https://zpi.web.id/category/jobs - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## LinkedIn Jobs **Category:** jobs · **Slug:** `linkedin` **Detail page:** https://zpi.web.id/api/jobs/linkedin LinkedIn job search through its public guest API — search, job detail, company and location typeahead, no account required. **Tags:** linkedin, jobs, careers, global ### Company Jobs Every job one LinkedIn company is advertising — the guest search API with `f_C` pre-bound, rung 1 (direct), 390-620ms. Upstream: /jobs-guest/jobs/api/seeMoreJobPostings/search. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:linkedin/company-jobs` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `companyId` | string | query | yes | LinkedIn company id, from the company-suggest endpoint. | | `query` | string | query | no | Free-text search within that company's postings. | | `location` | string | query | no | Place name as LinkedIn spells it — a country, region or city. | | `geoId` | string | query | no | LinkedIn geo id, from the location-suggest endpoint. More precise than `location`. | | `postedWithin` | enum(24h|week|month) | query | no | Only postings published inside this window. | | `page` | number | query | no | Page number, 10 jobs per page. Default 1. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:linkedin/company-jobs?companyId=1035&query=engineer&location=Indonesia&geoId=104370960&postedWithin=month&page=1" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:linkedin/company-jobs?companyId=1035&query=engineer&location=Indonesia&geoId=104370960&postedWithin=month&page=1", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:linkedin/company-jobs?companyId=1035&query=engineer&location=Indonesia&geoId=104370960&postedWithin=month&page=1", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 1, "items": [ { "url": "https://id.linkedin.com/jobs/view/digital-solution-engineer-ai-apps-at-microsoft-4450325467", "slug": "digital-solution-engineer-ai-apps-at-microsoft", "jobId": "4450325467", "title": "Digital Solution Engineer - AI & Apps", "badges": [ "Actively Hiring" ], "company": { "url": "https://www.linkedin.com/company/microsoft", "code": "microsoft", "logo": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_100_100/B56ZYQ0mrGGoAU-/0/1744038948046/microsoft_logo", "name": "Microsoft" }, "location": { "city": "Jakarta", "name": "Jakarta, Jakarta, Indonesia", "region": "Jakarta", "country": "Indonesia" }, "postedAt": "2026-08-28" } ], "limit": 10, "query": "engineer", "total": null, "hasMore": false, "nextPage": null, "provider": "linkedin", "companyId": "1035" } ``` --- ### Company Suggest LinkedIn company typeahead — the same JSON list the guest job-search box is backed by, rung 1 (direct), ~330ms. Upstream: /jobs-guest/api/typeaheadHits?typeaheadType=COMPANY. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:linkedin/company-suggest` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | yes | Partial company name to complete. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:linkedin/company-suggest?query=Microsoft" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:linkedin/company-suggest?query=Microsoft", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:linkedin/company-suggest?query=Microsoft", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "name": "Microsoft", "companyId": "1035" }, { "name": "Microsoft AI", "companyId": "18201534" }, { "name": "Microsoft Student Ambassador", "companyId": "102462081" }, { "name": "Microsoft India", "companyId": "29053421" }, { "name": "Microsoft for Startups", "companyId": "19043535" }, { "name": "Microsoft Leap", "companyId": "18661999" } ], "query": "Microsoft", "provider": "linkedin" } ``` --- ### Job One LinkedIn job in full — the logged-out guest detail page, rung 1 (direct), 270-890ms. Upstream: /jobs-guest/jobs/api/jobPosting/{jobId}. It answers an HTML fragment built around - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:linkedin/job/:jobId` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `jobId` | string | path | yes | LinkedIn job posting id, as returned by the search endpoint. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:linkedin/job/:jobId" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:linkedin/job/:jobId", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:linkedin/job/:jobId", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "url": "https://id.linkedin.com/jobs/view/sr-software-engineer-at-revcomm-indonesia-4403689374", "slug": "sr-software-engineer-at-revcomm-indonesia", "isNew": true, "jobId": "4403689374", "title": "Sr. Software Engineer", "company": { "url": "https://jp.linkedin.com/company/revcomm-id", "code": "revcomm-id", "logo": "https://media.licdn.com/dms/image/v2/C560BAQG2SYOgo4ti1g/company-logo_100_100/company-logo_100_100/0/1658380176567", "name": "RevComm Indonesia" }, "function": "Engineering and Information Technology", "location": { "name": "Jakarta, Indonesia" }, "postedAgo": "11 hours ago", "applicants": 102, "industries": [ "Telecommunications" ], "description": "

Company Description

RevComm is an award-winning Unicorn SaaS startup recognized by Forbes, Sequoia, and Meritech Capital as one of the Top 50 AI Companies in the World, alongside global leaders such as AWS and Nvidia. RevComm focuses on revolutionizing business communication through innovative AI and cloud-based software. Its flagship product, “MiiTel Phone,” is an IP-phone powered by a Revenue Intelligence Platform that analyzes and visualizes sales calls and contact center interactions to optimize sales and customer service processes. Driven by the mission \"Reinventing communications to create a society where people think of others,\" RevComm continues to push the boundaries of corporate communication.


Role Description

The Senior Software Engineer will play a leading role in designing, developing, and maintaining back-end systems and applications to support RevComm’s innovative software solutions. Daily responsibilities include collaborating with cross-functional teams, writing clean and scalable code, reviewing and refining program structure, and ensuring optimal system performance. The role requires attention to detail and adherence to high code quality standards. A working understanding of the infrastructure in (cloud environment, CI/CD) is a strong advantage. This is a full-time, Hybrid / Remote position located in Jakarta, Indonesia.


Qualifications

", "employmentType": "Full-time", "experienceLevel": "Mid-Senior level" } ``` --- ### Location Suggest LinkedIn location typeahead — the same JSON list the guest job-search box is backed by, rung 1 (direct), ~300-600ms. Upstream: /jobs-guest/api/typeaheadHits?typeaheadType=GEO. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:linkedin/location-suggest` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | yes | Partial place name to complete. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:linkedin/location-suggest?query=Jakarta" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:linkedin/location-suggest?query=Jakarta", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:linkedin/location-suggest?query=Jakarta", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "name": "Jakarta Raya, Indonesia", "geoId": "104370960" }, { "name": "Area DKI Jakarta", "geoId": "90010101" }, { "name": "Jakarta Pusat, Jakarta Raya, Indonesia", "geoId": "101705944" }, { "name": "Gambir, Jakarta Raya, Indonesia", "geoId": "101364924" }, { "name": "Jakarta Selatan, Jakarta Raya, Indonesia", "geoId": "108417589" }, { "name": "Jakarta Timur, Jakarta Raya, Indonesia", "geoId": "111356910" } ], "query": "Jakarta", "provider": "linkedin" } ``` --- ### Recent Jobs LinkedIn jobs posted recently — the guest search API with `f_TPR` pre-bound, rung 1 (direct), 390-620ms. Upstream: /jobs-guest/jobs/api/seeMoreJobPostings/search. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:linkedin/recent-jobs` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | no | Free-text search across job titles and descriptions. | | `location` | string | query | no | Place name as LinkedIn spells it — a country, region or city. | | `geoId` | string | query | no | LinkedIn geo id, from the location-suggest endpoint. More precise than `location`. | | `companyId` | string | query | no | LinkedIn company id, from the company-suggest endpoint. Returns only that company's postings. | | `within` | enum(24h|week|month) | query | no | How far back to look. Default 24h. | | `page` | number | query | no | Page number, 10 jobs per page. Default 1. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:linkedin/recent-jobs?query=backend%20developer&location=Indonesia&geoId=104370960&companyId=1035&within=24h&page=1" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:linkedin/recent-jobs?query=backend%20developer&location=Indonesia&geoId=104370960&companyId=1035&within=24h&page=1", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:linkedin/recent-jobs?query=backend%20developer&location=Indonesia&geoId=104370960&companyId=1035&within=24h&page=1", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 0, "items": [], "limit": 10, "query": "backend developer", "total": null, "hasMore": false, "nextPage": null, "provider": "linkedin", "postedWithin": "24h" } ``` --- ### Search LinkedIn job search — the logged-out guest API, rung 1 (direct) per recon, 390-620ms. Upstream: /jobs-guest/jobs/api/seeMoreJobPostings/search. It answers HTML job cards, not - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/jobs:linkedin/search` - **Cache TTL:** 600s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `query` | string | query | no | Free-text search across job titles and descriptions. | | `location` | string | query | no | Place name as LinkedIn spells it — a country, region or city. | | `geoId` | string | query | no | LinkedIn geo id, from the location-suggest endpoint. More precise than `location`. | | `companyId` | string | query | no | LinkedIn company id, from the company-suggest endpoint. Returns only that company's postings. | | `postedWithin` | enum(24h|week|month) | query | no | Only postings published inside this window. | | `page` | number | query | no | Page number, 10 jobs per page. Default 1. | **cURL:** ```bash curl "https://api.zpi.web.id/v1/jobs:linkedin/search?query=backend%20developer&location=Indonesia&geoId=104370960&companyId=1035&postedWithin=week&page=1" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/jobs:linkedin/search?query=backend%20developer&location=Indonesia&geoId=104370960&companyId=1035&postedWithin=week&page=1", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/jobs:linkedin/search?query=backend%20developer&location=Indonesia&geoId=104370960&companyId=1035&postedWithin=week&page=1", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 1, "items": [ { "url": "https://id.linkedin.com/jobs/view/digital-solution-engineer-ai-apps-at-microsoft-4450325467", "slug": "digital-solution-engineer-ai-apps-at-microsoft", "jobId": "4450325467", "title": "Digital Solution Engineer - AI & Apps", "badges": [ "Actively Hiring" ], "company": { "url": "https://www.linkedin.com/company/microsoft", "code": "microsoft", "logo": "https://media.licdn.com/dms/image/v2/D560BAQH32RJQCl3dDQ/company-logo_100_100/B56ZYQ0mrGGoAU-/0/1744038948046/microsoft_logo", "name": "Microsoft" }, "location": { "city": "Jakarta", "name": "Jakarta, Jakarta, Indonesia", "region": "Jakarta", "country": "Indonesia" }, "postedAt": "2026-08-28" } ], "limit": 10, "query": "backend developer", "total": null, "hasMore": false, "nextPage": null, "provider": "linkedin" } ``` --- _Generated: 2026-09-02T14:22:03.400Z_