58 fields per job, grouped below by what they describe. Every rate was measured over 2,229 unique jobs across 25 roles and all 13 categories.
Job fields
| Field | Fill rate | Notes |
|---|---|---|
description | 100% | Markdown and HTML. In the job price, never billed separately. |
title | 100% | As posted. |
job_type | not measured | Full-time, contract, internship. |
is_remote / remote_type | not measured | Remote flag and its kind. |
posted_at | not measured | Date the posting appeared. |
direct_apply | not measured | Whether the application stays on Wellfound. |
Compensation fields
| Field | Fill rate | Notes |
|---|---|---|
compensation_raw | 79.5% | Category minimum 60.3%. The string as displayed. |
salary_min / salary_max | 86.7% | Of enriched rows. |
salary_currency / salary_period | 86.7% | Group by period before aggregating. |
equity_offered | not measured | Boolean, separate from the range. |
equity_min_pct / equity_max_pct | not measured | Parsed percentage range. |
How one display string becomes six columns, and why the original still ships.
Location fields
| Field | Fill rate | Notes |
|---|---|---|
location_names | 90.5% | Category minimum 83.7%. |
latitude / longitude | 93.3% | Of enriched rows. |
location_locality / _region / _country | not measured | Split out of the display name. |
applicant_location_requirements | not measured | Countries the company accepts applicants from. |
Experience and ATS — the two ranges
These two are published as ranges rather than averages, because the spread between role categories is wider than a mean can usefully describe.
| Field | Overall | By category |
|---|---|---|
ats_source | published as a range | 21% (Marketing) to 83% (HR and recruiting) |
years_experience_min | 31.6% | 12.8% to 75% |
The maximum years-of-experience field is not shipped at all: it measured 0.1%, 2 rows in 2,229 — why it was cut.
Company fields, attached inline
Every job carries its company: company_name, company_size_min and company_size_max, company_pitch, company_badges, company_website, company_industries and a geocoded headquarters. No second run is needed to join them.
emitCompanies additionally writes a deduplicated companies dataset, charged once per company rather than once per posting — a company with 56 jobs appears once.
Provenance fields
scraped_at, from_cache, data_age_hours and source_surface. The age figure includes Cloudflare's own cache in front of the site, measured at up to 23.4 hours — what that means for freshness.
What is deliberately absent
No funding rounds, investors, perks or team members, and no named founders or employees, because company profile pages are not read at all — the reasoning. Nothing is extracted or derived from the job description text either.


