Skip to main content
The /api/v1/context/finance-products endpoint returns lender and finance-program context records from the finance_products dataset. These records capture broad product facts — loan amount windows, APR ranges, dealer fee structures, eligible and ineligible measures, and sourcing metadata — and are designed for enrichment, comparison, and CRM display rather than direct quote calculation. They are distinct from the quote-safe dealer-fee rows returned by /api/v1/finance/fees.
Not all records returned by this endpoint are quote-safe. Always check the quote_safe field before using a record in a customer-facing quote. Context records sourced from contractor-uploaded PDFs, sample agreements, or lender summaries may have quote_safe: false until an official rate or dealer-fee table is approved.

Endpoint

GET https://homeservicedata.com/api/v1/context/finance-products

Request

Headers

x-api-key
string
required
Your API key. Obtain or rotate keys in your dashboard.

Query Parameters

trade
string
Filter by trade category (case-insensitive). Accepted values: solar, hvac, roofing, plumbing, electrical. Returns a 400 for unrecognized values.
product_type
string
Filter by product type. Accepted values: loan, lease, pace, home_improvement_loan, credit_application, backup_plan, checklist, unknown.
state
string
Two-letter state code (e.g. CA, TX). Post-filters records by state_scope — records with an empty state_scope are returned for any state.
financier
string
Financier name or slug. Matched against both financier_slug (exact) and financier_name (substring, case-insensitive).
measure
string
Filter to records whose eligible_measures array contains this exact value (case-insensitive), e.g. battery_storage, heat_pump.
quote_safe
boolean
Pass true to return only verified records; false to return only unverified context. Omit to return all records. Returns a 400 for values other than true or false.
limit
integer
Maximum number of records to return. Defaults to 100; hard cap is 250.

Response

A successful response returns an application/json object with data.records (the program context rows), data.coverage (a summary of the applied filters), and a usage block.

Response Fields

data.records
array
Array of finance product context objects, ordered by quote_safe descending then last_verified_at descending.
data.coverage
object
Summary of applied filters and result metadata.

Examples

curl -G https://homeservicedata.com/api/v1/context/finance-products \
  -H "x-api-key: YOUR_API_KEY" \
  --data-urlencode "trade=solar" \
  --data-urlencode "product_type=loan" \
  --data-urlencode "state=CA"

Example Response

{
  "data": {
    "records": [
      {
        "id": "fp_001aaa",
        "source_document_id": "src_xyz789",
        "trade_category": "solar",
        "financier_name": "GoodLeap",
        "financier_slug": "goodleap",
        "product_name": "GoodLeap Standard Loan",
        "product_type": "loan",
        "state_scope": ["CA", "TX", "FL", "AZ"],
        "loan_amount_min": 5000,
        "loan_amount_max": 150000,
        "term_months_min": 60,
        "term_months_max": 300,
        "apr_min": 0.0,
        "apr_max": 0.0799,
        "dealer_fee_type": "percentage",
        "dealer_fee_flat": null,
        "dealer_fee_percent_min": 0.18,
        "dealer_fee_percent_max": 0.36,
        "eligible_measures": ["solar_panels", "battery_storage", "ev_charger"],
        "ineligible_measures": null,
        "requirements": {
          "min_credit_score": 600,
          "contractor_enrollment": "required"
        },
        "unresolved_requirements": null,
        "status": "active",
        "quote_safe": true,
        "confidence": "high",
        "effective_date": "2024-01-01",
        "expires_at": null,
        "source_url": "https://goodleap.com/dealer-program-guide",
        "last_verified_at": "2024-11-10T09:00:00.000Z",
        "source_title": "GoodLeap Dealer Program Guide 2024",
        "source_kind": "official_lender_doc"
      }
    ],
    "coverage": {
      "trade": "solar",
      "financier": null,
      "product_type": "loan",
      "state": "CA",
      "measure": null,
      "returned": 1,
      "source": "finance_products",
      "quote_safe_rule": "Quick facts, sample agreements, and contractor-uploaded lender summaries return as context unless an official deterministic rate/dealer-fee table has been approved."
    }
  },
  "usage": {
    "endpoint": "/api/v1/context/finance-products",
    "status_code": 200,
    "duration_ms": 58
  }
}

Finance Products vs. Finance Fees

/context/finance-products/finance/fees
PurposeLender program enrichment and comparisonQuote-safe dealer-fee rows for calculation
quote_safeMixed — check per recordAlways true
Dealer fee fieldsRanges (min/max)Exact fee_percentage
Rate fieldsAPR range (apr_min/apr_max)Exact interest_rate
Best forCRM display, product comparison, eligibility checksQuoting engines, proposal builders
Use the measure filter to pre-screen which lender products support a specific installation type (e.g. battery_storage, heat_pump) before fetching exact fee rows from /api/v1/finance/fees.

Error Reference

StatusCause
400Invalid trade, product_type, quote_safe, or state parameter value.
401Missing or invalid x-api-key header.
403Your key does not have access to the finance_products dataset.
500Internal server error.