---
title: "Filed cost per square foot"
method: GET
path: "/api/v1/cost-per-sqft"
---

# Filed cost per square foot

`GET /api/v1/cost-per-sqft`

## Request

- Base URL: `https://fronterasignal.com`
- URL: `https://fronterasignal.com/api/v1/cost-per-sqft`
- Auth: none required

Use to check whether a commercial building budget in the Rio Grande Valley, Texas is in line: median and 25th-75th percentile of filed estimated cost per square foot over the last 24 months, by county (Hidalgo, Cameron, Starr, Willacy) and type of work (new construction, renovation, addition), with n. For estimating, appraisal and lending checks. Filed estimates, not bids. Example: "What does new commercial construction cost per square foot in Hidalgo County right now?"

Returns: Median and middle half (25th to 75th percentile) of filed cost per square foot by county and type of work, with n and the date range.

Free sample (a real answer to /api/v1/cost-per-sqft?county=Hidalgo): https://fronterasignal.com/data/v1/samples/cost-per-sqft.json

## Query parameters

- `county` 'Hidalgo' | 'Cameron' | 'Starr' | 'Willacy'
- `type_of_work` 'Additions to Existing Building' | 'New Construction' | 'Renovation/Alteration'

## Response `200`

Median and middle half (25th to 75th percentile) of filed cost per square foot by county and type of work, with n and the date range.

- object
  - `publisher` string, required
  - `dataset` string, required
  - `query` object, required
    - `county` string
  - `source` string, required
  - `as_of` string, required
  - `cadence` string, required
  - `window` object, required
    - `registered_since` string, required
    - `months` integer, required
  - `method` string, required
  - `projects_used` integer, required
  - `groups` object[], required
    - `county` string, required
    - `type_of_work` string, required
    - `n` integer, required
    - `registered_from` string, required
    - `registered_to` string, required
    - `source` string, required
    - `median_usd_per_sqft` number, nullable, required
    - `p25_usd_per_sqft` number, nullable, required
    - `p75_usd_per_sqft` number, nullable, required
    - `median_square_feet` integer
    - `note` string
  - `disclaimer` string, required

## Other responses

- `400`: Bad or unknown parameters. Free, before any payment; allowed lists the valid ones. unknown_param (400): A query parameter this endpoint does not take. allowed lists the ones it does. repeated_param (400): The same parameter was sent twice. missing_param (400): A required parameter is missing. bad_param (400): A value in the wrong format (date, ISO week, number, length). The message names the parameter. unknown_value (400): A value outside the list we cover (city, county, item, store, type of work, language). allowed lists the valid ones. unknown_week (400): No issue was published for that week in that language. allowed.week lists the ones we have. bad_range (400): from is after to. no_house_number (400): nearby and parcel need a house number and street; an intersection or a street alone has no single place. not_covered (400): The place is outside what the endpoint covers. parcel covers Hidalgo County only for now.
- `402`: Payment required. Free of charge to receive. The PAYMENT-REQUIRED header (base64 JSON, x402 v2) lists price, network, asset and payTo; retry with a PAYMENT-SIGNATURE header.
- `404`: A valid query with nothing to return, or no such endpoint. Free: before any payment, or for nearby and parcel after the payment is verified and never settled. no_results (404): The query is valid but nothing matches it. Free. no_readings (404): Rows exist for that range but every one is dark or no_reading. Free. no_match (404): No owner or design firm contains that name. Free. too_few_projects (404): Fewer than 5 usable filings in every group, so there is no statistic to sell. Free; counts are in the body. not_found (404): No such endpoint or series. address_not_found (404): nearby and parcel: the address could not be placed on the map or matched to a parcel. Found after the payment is verified; the payment is not settled. ambiguous (404): nearby and parcel: the address fits several different places or parcels. Add the direction (N, S, E, W). Not settled. outside_coverage (404): nearby: the address is outside Hidalgo, Cameron, Starr and Willacy counties. Not settled. not_available (404): parcel: this record is not available from this API. Not settled.
- `503`: The payment service is starting (retry after the Retry-After header), payments are off, or a live public-records lookup did not answer in time. Never settled. upstream_unavailable (503): nearby and parcel read public records at request time, and that service did not answer in time. Retry in a minute. Not settled. payment_service_starting (503): The payment service is starting. Retry after the Retry-After header (2 s). Never charged. payments_not_configured (503): Payments are not switched on for this deployment.

---

[API](https://skmtc.dev/fronterasignal/apis/frontera-signal-api.md) · [All operations](https://skmtc.dev/fronterasignal/apis/frontera-signal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fronterasignal/apis/frontera-signal-api/revisions/39e3fa496b3f?raw)
