# 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.
