Datasets API endpoint
Aggregations over all open postings: top companies hiring, breakdown by provider (every provider filterable via /datasets/jobs/search's `provider` param), department, location, employment type, skill, benefit, education, security clearance, seniority, and ESCO/ISCO job family, plus the remote share — a live hiring-market snapshot. Seniority uses one mutually exclusive value: `entry`, `mid`, or `senior`; ambiguous occupations are omitted from job-family buckets.
/datasets/jobs/facetsQuery parameters:
size — buckets per facet, default 20, max 100.Returns facets with top_companies, by_provider, by_department, by_location, by_employment_type, by_ai_tool, by_benefit, by_security_clearance, by_education_level, by_skill, by_seniority, and by_job_family (each {key, count}), plus remote_open and total_open. by_seniority uses the mutually exclusive values entry, mid, and senior. by_job_family counts only postings with a sufficiently confident ESCO occupation assignment; ambiguous postings are omitted.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| key | 20 | |
| count | 20 | 5,511 to 24,844, median 9,820 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| size | integer | No | Buckets per facet, default 20, max 100 | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/jobs/facets" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"facets": {
"top_companies": [
{
"key": "Stripe",
"count": 511
}
],
"by_provider": [
{
"key": "greenhouse",
"count": 120000
}
],
"by_department": [
{
"key": "Engineering",
"count": 40000
}
],
"by_location": [
{
"key": "Remote",
"count": 30000
}
],
"by_employment_type": [
{
"key": "Full-time",
"count": 180000
}
],
"by_seniority": [
{
"key": "mid",
"count": 150000
},
{
"key": "entry",
"count": 65000
},
{
"key": "senior",
"count": 35000
}
],
"by_job_family": [
{
"key": "Information and communications technology professionals",
"count": 42000
}
],
"remote_open": 30000,
"total_open": 250000
}
}
}Request schema
No body schema
Response schema
#/definitions/datasets.jobsFacetResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.JobsFacetResponse | No | ||||
| data.facets | object | No | Counts of open job postings grouped by company, provider, department, location, employment type, skill and other attributes. | |||
| data.facets.by_ai_tool | array | No | ByAITool counts canonical AI tool and platform names mentioned in open job postings. | |||
| data.facets.by_ai_tool[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_ai_tool[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_benefit | array | No | ByBenefit, BySecurityClearance, and ByEducationLevel count canonical requirements and offerings mentioned in open job postings. | |||
| data.facets.by_benefit[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_benefit[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_department | array | No | Open posting counts by department. | |||
| data.facets.by_department[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_department[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_education_level | array | No | Open posting counts by education level mentioned in the posting. | |||
| data.facets.by_education_level[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_education_level[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_employment_type | array | No | Open posting counts by employment type, for example `Full-time`. | |||
| data.facets.by_employment_type[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_employment_type[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_job_family | array | No | ByJobFamily counts conservative ESCO/ISCO occupation-family classifications; postings without sufficient evidence are omitted. | |||
| data.facets.by_job_family[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_job_family[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_location | array | No | Open posting counts by location. | |||
| data.facets.by_location[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_location[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_provider | array | No | Open posting counts by job source. | |||
| data.facets.by_provider[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_provider[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_security_clearance | array | No | Open posting counts by security clearance level mentioned in the posting. | |||
| data.facets.by_security_clearance[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_security_clearance[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_seniority | array | No | BySeniority counts the mutually exclusive entry/mid/senior classification over open postings. | |||
| data.facets.by_seniority[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_seniority[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.by_skill | array | No | BySkill counts canonical ESCO skill labels mentioned in open job postings. | |||
| data.facets.by_skill[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.by_skill[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.remote_open | integer | No | Number of open postings marked remote. | |||
| data.facets.top_companies | array | No | Companies with the most open postings, with the posting count for each. | |||
| data.facets.top_companies[].count | integer | No | Number of open job postings with this value. | |||
| data.facets.top_companies[].key | string | No | Facet value, for example a company, department or location name. | |||
| data.facets.total_open | integer | No | Total number of open postings. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/jobs/facets" \
-H "x-api-key: $CRAWLORA_API_KEY"