Job Schema
The Job schema is designed for aggregating job listings from career pages and job boards.
Fields
Section titled “Fields”| Field | Type | Required | Identity | Description |
|---|---|---|---|---|
title | string | Yes | Yes (1) | Job title |
company | string | Yes | Yes (2) | Company name |
location | string | No | No | Job location (e.g., “Remote”, “New York, NY”) |
url | string | No | No | Link to the full job posting |
salary | string | No | No | Salary range or compensation info |
posted_at | string | No | No | When the job was posted |
tags | string[] | No | No | Tags or categories (e.g., [“devops”, “kubernetes”]) |
Identity Fields
Section titled “Identity Fields”The identity is computed from company + title in that order. This means:
- Same company + same title = duplicate
- Different company + same title = unique items
Example Item
Section titled “Example Item”{ "title": "Senior DevOps Engineer", "company": "Acme Corp", "location": "Remote (US)", "url": "https://jobs.lever.co/acme/123", "salary": "$150,000 - $200,000", "posted_at": "2026-01-15", "tags": ["devops", "kubernetes", "aws", "terraform"]}Use Cases
Section titled “Use Cases”- Company career page aggregators
- Niche job boards (e.g., “Remote DevOps Jobs”)
- Job market research tools
Extractor Example
Section titled “Extractor Example”{ "container": ".job-posting", "fields": { "title": { "selector": "h2.job-title", "type": "text" }, "company": { "selector": ".company-name", "type": "text" }, "location": { "selector": ".location", "type": "text" }, "url": { "selector": "a.apply-link", "type": "attribute", "attribute": "href" }, "tags": { "selector": ".tag", "type": "text", "multiple": true } }}