---
title: "Get a credit union's rates, eligibility, services, and NCUA profile"
method: GET
path: "/credit-unions/{state}/{slug}"
tags: ["Reference Data"]
---

# Get a credit union's rates, eligibility, services, and NCUA profile

`GET /credit-unions/{state}/{slug}`

## Request

- Base URL: `https://api.rateapi.dev`
- URL: `https://api.rateapi.dev/credit-unions/{state}/{slug}`
- Auth: API key in header `X-API-Key`

Returns a relationship-aware profile for one credit union: current evidence-backed loan and deposit rates, published membership eligibility, and source-labelled NCUA quarterly institution, financial, service, and branch facts. Use the state code and slug returned by `/credit-unions` or `/credit-unions/nearby`. Rate timestamps and NCUA cycle dates are separate because regulatory facts update quarterly while rates update independently.

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

## Path parameters

- `state` string, required
- `slug` string, required

## Response `200`

Credit union profile with rates, membership eligibility, and NCUA institution context

- CreditUnionProfile: Everything known about one credit union: identity, current served rates, membership eligibility, and its NCUA quarterly-report profile.
  - `claim` object: Whether this institution has claimed its own profile. Coarse by design — it never identifies the claimant. `verified` means a HUMAN-REVIEWED claim or a live institution membership; an unreviewed email-domain match reports as `claim_requested`, because submitting a form from an address on the credit union’s domain proves only that the submitter knows the website printed on this page.
    - `status` 'unclaimed' | 'claim_requested' | 'verified', required: `unclaimed` (no live claim), `claim_requested` (a claim is awaiting review), or `verified` (the institution has been confirmed). Rejected claims report as `unclaimed`.
    - `verified_at` string, date-time, nullable, required: When the earliest verification happened; null unless status is `verified`.
    - `partner_handle` string, nullable, required: The institution’s handle on partners.rateapi.dev, read from the stored `partner_handle` column — the value that surface actually resolves. Build the dashboard link as `https://partners.rateapi.dev/{partner_handle}/overview`; do NOT re-derive the handle from the name and state, because an institution whose handle was overridden (a collision, a rename) resolves at the stored value only. Present at every claim status, since the handle belongs to the institution rather than to the claim. Null when the institution has no handle assigned.
  - `id` string, required: Unique identifier for the credit union
  - `name` string, required: Full name of the credit union
  - `slug` string, required: URL-friendly slug derived from the credit union name
  - `state` string, required: 2-letter US state code (uppercase)
  - `stateName` string, required: Full name of the state
  - `city` string, nullable: City where the credit union is headquartered
  - `url` string, uri, nullable: URL to the credit union's rates page
  - `lastVerified` string, date-time, nullable: ISO 8601 timestamp when rates were last verified
  - `rates` CreditUnionRate[], required: All current servable loan and deposit rates for this credit union, each with its own observation timestamp
    - `productType` string, required: Normalized product type across loan and deposit categories
    - `productCategory` string: Broad normalized category used to group products on the profile
    - `productName` string, required: Specific product name as listed by the institution
    - `displayName` string: Human-readable product label derived without changing the source product identity
    - `loanProgram` string: Loan program type (e.g., conventional, FHA, VA, USDA, jumbo). Only present when applicable.
    - `rate` number, float, required: Interest rate as a percentage
    - `apr` number, float, nullable, required: The lender's published APR. **null = the lender did not publish an APR** for this product — the API will not report the note rate in its place. Legacy rows scraped before the flag existed still report their stored value; each heals on its credit union's next scrape.
    - `points` number, float, required: Discount points
    - `serveState` string: Current serving classification for the rate record
    - `serveReason` string: Serving explanation when present
    - `lastUpdated` string, date-time, required: ISO 8601 timestamp when this rate was last updated
  - `eligibility` CreditUnionEligibilityRecord: Published membership criteria and provenance for one credit union. This is guidance only; the institution makes the final membership determination.
    - `credit_union_id` string, required: Canonical identifier of the credit union.
    - `eligibility_type` string, required: How membership is defined for this credit union — for example community, employer, association, or military.
    - `open_to_anyone` boolean, required: True when anyone can join, typically via an association or donation path.
    - `join_path` string, nullable: How a non-qualifying borrower can still become eligible, or null when no such path is documented.
    - `geo_states` string[], required: US state codes whose residents qualify on geography alone.
    - `geo_counties` string[], required: Counties whose residents qualify on geography alone.
    - `geo_cities` string[], required: Cities whose residents qualify on geography alone.
    - `employers` string[], required: Employers whose staff qualify for membership.
    - `associations` string[], required: Associations whose members qualify, including any that can be joined to gain eligibility.
    - `occupations` string[], required: Occupations that qualify for membership.
    - `military` object: Military-service eligibility, and the evidence it was read from.
      - `eligible` boolean: True when military service is a documented path to membership.
      - `affiliations` string[]: The specific branches, bases, or service statuses that qualify.
      - `evidence` string: The extracted text supporting the military eligibility rule.
    - `worship_orgs` string[]: Congregations or religious organizations whose members qualify.
    - `schools` string[]: Schools or districts whose students, staff, or alumni qualify.
    - `family_membership` boolean, nullable: True when a family member of an existing member qualifies, or null when unknown.
    - `membership_fee_usd` number, nullable: One-time membership fee in US dollars, or null when unknown.
    - `min_deposit_usd` number, nullable: Minimum opening share deposit in US dollars, or null when unknown.
    - `requirements_summary` string, nullable: Plain-language summary of what membership requires, or null when none was extracted.
    - `source` string, nullable: Where the eligibility rules were read from, or null when unattributed.
    - `confidence` number, nullable: Confidence in the extracted rules, 0–1, or null when not scored.
    - `evidence_url` string, uri, nullable: Page the eligibility rules were extracted from, or null when unattributed.
    - `extracted_at` string, date-time, nullable: When the eligibility rules were last extracted, or null when unknown.
    - `updated_at` string, date-time, nullable: When this eligibility record was last written, or null when unknown.
    - `rules` object[]: The returned rules we hold. When `publication` is present, these are exactly the active publication's rules; otherwise they are the compatibility/current held set. Bundle integrity does not attest that every possible field-of-membership path is known.
      - `rule_id` integer, required: Stable identifier of this published rule.
      - `kind` string, required: Membership-path category represented by this rule.
      - `description` string, nullable: Deterministic human-readable rule description, or null.
      - `conditions` object[], required: Conditions that must all hold for this membership path.
        - `kind` string, required: Machine-readable condition kind.
        - `text` string, required: Deterministic rendering of this condition.
        - `negated` boolean: True when this condition is an exclusion.
        - `geo_level` string: Geographic level such as state, county, city, or ZIP.
        - `geo_value` string: Canonical geographic key used by the evaluator.
        - `org_name` string: Canonical organization name, or the raw name when unresolved.
        - `org_unresolved` boolean: True when org_name is evidence text rather than a resolved entity.
        - `family_relations` string[]: Family relationships accepted by this condition.
      - `evidence_quote` string: Verbatim source excerpt supporting this rule.
      - `evidence_same_as_rule_id` integer: Rule carrying the shared quote when duplicate evidence was compacted.
      - `source_url` string, uri: Source URL from which the supporting evidence was captured.
      - `source_type` string: Acquisition/source role of the supporting artifact.
      - `verification_status` string, required: How far evidence and semantic verification progressed.
      - `confidence` number, required: Confidence in this verified rule, from 0 to 1.
      - `observed_at` string, date-time: When the source evidence was observed.
      - `last_confirmed_at` string, date-time: Most recent live acquisition that confirmed this rule.
    - `rules_summary` object: Deterministic summary of the returned held rules. When `publication` is present, it summarizes that exact active publication; otherwise it summarizes the compatibility/current held set. It is not a closed-world completeness attestation.
      - `total` integer, required: Number of rules in the returned held set.
      - `by_kind` object, required: Rule counts grouped by membership-path kind.
      - `counties_served` integer, required: Distinct county conditions represented by the rule set.
      - `last_verified` string, date-time, nullable, required: Freshest source confirmation across the rule set, or null.
      - `compacted` boolean: True when duplicate evidence quotes were compacted by reference.
    - `publication` EligibilityPublicationRef: Exact immutable active eligibility generation evaluated for this response.
      - `publication_id` integer, required: Database identifier of the active publication.
      - `ruleset_sha256` string, required: SHA-256 digest of the complete ordered rule set.
      - `activated_at` string, date-time, required: When this generation became serving authority.
      - `proposal_coverage` EligibilityProposalCoverage: How many model-proposed claims from the source page survived evidence verification. This is not an attestation that every real-world field-of-membership path is known.
        - `scope` 'source_page_model_proposals', required: Metric scope, explicitly limited to model proposals extracted from reviewed source pages.
        - `proposed_claims` integer, required: Claims proposed by extraction from the reviewed source pages.
        - `verified_claims` integer, required: Proposed claims that passed evidence verification.
        - `published_rules` integer, required: Verified graph rules published from the candidate.
        - `withheld_claims` integer, required: Proposed claims withheld because verification did not pass.
        - `proposal_survival` number, nullable, required: Verified claims divided by proposed claims, or null when no claims were proposed.
        - `withheld_reasons` object, required: Withheld claim counts grouped by machine-readable verification reason.
    - `authority` object: Present with an active publication. It identifies `rules` as the authoritative immutable generation and marks the older flat record fields as a compatibility projection, not decision proof.
      - `rules` 'active_publication', required: Authority used for the returned rules array.
      - `flat_fields` 'legacy_projection_non_authoritative', required: Authority classification of the compatibility flat fields.
      - `publication_id` integer, required: Exact active publication that supplied the rules.
      - `ruleset_sha256` string, required: Immutable identity hash of that publication's ruleset.
    - `disclosure` string, required: Disclosure text that must be shown with these rules: they are extracted from published sources and the credit union decides eligibility, not this API.
  - `ncuaProfile` NcuaCreditUnionProfile: Latest linked NCUA quarterly regulatory snapshot. Source cycle is independent from rate observation timestamps.
    - `source` 'NCUA quarterly call report', required: The dataset these facts came from — the NCUA quarterly call report.
    - `cycleDate` string, date, required: Quarter-end date of the call report cycle these facts describe.
    - `sourceUrl` string, uri, required: The NCUA source the facts were read from.
    - `charterNumber` string, required: The credit union’s NCUA charter number.
    - `officialName` string, required: Legal name as filed with NCUA, which may differ from the trading name.
    - `charterType` object, required: Whether the charter is federal or state, as coded by NCUA.
      - `code` string, nullable, required: NCUA charter-type code, or null when not reported.
      - `label` string, nullable, required: Human-readable charter type, or null when not reported.
    - `charterState` string, nullable: State that issued the charter for a state-chartered credit union, or null.
    - `yearOpened` integer, nullable: Year the credit union began operating, or null when not reported.
    - `insuredSince` string, date, nullable: Date NCUA share insurance began, or null when not reported.
    - `websiteUrl` string, uri, nullable: The credit union’s website as reported to NCUA, or null when not reported.
    - `designations` object, required: Special NCUA designations the credit union holds.
      - `lowIncome` boolean, nullable, required: True when NCUA designates the credit union low-income, or null when not reported.
      - `minorityDepositoryInstitution` boolean, nullable, required: True when NCUA designates the credit union a minority depository institution, or null when not reported.
    - `financials` object, required: Headline balance-sheet and membership figures from the call report.
      - `totalAssets` number, nullable, required: Total assets in US dollars, or null when not reported.
      - `members` number, nullable, required: Current members, or null when not reported.
      - `potentialMembers` number, nullable, required: Size of the field of membership the credit union reports it may serve, or null when not reported.
    - `services` object, required: Services reported in the NCUA quarterly file; null means not reported.
      - `onlineMemberApplication` boolean, nullable, required: True when membership can be applied for online, or null when not reported.
      - `onlineLoanApplication` boolean, nullable, required: True when loans can be applied for online, or null when not reported.
      - `onlineShareAccount` boolean, nullable, required: True when share accounts can be opened online, or null when not reported.
      - `electronicStatements` boolean, nullable, required: True when electronic statements are offered, or null when not reported.
      - `remoteDepositCapture` boolean, nullable, required: True when remote deposit capture is offered, or null when not reported.
      - `mobilePayments` boolean, nullable, required: True when mobile payments are offered, or null when not reported.
      - `financialCounseling` boolean, nullable, required: True when financial counseling is offered, or null when not reported.
      - `financialEducation` boolean, nullable, required: True when financial education is offered, or null when not reported.
      - `firstTimeHomebuyerProgram` boolean, nullable, required: True when a first-time homebuyer program is offered, or null when not reported.
      - `bilingualServices` boolean, nullable, required: True when bilingual services are offered, or null when not reported.
      - `studentScholarships` boolean, nullable, required: True when student scholarships are offered, or null when not reported.
      - `creditBuilder` boolean, nullable, required: True when a credit-builder product is offered, or null when not reported.
      - `paydayAlternativeLoansI` boolean, nullable, required: True when NCUA Payday Alternative Loans (PAL I) are offered, or null when not reported.
      - `paydayAlternativeLoansII` boolean, nullable, required: True when NCUA Payday Alternative Loans (PAL II) are offered, or null when not reported.
    - `locations` object, required: Branch locations reported to NCUA.
      - `total` integer, required: Total branches reported for this credit union.
      - `shown` integer, required: How many of those branches are included in this response.
      - `branches` NcuaCreditUnionBranch[], required: The branches included in this response.
        - `siteId` string, required: NCUA site identifier for this branch.
        - `name` string, nullable: Branch name as reported to NCUA, or null when unnamed.
        - `type` string, nullable: Branch type as coded by NCUA, or null when not reported.
        - `mainOffice` boolean, required: True when this branch is the credit union’s main office.
        - `address` object, required: Street address of the branch as reported to NCUA.
          - `line1` string, nullable, required: First address line, or null when not reported.
          - `line2` string, nullable, required: Second address line, or null when not reported.
          - `city` string, nullable, required: City, or null when not reported.
          - `state` string, nullable, required: Two-letter US state code, or null when not reported.
          - `postalCode` string, nullable, required: ZIP code, or null when not reported.
          - `county` string, nullable, required: County, or null when not reported.
        - `phone` string, nullable: Branch phone number, or null when not reported.
        - `hours` string, nullable: Reported opening hours, or null when not reported.
        - `features` object, required: Facilities reported for this branch.
          - `memberServices` boolean, nullable, required: True when member services are available at this branch, or null when not reported.
          - `atm` boolean, nullable, required: True when an ATM is available at this branch, or null when not reported.
          - `driveThru` boolean, nullable, required: True when a drive-thru is available, or null when not reported.
          - `sharedServiceCenter` boolean, nullable, required: True when this branch is a shared service center, or null when not reported.

## Other responses

- `401`: Missing or invalid API key
- `404`: Credit union not found
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[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)
