X Enterprises
fastify-xplaid

xplaid.items.searchInstitutions

Search for financial institutions by name, with optional filters for supported products and country.

xplaid.items.searchInstitutions

Searches for financial institutions by name, with optional filters for supported products and country.

Signature

fastify.xplaid.items.searchInstitutions(
  query: string,
  options?: {
    countryCodes?: string[]   // default: ["US"]
    products?: string[]
    count?: number
    offset?: number
  }
): Promise<{ institutions: Institution[]; requestId: string }>

Params

NameTypeRequiredDescription
querystringYesInstitution name search string (e.g. "chase", "wells").
options.countryCodesstring[]NoISO 3166-1 alpha-2 country codes. Defaults to ["US"].
options.productsstring[]NoFilter to institutions that support specific products.
options.countnumberNoNumber of results to return.
options.offsetnumberNoPagination offset.

Returns

{ institutions: Institution[]; requestId: string }

Each Institution in the array has the same shape as described in items.getInstitution:

FieldTypeDescription
institution_idstringPlaid institution ID.
namestringInstitution display name.
productsstring[]Supported Plaid products.
country_codesstring[]Countries this institution operates in.
logostring | nullBase64-encoded PNG logo.
primary_colorstring | nullBrand hex color.
oauthbooleanWhether this institution uses OAuth.
urlstring | nullInstitution's website URL.

Throws

  • [xPlaid] query is required and must be a non-empty string
  • Plaid API errors — shape: { message, statusCode, plaidError }.

Examples

Basic

const { institutions } = await fastify.xplaid.items.searchInstitutions("chase");
console.log(institutions.map((i) => i.name)); // ["Chase", ...]

Realistic

fastify.get("/institutions/search", async (request, reply) => {
  const { q, products } = request.query;
  if (!q || q.length < 2) return reply.status(400).send({ error: "Query too short" });

  try {
    const { institutions } = await fastify.xplaid.items.searchInstitutions(q, {
      products: products ? products.split(",") : ["transactions"],
      count: 10,
    });

    return institutions.map((inst) => ({
      id: inst.institution_id,
      name: inst.name,
      logo: inst.logo,
      color: inst.primary_color,
      oauth: inst.oauth,
    }));
  } catch (error) {
    if (error.plaidError) {
      return reply.status(error.statusCode ?? 500).send({ error: error.message });
    }
    throw error;
  }
});

See also


AI Context

package: "@xenterprises/fastify-xplaid"
method: fastify.xplaid.items.searchInstitutions(query, options?)
use-when: Find financial institutions by name for UI search, Link customization, or filtering by supported products
returns: { institutions: Institution[], requestId }
Copyright © 2026