Skip to content

Solana method

getProgramAccounts

Returns every account owned by a program, optionally filtered.

expensiveExpensive: scans a range or a large account set. Frequently restricted.Primary specification (opens in a new tab)

How each provider handles it

This method has not been measured in this window.

It is in the catalogue but disabled, so nothing calls it.

What it does

The most powerful and most expensive read Solana offers. It scans the accounts owned by a program, with optional `memcmp` and `dataSize` filters applied server-side.

On a large program this means scanning millions of accounts. Nearly every provider restricts it, rate-limits it heavily, or requires a paid plan — and those that allow it often cap the result set.

Parameters

programIdstringrequired
The owning program, base-58.
configObjectoptional
encoding, filters (memcmp, dataSize), dataSlice, commitment, withContext.

Returns

Array of { pubkey, account }.

Try it

Runnable as written, against a keyless public endpoint. Nothing here needs an API key.

Request

curl -s https://api.mainnet-beta.solana.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getProgramAccounts","params":["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",{"encoding":"base64","dataSlice":{"offset":0,"length":0},"filters":[{"dataSize":165},{"memcmp":{"offset":0,"bytes":"So11111111111111111111111111111111111111112"}}]}]}'

As JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getProgramAccounts",
  "params": [
    "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
    {
      "encoding": "base64",
      "dataSlice": { "offset": 0, "length": 0 },
      "filters": [
        { "dataSize": 165 },
        { "memcmp": { "offset": 0, "bytes": "So11111111111111111111111111111111111111112" } }
      ]
    }
  ]
}

Response

{
  "jsonrpc": "2.0",
  "result": [
    {
      "pubkey": "CxELquR1gPP8wHe33gZ4QxqGB3sZ9RSwsJ2KshVewkFY",
      "account": {
        "data": ["", "base64"],
        "executable": false,
        "lamports": 2039280,
        "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
        "space": 165
      }
    }
  ],
  "id": 1
}

Things that bite

  • Always filter. An unfiltered call against the SPL Token program asks the node to return millions of accounts.
  • dataSlice with length 0 returns pubkeys only, which is dramatically cheaper when you only need to know which accounts exist.
  • Disabled by default here. Calling it on a schedule against free public endpoints would be an abuse of them.

Why it is measured

Catalogued as the clearest example of a method whose availability is a commercial decision rather than a technical one, and left disabled.

Called every 3600 seconds per endpoint, with jitter so the fleet does not hit a provider in lockstep.

24h window · generated 2026-08-24 17:25:23 UTC · 0 providers