# getProviders & getProviderById

## Detecting the providers with getProviders

If the user has multiple browser extension wallets installed, Sats Connect will detect the extensions that inject their provider information under `window.btc_providers` , following the [WBIP004](https://wbips.netlify.app/wbips/WBIP004) standard.&#x20;

Sats Connect will construct  a "multiprovider" array at `window.btc_providers` , containing the injected provider from each wallet. Xverse Wallet can be identified in this array by the following properties:

{% code overflow="wrap" %}

```typescript
window: {
  webbtc_providers: [
   {
     id: "BitcoinProvider" || "xverseProviders.BitcoinProvider",
     name: "Xverse Wallet",
     icon: "data:image/svg+xml;base64,PHN2Z..ZnPgo=",
     webUrl: "https://www.xverse.app",
     chromeWebStoreUrl:"https://chromewebstore.google.com/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg",
     googlePlayStoreUrl:"https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse",
     iOSAppStoreUrl:"https://apps.apple.com/us/app/xverse-bitcoin-wallet/id1552272513",
     methods: ["getAddress", "getInfo", "signMessage", "signPsbt", "sendTransfer", "signMultipleTransactions", "createInscription", "createRepeatInscriptions", "stx_signMessage","stx_transferStx", "stx_signTransaction", "stx_callContract"],		
    }
  ],
}
```

{% endcode %}

Your application can detect the user's installed wallet providers with the `getProviders` method.

No request parameters are required:

```tsx
import {getProviders} from "sats-connect";

const providers = getProviders()
```

The `getProviders` method returns an array of `btcProvider` objects with the following [WBIP004](https://wbips.netlify.app/wbips/WBIP004)  properties:

<table><thead><tr><th width="229">Property</th><th>Description</th></tr></thead><tbody><tr><td><code>id</code></td><td>a string representing the path to the wallet provider in the global/window object<br>Xverse provider example:<code>"BitcoinProvider" || "xverseProviders.BitcoinProvider"</code></td></tr><tr><td><code>name</code></td><td>a string representing the name of the wallet provider to show in the connect wallet UI <br>Xverse provider example: <code>"Xverse Wallet"</code></td></tr><tr><td><code>icon</code></td><td>a string representing the wallet provider's icon as to show in the connect wallet UI, as data URI (SVG image encoded in base64 format)<br>Xverse provider example:<code>data:image/svg+xml;base64,PHN2Z..ZnPgo=</code></td></tr><tr><td><code>webUrl</code></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2139">ℹ️</span>Optional <br>a string representing the url of the wallet provider's website<br>Xverse provider example: <code>"&#x3C;https://www.xverse.app/>"</code></td></tr><tr><td><code>chromeWebStoreUrl</code></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2139">ℹ️</span>Optional <br>a string representing the url of the wallet provider's Chrome Web Store Page<br>Xverse provider example: <code>"&#x3C;https://chromewebstore.google.com/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg>"</code></td></tr><tr><td><code>goodlePlayStoreUrl</code></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2139">ℹ️</span>Optional <br>a string representing the url of the wallet provider's Google Play Store Page<br>Xverse provider example: <code>"&#x3C;https://play.google.com/store/apps/details?id=com.secretkeylabs.xverse>>"</code></td></tr><tr><td><code>iOSAppStoreUrl</code></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2139">ℹ️</span>Optional <br>a string representing the url of the wallet provider's iOS App Store Page<br>Xverse provider example: <code>"&#x3C;https://apps.apple.com/us/app/xverse-bitcoin-wallet/id1552272513>"</code></td></tr><tr><td><code>methods</code></td><td>An array of strings representing the list of methods supported by the wallet provider<br>Xverse provider example:<br><code>["getAddress", "getInfo", "signMessage", "signPsbt", "sendTransfer", "signMultipleTransactions", "createInscription", "createRepeatInscriptions", "stx_signMessage","stx_transferStx", "stx_signTransaction", "stx_callContract"]</code>	</td></tr></tbody></table>

## Selecting a provider with getProviderById

You can use the  `getProviderById` method to select any specific provider from the list of providers injected under `window.btc_providers`

No request parameters are required:

```tsx
import {getProviders, getProviderById} from "sats-connect";

const providers = getProviders();

const firstProvider = providers[0];

const providerObject = getProviderById(firstProvider.id);

const response = providerObject.reauest('getInfo', null);
```

The `getProviderById` method returns the provider object that the wallets injects in the `window` object.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.xverse.app/sats-connect/wallet-providers/getproviders-and-getproviderbyid.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
