{
 "name": "PunchListWorks Handyman Pay Benchmark",
 "title": "Handyman Pay Benchmark",
 "url": "https://punchlistworks.com/datasets/handyman-pay-benchmark/",
 "csv": "https://punchlistworks.com/datasets/handyman-pay-benchmark.csv",
 "markdown": "https://punchlistworks.com/datasets/handyman-pay-benchmark/index.md",
 "computed_at": "2026-10-18",
 "license": "https://punchlistworks.com/terms",
 "headline": "The median published figure in the Handyman Pay Benchmark is 48,145 USD across 2 sources' own pages (range 46,700 to 49,590 USD), read 12 October 2026.",
 "quotes": [
  "The median published figure in the Handyman Pay Benchmark is 48,145 USD across 2 sources' own pages (range 46,700 to 49,590 USD), read 12 October 2026.",
  "2 of the 12 named sources read in full publish a figure; 10 publish none, read 12 October 2026.",
  "The median is unchanged since 26 September 2026 (was 48,145 USD across 2)."
 ],
 "citation": "\"PunchListWorks Handyman Pay Benchmark\", updated 2026-10-18, https://punchlistworks.com/datasets/handyman-pay-benchmark/.",
 "changed_since": {
  "since": "2026-09-26",
  "previous_median": 48145,
  "delta": 0,
  "direction": "unchanged",
  "sentence": "The median is unchanged since 26 September 2026 (was 48,145 USD across 2)."
 },
 "national": {
  "unit": "USD",
  "n": 2,
  "median": 48145,
  "min": 46700,
  "max": 49590,
  "p25": null,
  "p75": null,
  "mean": 48145,
  "units": {
   "USD": 2
  },
  "published_sources": 2,
  "named_sources": 13,
  "read_sources": 12,
  "not_published": 10,
  "published_share": 0.167
 },
 "by_axis": {},
 "rows": [
  {
   "source": "BLS Occupational Outlook Handbook, general maintenance and repair workers",
   "url": "https://www.bls.gov/ooh/installation-maintenance-and-repair/general-maintenance-and-repair-workers.htm",
   "figure": "$49,590 ",
   "value": 49590,
   "unit": "USD",
   "vat": null,
   "axis": {},
   "retrieved_at": "2026-10-12",
   "quote": "2025 Median Pay $49,590 per year",
   "source_class": "primary-government",
   "text_sha256": "d1262112f4adf8a32144af2578971bf51d377931dc4f09c51e175b7de3403b00"
  },
  {
   "source": "BLS OEWS, 49-9071 Maintenance and Repair Workers, General (national)",
   "url": "https://www.bls.gov/oes/2023/may/oes499071.htm",
   "figure": "$ 46,700 ",
   "value": 46700,
   "unit": "USD",
   "vat": null,
   "axis": {},
   "retrieved_at": "2026-10-12",
   "quote": "Annual Wage (2) $ 30,860 $ 37,160 $ 46,700 $ 59,640 $ 73,490",
   "source_class": "primary-government",
   "text_sha256": "606db46e7540b824a58476754fdb0232b7ac82254054e7e18b6595e08a25a30c"
  }
 ],
 "not_published": [
  {
   "source": "BLS OEWS tables index",
   "url": "https://www.bls.gov/oes/tables.htm",
   "retrieved_at": "2026-09-12",
   "reason": "read in full and no accepted figure on the page"
  },
  {
   "source": "BLS OEWS California state estimates",
   "url": "https://www.bls.gov/oes/2023/may/oes_ca.htm",
   "retrieved_at": "2026-10-12",
   "reason": "every candidate on the page was refused"
  },
  {
   "source": "BLS OEWS Texas state estimates",
   "url": "https://www.bls.gov/oes/2023/may/oes_tx.htm",
   "retrieved_at": "2026-10-12",
   "reason": "every candidate on the page was refused"
  },
  {
   "source": "BLS OEWS North Carolina state estimates",
   "url": "https://www.bls.gov/oes/2023/may/oes_nc.htm",
   "retrieved_at": "2026-10-12",
   "reason": "every candidate on the page was refused"
  },
  {
   "source": "BLS OEWS Florida state estimates",
   "url": "https://www.bls.gov/oes/2023/may/oes_fl.htm",
   "retrieved_at": "2026-10-12",
   "reason": "every candidate on the page was refused"
  },
  {
   "source": "BLS Quarterly Census of Employment and Wages",
   "url": "https://www.bls.gov/cew/",
   "retrieved_at": "2026-09-12",
   "reason": "every candidate on the page was refused"
  },
  {
   "source": "BLS industry page, NAICS 811 Repair and Maintenance",
   "url": "https://www.bls.gov/iag/tgs/iag811.htm",
   "retrieved_at": "2026-09-12",
   "reason": "every candidate on the page was refused"
  },
  {
   "source": "Census Nonemployer Statistics",
   "url": "https://www.census.gov/programs-surveys/nonemployer-statistics.html",
   "retrieved_at": "2026-10-12",
   "reason": "read in full and no accepted figure on the page"
  },
  {
   "source": "Census Nonemployer Statistics API",
   "url": "https://www.census.gov/data/developers/data-sets/nonemp-api.html",
   "retrieved_at": "2026-10-12",
   "reason": "read in full and no accepted figure on the page"
  },
  {
   "source": "O*NET OnLine, 49-9071.00",
   "url": "https://www.onetonline.org/link/summary/49-9071.00",
   "retrieved_at": "2026-10-12",
   "reason": "every candidate on the page was refused"
  }
 ],
 "sources": [
  {
   "url": "https://www.bls.gov/oes/2023/may/oes499071.htm",
   "label": "BLS OEWS, 49-9071 Maintenance and Repair Workers, General (national)",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/ooh/installation-maintenance-and-repair/general-maintenance-and-repair-workers.htm",
   "label": "BLS Occupational Outlook Handbook, general maintenance and repair workers",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/oes/tables.htm",
   "label": "BLS OEWS tables index",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/oes/2023/may/oes_ca.htm",
   "label": "BLS OEWS California state estimates",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/oes/2023/may/oes_tx.htm",
   "label": "BLS OEWS Texas state estimates",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/oes/2023/may/oes_nc.htm",
   "label": "BLS OEWS North Carolina state estimates",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/oes/2023/may/oes_fl.htm",
   "label": "BLS OEWS Florida state estimates",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/cew/",
   "label": "BLS Quarterly Census of Employment and Wages",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/iag/tgs/iag811.htm",
   "label": "BLS industry page, NAICS 811 Repair and Maintenance",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.census.gov/programs-surveys/nonemployer-statistics.html",
   "label": "Census Nonemployer Statistics",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.census.gov/data/developers/data-sets/nonemp-api.html",
   "label": "Census Nonemployer Statistics API",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.onetonline.org/link/summary/49-9071.00",
   "label": "O*NET OnLine, 49-9071.00",
   "license": "the publisher's own terms; quoted for reporting and comment"
  },
  {
   "url": "https://www.bls.gov/news.release/pdf/ocwage.pdf",
   "label": "BLS Occupational Employment and Wages news release",
   "license": "the publisher's own terms; quoted for reporting and comment"
  }
 ],
 "methodology": "Every row is a verbatim sentence read from the named source's own page through our fetch service on the date shown, hash-pinned to the stored read (the sha of the page's visible text; the raw page is mirrored to R2). 2 of the 12 named sources that could be read published a usable figure; 10 published none and are recorded as not published, never filled in; 1 could not be read (blocked, dead or unreachable) and count nowhere. The headline figures (median, minimum, maximum, quartiles) are over ONE figure per source in USD (a source's median where its page yielded several accepted sentences), so N counts sources, never sentences; 39 candidate sentence(s) were refused by a reviewer with the reason recorded. The fuller derivation this dataset is chartered to grow into (not yet what the figures above are; they are each source's own published figure as read): the BLS OEWS wage distribution for SOC 49-9071 (Maintenance and Repair Workers, General) - employment, mean and 10th/25th/50th/75th/90th percentile hourly and annual wage - per state and per metro, each release dated; the derivation nobody publishes is the GAP: the employed wage percentile beside the billed rate the rate-index measured in the same metro, giving the gross-to-take-home bridge a self-employed handyman actually asks about (billed rate minus the self-employment tax, insurance, vehicle, unbillable hours), and the Census Nonemployer Statistics count of no-employee repair-and-maintenance businesses (NAICS 811) with their receipts per establishment as the self-employed denominator; changed-since each OEWS release",
 "embed": "<figure style=\"margin:0;padding:16px;border:1px solid #d9d9d9;border-radius:8px;background:#ffffff;color:#111111;font-family:system-ui,sans-serif;max-width:480px\"><p style=\"margin:0 0 8px;font-size:28px;font-weight:700;color:#111111;background:#ffffff\">48,145 USD</p><p style=\"margin:0 0 8px;font-size:14px;color:#111111;background:#ffffff\">median published figure, Handyman Pay Benchmark, across 2 sources, read 12 October 2026</p><figcaption style=\"font-size:12px;color:#444444;background:#ffffff\"><a href=\"https://punchlistworks.com/datasets/handyman-pay-benchmark/#median\" style=\"color:#1a4fd6;background:#ffffff\">Source: PunchListWorks Handyman Pay Benchmark</a></figcaption></figure>"
}
