Which credit unions can this person join? One API call.

POST /v1/eligibility/search takes what you know about a consumer — ZIP, employer, school, associations, military service — and returns the credit unions they can join, the ones they could join after one small step, and the published field-of-membership rule behind each verdict.

Read the walkthrough →
Thousands of US credit unionsRule-level evidence, not a black boxFree tier: 20 requests/monthNo credit check, no SSN

Why this is hard, and why a spreadsheet stops working

A credit union may only serve its field of membership. That rule is set per institution and published as prose — a paragraph on a membership page, a clause in a charter document — across thousands of separate sites. There is no single registry that answers “can this person join?”, which is why most teams start by hand-maintaining a rules sheet and stop when it goes stale.

Geography
Community charters cover people who live, work, worship or attend school in a defined area — often a county list rather than a radius, and the four verbs are not interchangeable.
Employer
Single and multiple common-bond charters name employers, sometimes hundreds, sometimes under former trading names.
Association
Membership of an affiliated group qualifies. Many such groups are open to anyone for a small fee, which is what makes some credit unions effectively national.
Military
Active duty, veterans, reservists, DoD civilians and their families, each treated differently by different institutions.
Family
A relative’s membership is often inheritable — and the definition of "relative" varies per institution.
The rules also move. Charters expand, employer lists change, community areas are redrawn. A snapshot is wrong within months, which is the real argument against maintaining this yourself — see build vs buy.

Person-based discovery

The main endpoint. Send what you know; every field is optional.

$POST /v1/eligibility/search
curl -X POST "https://api.rateapi.dev/v1/eligibility/search" \
-H "Authorization: Bearer $RATEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"home_zip": "28202",
"employer": "Atrium Health",
"military_status": "veteran",
"willing_to_join_association": true
}'
willing_to_join_association: true is the highest-leverage field. Without it, institutions reachable only via an affiliated association are held back. With it, they come back as conditionally_eligible with the step named and join_cost_usd populated — frequently a few dollars. Product-wise this is the difference between “3 credit unions near you” and a national set.

The other three endpoints

Discovery is one of four questions the eligibility surface answers.

GET/v1/eligibility/search

The inverse: which institutions’ membership area reaches a given county, or which are open to anyone nationwide. Geo-first surfaces and coverage maps start here.

POST/v1/eligibility/check

Batch verdicts against institutions you already have. Use when you hold a shortlist and need it evaluated rather than discovered.

GET/v1/credit-unions/:id/eligibility

The full membership record for one institution: every published rule with its source and evidence quote. This is the endpoint to render on a profile page.

$GET /v1/eligibility/search
# Which credit unions' published membership area reaches this county?
curl "https://api.rateapi.dev/v1/eligibility/search?state=NC&county=Mecklenburg" \
-H "Authorization: Bearer $RATEAPI_KEY"
# Only the ones open to anyone, nationwide:
curl "https://api.rateapi.dev/v1/eligibility/search?open_to_anyone=true" \
-H "Authorization: Bearer $RATEAPI_KEY"
$One institution's full rule set
# Every published rule for one institution, with its evidence.
curl "https://api.rateapi.dev/v1/credit-unions/charlotte%20metro%7Ccharlotte%7CNC/eligibility" \
-H "Authorization: Bearer $RATEAPI_KEY"

Verdicts you get back

eligible
A published rule matches the facts you sent.
conditionally_eligible
One step away. The reason names the step; join_cost_usd carries its cost when the rule states one.
possibly_eligible
A rule plausibly applies but your facts do not confirm it — usually one more question to the user resolves it.
unknown
The institution is held, but its rules are not machine-readable yet. Never treated as ineligible.
No ineligible list, by design. Institutions that fail every path are absent rather than rejected. Telling someone they cannot join a credit union they could have joined is a worse error than saying we do not know, so the API declines to make it.

Frequently asked