getProgramAccounts

POSTAccountsBlade Runner+

Returns every account owned by a program, optionally narrowed by size and byte-content filters.

Try itSends a real request from your browser to the selected region.
POST
/

getProgramAccounts scans every account owned by a program and returns the ones matching the given filters, enumerating a protocol's state without knowing individual addresses ahead of time.

An unfiltered scan walks the program's entire account set — tens of millions of accounts for a program like SPL Token — so constant-k requires at least one filter on every call and meters it separately from the rest of the Accounts category.

Plans & rate limitsBlade Runner and above
FreeNot included
OperatorNot included
Blade Runner25/s
Nexus75/s

Parameters

params is a JSON array, with values in this order: programId, config.

1programIdstringrequired

Address of the program whose owned accounts to scan, base-58 encoded.

2configobjectrequired

Configuration. On constant-k this is effectively required, not optional: at least one entry in filters must narrow the scan.

Show propertiesProperties
commitmentstringdefault: "finalized"

Bank state to scan.

Allowed values:finalizedconfirmedprocessed
encodingstringdefault: "base58"

How to encode each account's data. base58 fails for accounts over 129 bytes.

Allowed values:base58base64base64+zstdjsonParsed
dataSliceobject

Returns only a byte range of each account's data. Not valid with jsonParsed.

Show propertiesProperties
offsetintegerrequired
lengthintegerrequired
filtersobject[]required

Accounts must match every filter in this array (logical AND). Required on constant-k — a call with no filters, or with filters too loose to bound the scan, is rejected.

Show one ofOne of
Option 1object

Match accounts whose data is exactly this many bytes.

Show propertiesProperties
dataSizeintegerrequired

Required account data length, in bytes.

Option 2object

Match accounts whose data contains these bytes at the given offset.

Show propertiesProperties
memcmpobjectrequired
Show propertiesProperties
offsetintegerrequired

Byte offset into the account's data to compare at.

bytesstringrequired

Bytes to match, encoded per encoding below.

encodingstringdefault: "base58"

Encoding of the bytes field itself (independent of the account-data encoding in the outer config).

Allowed values:base58base64
minContextSlotinteger

Minimum slot the node must have processed before answering.

withContextbooleandefault: false

When true, wraps the array result in the usual {context, value} envelope instead of returning it bare.

Result

resultobject[] | object

By default, a bare array of matching accounts. With withContext: true, the same array wrapped in {context, value}.

Show one ofOne of
Option 1object[]
Show each itemEach item
pubkeystringrequired

Account address, base-58 encoded.

accountobjectrequired
Show propertiesProperties
lamportsinteger
ownerstring
executableboolean
rentEpochinteger
spaceinteger
dataany

Same shape as getAccountInfo.

Option 2object
Show propertiesProperties
contextobject
Show propertiesProperties
slotinteger
apiVersionstring
valueobject[]

Notes

  • Available on Blade Runner at 25 requests per second and on Nexus at 75 per second. Free and Operator keys get HTTP 403 with getProgramAccounts requires higher tier.
  • A typical filter combines dataSize with one or more memcmp clauses; constant-k rejects an unfiltered scan outright rather than throttling it.
  • The example's byte offsets (mint at 32, owner at 64) match the classic SPL Token account struct; Token-2022 accounts share this base layout but can be longer with extensions, so a bare dataSize: 165 filter misses them.
  • getProgramAccountsV2 (paginated, up to 10,000 accounts per page, Blade Runner and Nexus) pages through a large account set instead of filtering a single call.
  • Twelve hot programs are answered from a purpose-built in-memory index rather than a live disk scan: a fraction of a second, no scan thread, and no filter required. The validator's scan-results cap does not apply to them; the index bounds the answer to 100,000 accounts, and broader results page through getProgramAccountsV2. Every other program is scanned on disk, where a selective filter is required and the validator's scan-results cap bounds the answer.
ProgramProgram ID
Address Lookup TableAddressLookupTab1e1111111111111111111111111
Raydium AMM V4675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Raydium CPMMCPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C
Raydium CLMMCAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK
Orca WhirlpoolwhirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
Meteora DLMMLBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
Meteora DAMM V2cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG
Meteora DBCdbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN
Pump.fun6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
PumpSwappAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA
Serum V39xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin
Drift V2dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH