---
title: "Building permits by week"
method: GET
path: "/api/v1/series/permits-weekly"
---

# Building permits by week

`GET /api/v1/series/permits-weekly`

## Request

- Base URL: `https://fronterasignal.com`
- URL: `https://fronterasignal.com/api/v1/series/permits-weekly`
- Auth: none required

Use to track building-permit activity week by week in Rio Grande Valley cities (McAllen, Edinburg, Pharr, Mission, Weslaco, Brownsville, Harlingen and others) by permit class, to judge whether local construction demand is rising or falling before a lending, supply or market-entry decision. dark means the city published nothing that week. Example: "Are McAllen single-family permits up or down over the last two months?"

Returns: Building-permit counts by Valley city, permit class and ISO week, each row reported, dark or no_reading.

Free sample (a real answer to /api/v1/series/permits-weekly?from=2026-W42&to=2026-W42): https://fronterasignal.com/data/v1/samples/series-permits-weekly.json

## Query parameters

- `from` string
- `to` string

## Response `200`

Building-permit counts by Valley city, permit class and ISO week, each row reported, dark or no_reading.

- object
  - `publisher` string, required
  - `series` string, required
  - `title` string, required
  - `schema_version` string, required
  - `latest_week` string, required
  - `query` object, required
    - `from` string
    - `to` string
  - `cadence` string, required
  - `fields` string[], required
  - `returned` integer, required
  - `rows` object[], required
    - `week_id` string, required
    - `county` string, required
    - `city` string, required
    - `permit_class` string, required
    - `count` integer, nullable, required
    - `value_usd` string, nullable, required
    - `as_of` string, required
    - `age_days` integer, nullable, required
    - `cadence` string, required
    - `stale` boolean, required
    - `source` string, required
    - `status` string, required
    - `backfill` boolean, required
  - `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)
