Reference
API reference
Endpoints, filters, pagination and response fields for jobs and employers.
Base URL: https://withpanta.com/api/v1. Search parameters are optional, single-valued and case-sensitive. Unknown and repeated parameters return 400. Unsupported methods return 405. Use Accept: application/json.
| Method | Endpoint | Returns |
|---|---|---|
| GET | /jobs |
Swiss-eligible jobs from enabled sources, with source metadata. |
| GET | /jobs/{id} |
job, postings and countries, including inactive or past listings. |
| GET | /companies |
Public employer profiles and canonical active job counts. |
| GET | /companies/{id} |
A public company profile with official domain and description provenance. |
| GET | /companies/{id}/jobs |
Exact employer's active and past Swiss jobs. |
| POST | /cv-check |
Transient deterministic CV findings; separate size and rate limits. |
Job search filters
| Parameter | Meaning |
|---|---|
q |
Keywords. All searchable terms must match; searches titles and descriptions. At most 12 terms are interpreted. Maximum 200 UTF-8 bytes. |
company_id |
Exact canonical employer ID returned by company search; preferred for employer-specific queries. |
category |
Reviewed title-based role family, version 2026-10-27.2. Not an employer-sector filter. |
company |
Employer name contains this text; not a company ID. Maximum 48 UTF-8 bytes. |
canton |
Swiss canton code. |
geography |
Work arrangement; does not imply Swiss remote eligibility. |
location_class |
Location evidence classification. Swiss search excludes ambiguous and non-Swiss results. |
sector |
Employer sector contains this text. Maximum 40 UTF-8 bytes. |
employment_type |
Employment type contains this text, e.g. full-time. Maximum 48 UTF-8 bytes. |
sort |
Default: relevance with keywords, otherwise newest. |
limit |
Results per page (1–50). |
offset |
Use next_offset from the previous response; maximum 5000. |
Swiss eligibility is always enabled. Search uses all searchable terms across titles and descriptions, with at most 12 interpreted terms. Check interpreted_terms and query_truncated. Try shorter or alternative keywords if results are sparse. Canton filtering uses the normalized canton field and can omit remote or multi-location positions without a single canton.
Employer search filters
| Parameter | Meaning |
|---|---|
q |
Employer keywords. Maximum 120 UTF-8 bytes. |
country |
Headquarters country code, e.g. CH. This is not job location. |
sector |
Sector contains this text. Maximum 40 UTF-8 bytes. |
swiss_jobs |
When true, only employers with a recorded domain and active Swiss-eligible jobs from enabled sources. Does not imply source freshness. |
has_jobs |
Filter on canonical active job count; not restricted to Swiss or fresh sources. |
limit |
Results per page (1–50). |
offset |
Use next_offset from the previous response; maximum 5000. |
Employer coverage includes companies without current Swiss openings. country filters headquarters. active_jobs counts canonical active jobs across countries and source tiers, and is not a count of fresh Swiss vacancies. Company profiles expose sectors as a string array; unenriched fields are null.
One employer's active and past jobs
Use GET /companies/{id}/jobs with status=active (default) or status=past, plus limit and offset. The response includes company, status, jobs, sources, snapshot_at and pagination metadata. Active results come from trusted employer sources; past results contain inactive Swiss jobs. Source freshness and health remain separate from activity. This endpoint does not provide a complete history of hiring or historical time series.
Pagination
Both searches return count: null, page_count, limit, offset, has_more, next_offset and snapshot_at. Totals are not computed. Use next_offset until it is null; maximum offset is 5,000 and maximum page size is 50. Narrow your query to explore further.
The index changes between requests. snapshot_at is the search result generation time, not a frozen dataset version or a source verification time. Pagination can repeat or skip records as the index changes; deduplicate by job ID. No bulk export or historical time-series API is provided.