---
title: "SERFF rate filings: filing-level browse/lookup (CA/MS/TX/WA)"
method: GET
path: "/v1/rates"
---

# SERFF rate filings: filing-level browse/lookup (CA/MS/TX/WA)

`GET /v1/rates`

## Request

- Base URL: `https://api.querylines.com`
- URL: `https://api.querylines.com/v1/rates`
- Auth: none declared

Current-row (latest report_date) rate filings, newest received_date first. Filter by `state` (CA|MS|TX|WA), `line` (matches `coverage_category` exactly or `toi_name` by substring, case-insensitive), `insurer` (company name substring), `min_change` (only filings with rate_change_pct >= this), or `from`/`to` (received_date bounds, YYYY-MM). An empty result is a normal 200, never a 404. $0.10 per query.

## Query parameters

- `state` 'CA' | 'MS' | 'TX' | 'WA'
- `line` string
- `insurer` string
- `min_change` number
- `from` string
- `to` string
- `limit` integer

## Response `200`

Matching filings, newest received_date first (rows with no received_date -- always MS -- sort last).

- object
  - `state` string, nullable, required
  - `line` string, nullable, required
  - `insurer` string, nullable, required
  - `min_change` number, nullable, required
  - `count` number, required
  - `filings` object[], required
    - `state` 'CA' | 'MS' | 'TX' | 'WA', required
    - `serff_tracking` string, required: SERFF tracking number (stable identity).
    - `company_name` string, required
    - `naic_code` string, nullable, required: Not printed by either source; usually null.
    - `toi_code` string, nullable, required: SERFF Type of Insurance code when the source prints one; null for MS.
    - `toi_name` string, nullable, required: Line/program as printed, e.g. 'Homeowners'.
    - `coverage_category` string, required: Normalized cross-dataset bucket, e.g. 'property', 'auto', 'workers_comp'.
    - `product_name` string, nullable, required: TX only; null for MS.
    - `rate_change_pct` number, nullable, required: Overall % change; null for form/new-program/withdrawal filings that print no percentage.
    - `received_date` string, nullable, required: ISO date. Always null for MS (not printed by the source).
    - `effective_date_new` string, nullable, required
    - `effective_date_renewal` string, nullable, required
    - `status` 'closed' | 'pending' | 'null', nullable, required
    - `disposition` 'reviewed' | 'withdrawn' | 'rejected' | 'null', nullable, required: TX closed-filing outcome; null when pending or MS.
  - `report_date` string, nullable, required
  - `data_as_of` string, nullable, required
  - `source` string, nullable, required: Joined distinct source strings when the result spans both states.
  - `coverage_note` string, required

## Other responses

- `400`: Invalid query parameters.
- `402`: Payment required (x402). Returned when the x402 payment gate is enabled (PAY_TO_ADDRESS configured) and the request carries no valid payment. The full payment challenge (price/network/payTo/asset) is carried in the base64-encoded PAYMENT-REQUIRED response header (see the x402 spec), not the JSON body -- the body is `{}` for API clients. Price for this route: $0.10. Retry with a signed payment per x402 (USDC on Base mainnet); on success the response carries a PAYMENT-RESPONSE header with settlement info. When PAY_TO_ADDRESS is unset (kill switch off), this route is free and never returns 402.
- `500`: Internal error.

---

[API](https://skmtc.dev/querylines/apis/querylines-api.md) · [All operations](https://skmtc.dev/querylines/apis/querylines-api/llms.txt) · [OpenAPI document](https://skmtc.dev/querylines/apis/querylines-api/revisions/4afb6c3e2b1f?raw)
