Filtering
Compose nested objects, scalars and array filters without changing their meaning.
Employee size
Use company[employeeSize]=11-50. Employee size is a closed enum; numeric employee bounds are not accepted.
- The entire disclosed workforce interval must fit the selected bucket.
- Full-time equivalents never match employee counts.
- Unknown facts match only when the applicable
includeUnstatedoption is enabled.
Matching semantics
| Selection | Meaning |
|---|---|
| Company categories | OR within each category; AND across categories |
| Financing amounts | Require both company[financingCurrency] and company[financingMeaning]; offering proceeds, round amounts and valuations are distinct |
| Experience | Years rounded to whole-year search bounds; titles do not establish duration. Unstated requirements are included by default |
locations | Where the job is located; place names resolve through search |
applicantLocations | Canonical location IDs explicitly allowed by applicant eligibility requirements |
tools | General tool categories, including their descendants |
facts[technologyTools] | Explicit leaf tools with the selected technology relationship |
Explicit facts
Related action and target conditions must match one assertion in one job:
facts[initiativeActions]=migrate_system&facts[initiativeTools]=salesforce
This selects an observed Salesforce migration. Separate vacancies cannot satisfy its parts. Unsupported source cohorts remain unstated. Find accepted values in the Jobs reference.
Source-attributed observations
| Endpoint | Parent | SDK resource (TypeScript / Python) |
|---|---|---|
/v0/company-facts | Company | companyFacts / company_facts |
/v0/company-events | Company | companyEvents / company_events |
/v0/job-facts | Job | jobFacts / job_facts |
- Lists and SDK iterators paginate by parent, using its search criteria and read scopes. Normal permissions and resource charges apply.
- Observations include source URL, digest, reference, parser revision and separate source dates. Empty fact arrays mean no publishable facts for that parent.
- Job and Company response shapes stay unchanged. Company-data permissions can allow publication without observed vacancies.
- Employer claims, job requirements and verified compliance evidence are distinct. A GDPR, HIPAA or SOC 2 mention does not establish compliance.
- A captured listing interval does not establish continuous availability, a completed hire or hiring difficulty.
- A financing stage without a publication date is company context, not a newly completed funding event.
Query encoding
| Kind | Examples | Rule |
|---|---|---|
| Scalar | query, sort, paginationToken | Send at most once |
| Array | roles, locations, tools, workArrangements | Any supplied value matches; SDKs take arrays |
| Nested object | experience[min], compensation[min] | OpenAPI deepObject encoding |
| Location | London, United Kingdom | Place names resolve like luranta.com search |
Array filters
curl "https://api.luranta.com/v0/jobs?roles=software-engineering&roles=data-engineering&locations=London" \
--header "Authorization: Bearer $LURANTA_API_KEY"await client.jobs.list({
roles: ["software-engineering", "data-engineering"],
locations: ["London"],
})client.jobs.list({
"roles": ["software-engineering", "data-engineering"],
"locations": ["London"],
})Validation is strict
Unknown parameters, duplicate scalars, invalid values, unresolved locations, conflicting ranges and oversized arrays return 400 Problem Details.