Skip to main content
The labor endpoints provide two complementary datasets for building accurate cost models. Regional labor rates (/api/v1/context/labor) deliver BLS Occupational Employment and Wage Statistics (OEWS) wage distributions by trade, geography, and occupation code — all records in this dataset are quote_safe: true. Labor adders (/api/v1/context/labor-adders) provide per-task cost and labor-hour ranges for installation complexity factors (crane lifts, attic work, line sets, etc.) and carry their own quote_safe flags based on source determinism.

Regional Labor Rates

GET https://homeservicedata.com/api/v1/context/labor
Returns BLS OEWS wage records for the specified trade and geography. Results default to the standard occupation code for the requested trade (HVAC: 49-9021, Roofing: 47-2181, Electrical: 47-2111, Plumbing: 47-2152, Solar: 47-2231).

Query Parameters

trade
string
default:"hvac"
Trade vertical. One of: hvac, solar, roofing, plumbing, electrical.
occupation_code
string
BLS SOC occupation code override (e.g., 49-9021). Overrides the default code for the selected trade.
region_type
string
Filter by geographic aggregation. One of: national, state, metro, nonmetro.
state
string
Two-letter state code (e.g., TX). Returns records where state_code matches.
region_code
string
BLS area code for a specific metro or non-metro area (e.g., C3518 for Dallas–Fort Worth).
data_year
integer
Filter to a specific BLS survey year (e.g., 2023). Must be a four-digit integer greater than 2000.
include_states
boolean
default:"false"
When true, state-level records are included alongside metro/non-metro records.
include_metros
boolean
default:"false"
When true, metro area records are included alongside state records.
limit
integer
default:"100"
Maximum number of records to return. Capped at 500.

Response Fields

records
array
Array of regional labor rate objects.
coverage
object

Labor Adders

GET https://homeservicedata.com/api/v1/context/labor-adders
Returns per-task labor and material cost adders — complexity factors added on top of base labor rates to account for job-specific conditions such as attic installs, crane lifts, or extended line sets.

Query Parameters

trade
string
default:"hvac"
Trade vertical. One of: hvac, solar, roofing, plumbing, electrical.
adder
string
Adder key to retrieve a single adder (e.g., crane_lift, attic_install). Slugified before matching.
quote_safe
boolean
Filter by quote-safe status. Omit to return all adders.
limit
integer
default:"100"
Maximum number of records to return. Capped at 500.

Response Fields

records
array
Array of labor adder objects.
coverage
object

Example Requests

curl -G https://homeservicedata.com/api/v1/context/labor \
  -H "x-api-key: YOUR_API_KEY" \
  --data-urlencode "trade=hvac" \
  --data-urlencode "state=TX" \
  --data-urlencode "region_type=metro" \
  --data-urlencode "limit=5"

Example Response — Labor Adders

{
  "success": true,
  "data": {
    "records": [
      {
        "record_id": "adr_01hzka1bc2de3fg4hi5jk6uvwx",
        "trade": "hvac",
        "adder_key": "crane_lift",
        "adder_label": "Crane Lift",
        "adder_group": "access",
        "unit": "per_job",
        "amount_type": "range",
        "ranges": {
          "cost_low": 350.00,
          "cost_high": 900.00,
          "labor_hours_low": 2.0,
          "labor_hours_high": 4.0,
          "material_cost_low": null,
          "material_cost_high": null
        },
        "source_basis": "Contractor survey and published service-area crane rental rates.",
        "calculation_notes": "Apply when equipment must be lifted to roof or second-floor mechanical room.",
        "unresolved_requirements": [],
        "quote_safe": true,
        "confidence": "medium",
        "provenance": {
          "source_document_id": "doc_01hzka1bc2de3fg4hi5jk6lbr",
          "source_url": null,
          "last_verified_at": "2024-07-01T00:00:00Z",
          "trust_basis": "labor_adder_context"
        }
      }
    ],
    "coverage": {
      "trade": "hvac",
      "adder": null,
      "records_returned": 1,
      "quote_safe_only": true,
      "trust_basis": "Adder records are context ranges or labor-hour assumptions unless an official deterministic fee source is loaded."
    }
  }
}