Skip to main content
The permits context endpoint returns permit and code-compliance records for home-service trades across U.S. jurisdictions. Each record describes whether a permit is required, what inspections and documents are needed, and any associated fee structure. Data is sourced from official jurisdiction portals and AHJ websites. Records backed by verified, deterministic source data are marked quote_safe: true; records with ambiguous requirements, estimated fees, or unresolved code questions carry quote_safe: false and should be treated as directional context only. Endpoint
GET https://homeservicedata.com/api/v1/context/permits

Query Parameters

trade
string
default:"hvac"
Trade vertical to filter by. One of: hvac, solar, roofing, plumbing, electrical.
state
string
Two-letter state code (e.g., FL, AZ). Case-insensitive.
county
string
County name. Partial match, case-insensitive.
city
string
City name. Partial match against the jurisdiction’s city. Case-insensitive.
quote_safe
boolean
When true, returns only records verified for customer-facing quote use.
limit
integer
default:"100"
Maximum number of records to return. Capped at 500.

Response Fields

records
array
Array of permit context objects.
coverage
object
Query summary metadata.
Permit requirements and fees change frequently. Always verify current fee schedules directly with the AHJ before including permit costs in a customer contract. Records with quote_safe: false or non-empty unresolved_requirements arrays require manual verification before use in a binding quote.
Filter by quote_safe=true when populating permit fee line items in a proposal. Use quote_safe=false records for internal awareness of jurisdictions that require additional research before closing a job.

Example Request

curl -G https://homeservicedata.com/api/v1/context/permits \
  -H "x-api-key: YOUR_API_KEY" \
  --data-urlencode "trade=hvac" \
  --data-urlencode "state=FL" \
  --data-urlencode "city=Orlando" \
  --data-urlencode "quote_safe=true"

Example Response

{
  "success": true,
  "data": {
    "records": [
      {
        "record_id": "pmt_01hzka1bc2de3fg4hi5jk6yzab",
        "jurisdiction": {
          "id": "jur_01hzka1bc2de3fg4hi5abcde",
          "slug": "city-of-orlando-fl",
          "authority_name": "City of Orlando Building Division",
          "jurisdiction_type": "city",
          "state_code": "FL",
          "county_name": "Orange",
          "county_fips": "12095",
          "city_name": "Orlando",
          "website_url": "https://www.orlando.gov/Building",
          "permit_portal_url": "https://permits.orlando.gov"
        },
        "trade": "hvac",
        "permit_type": "mechanical",
        "requirements": {
          "permit_required": true,
          "inspection_required": true,
          "licensed_contractor_required": true,
          "registered_contractor_required": false,
          "preapproval_required": false,
          "required_documents": ["equipment_spec_sheet", "manual_j_summary"],
          "unresolved_requirements": []
        },
        "fees": {
          "amount_type": "flat",
          "fee_low": 85.00,
          "fee_high": 125.00,
          "formula": null
        },
        "code": {
          "basis": "FBC_2023",
          "cycle": "2023",
          "status": "adopted"
        },
        "quote_safe": true,
        "confidence": "high",
        "provenance": {
          "source_document_id": "doc_01hzka1bc2de3fg4hi5jk6orl",
          "source_url": "https://www.orlando.gov/Building/Fees",
          "last_verified_at": "2024-09-10T00:00:00Z",
          "trust_basis": "permit_code_context"
        }
      }
    ],
    "coverage": {
      "trade": "hvac",
      "state": "FL",
      "county": null,
      "city": "Orlando",
      "records_returned": 1,
      "quote_safe_only": true,
      "trust_basis": "Official jurisdiction portals are loaded first; unresolved fee and permit rules return with quote_safe=false."
    }
  }
}