---
title: "Find current product-matched rates near a ZIP"
method: GET
path: "/v1/rates/nearby"
tags: ["Data & Analytics"]
---

# Find current product-matched rates near a ZIP

`GET /v1/rates/nearby`

## Request

- Base URL: `https://api.rateapi.dev`
- URL: `https://api.rateapi.dev/v1/rates/nearby`
- Auth: API key in header `X-API-Key`

Finds credit unions in the nearest NCUA-reported branch set for a five-digit ZIP, keeps institutions with a current product-matched published rate, and ranks those offers by lowest APR with approximate distance as a tie-breaker. Distance is a straight-line estimate, not driving distance. Membership and personalized approval are not guaranteed. HELOC results require lender wording that identifies a line of credit and exclude closed-end home-equity loans. This route is the single source of truth; the MCP `find_product_rates_near_zip` tool and consumer product near-me pages call it.

**Authentication required**: Pass your API key in the `X-API-Key` header.

## Query parameters

- `zip` string, required
- `product_type` 'auto_loan' | 'mortgage' | 'mortgage_arm' | 'heloc' | 'personal_loan' | 'student_loan' | 'equipment_loan' | 'credit_card', required
- `term_months` integer
- `vehicle_condition` 'new' | 'used' | 'certified_pre_owned' | 'cpo'
- `max_offers` integer

## Response `200`

A bounded APR-ranked list of product-matched rates from nearby credit unions.

- object
  - `zip` string, required: The five-digit ZIP code that was searched.
  - `product_type` string, required: Loan or deposit product this applies to.
  - `ranked_by` string, required: What the offers are ordered on — estimated distance to the closest reported branch, then APR.
  - `nearby_credit_union_count` integer, required: Credit unions found near the ZIP code before offers were matched.
  - `precision` string, required: How the distances were computed, stated in words so they cannot be mistaken for driving distance.
  - `disclosure` string, required: Statement that must be shown to a consumer alongside this result.
  - `unavailable_reason` string: Why no local offers were returned. Present only when the list is empty.
  - `offers` object[], required: The local offers, nearest first and then cheapest.
    - `credit_union_id` string, required: Canonical identifier of the credit union.
    - `credit_union_name` string, required: Name of the credit union.
    - `rateapi_url` string, uri, nullable: Page on rateapi.dev covering this credit union.
    - `product_name` string, required: The lender's own name for the product, verbatim from its rate page.
    - `display_name` string, required: Readable product label derived from the classified product facts. Falls back to `product_name`.
    - `rate` number, required: Note rate as an annual percentage, excluding fees.
    - `apr` number, required: Annual percentage rate, which includes fees and is the figure offers are ranked on.
    - `points` number: Discount points priced into the rate.
    - `last_updated` string, date-time, required: When this offer was last refreshed.
    - `distance_miles` number, nullable, required: Straight-line distance to the closest reported branch, or null when no distance could be computed.
    - `distance_method` string, nullable, required: What the distance was measured from — a branch coordinate or the ZIP centroid — or null when no distance was computed.
    - `branch` NearbyCreditUnionBranch, required: The NCUA-reported branch that a nearby-credit-union distance was measured to.
      - `name` string, nullable, required: Branch name as reported to NCUA, or null when unnamed.
      - `address1` string, nullable, required: Street address of the branch, or null when not reported.
      - `city` string, nullable, required: City the branch is in, or null when not reported.
      - `state` string, nullable, required: Two-letter US state code of the branch, or null when not reported.
      - `postalCode` string, nullable, required: ZIP code of the branch, or null when not reported.
      - `phone` string, nullable, required: Branch phone number, or null when not reported.
      - `mainOffice` boolean, required: True when this branch is the credit union’s main office.

## Other responses

- `400`: The request was malformed — a missing required field, an unparseable body, or a parameter outside its allowed range. The `error` field names what was wrong; retrying the identical request will fail identically.
- `401`: No API key, or a key that is unknown or disabled. Send it in the `X-API-Key` header. Free keys are issued instantly by POST /keys with an email address. The response carries `WWW-Authenticate` pointing at this host's protected-resource metadata, and the `RateLimit-*` headers describing the Free-tier budget a key issued now would carry (scope `anonymous`) — a rejected request spends none of it, so `Remaining` equals `Limit`.
- `429`: Quota exhausted for the current window. `Retry-After` gives the seconds to wait; `upgradeInfo` explains how to lift the cap. Retrying before the reset will fail again and still counts as a request.

---

[API](https://skmtc.dev/rateapi/apis/rate-api.md) · [All operations](https://skmtc.dev/rateapi/apis/rate-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rateapi/apis/rate-api/revisions/06a6db76995f?raw)
