Algorand search API

The search API from Algorand — 6 operation(s) for search.

Operations 6

GET /v2/accounts #
GET /v2/applications #
GET /v2/applications/{application-id}/boxes Get box names for a given application. #
GET /v2/assets #
GET /v2/block-headers #
GET /v2/transactions #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/algorand-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

algorand-search-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: Algorand
    url: https://www.algorand.com/get-in-touch/contact
  description: Algorand ledger analytics API.
  title: Indexer Search API
  version: '2.0'
servers:
- url: https://example.com/
tags:
- name: search
paths:
  /v2/accounts:
    get:
      description: Search for accounts.
      operationId: searchForAccounts
      parameters:
      - description: Asset ID
        in: query
        name: asset-id
        schema:
          type: integer
      - description: Maximum number of results to return. There could be additional pages even if the limit is not reached.
        in: query
        name: limit
        schema:
          type: integer
      - description: The next page of results. Use the next token provided by the previous results.
        in: query
        name: next
        schema:
          type: string
      - description: Results should have an amount greater than this value. MicroAlgos are the default currency unless an asset-id is provided, in which case the asset will be used.
        in: query
        name: currency-greater-than
        schema:
          type: integer
      - description: Include all items including closed accounts, deleted applications, destroyed assets, opted-out asset holdings, and closed-out application localstates.
        in: query
        name: include-all
        schema:
          type: boolean
      - description: Exclude additional items such as asset holdings, application local data stored for this account, asset parameters created by this account, and application parameters created by this account.
        explode: false
        in: query
        name: exclude
        schema:
          items:
            enum:
            - all
            - assets
            - created-assets
            - apps-local-state
            - created-apps
            - none
            type: string
          type: array
        style: form
      - description: Results should have an amount less than this value. MicroAlgos are the default currency unless an asset-id is provided, in which case the asset will be used.
        in: query
        name: currency-less-than
        schema:
          type: integer
      - description: Include accounts configured to use this spending key.
        in: query
        name: auth-addr
        schema:
          type: string
          x-algorand-format: Address
        x-algorand-format: Address
      - description: Include results for the specified round. For performance reasons, this parameter may be disabled on some configurations. Using application-id or asset-id filters will return both creator and opt-in accounts. Filtering by include-all will return creator and opt-in accounts for deleted assets and accounts. Non-opt-in managers are not included in the results when asset-id is used.
        in: query
        name: round
        schema:
          type: integer
      - description: Application ID
        in: query
        name: application-id
        schema:
          type: integer
      - description: When this is set to true, return only accounts whose participation status is currently online.
        in: query
        name: online-only
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  accounts:
                    items:
                      $ref: '#/components/schemas/Account'
                    type: array
                  current-round:
                    description: Round at which the results were computed.
                    type: integer
                  next-token:
                    description: Used for pagination, when making another request provide this token with the next parameter.
                    type: string
                required:
                - accounts
                - current-round
                type: object
          description: (empty)
        '400':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
        '500':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
      tags:
      - search
  /v2/applications:
    get:
      description: Search for applications
      operationId: searchForApplications
      parameters:
      - description: Application ID
        in: query
        name: application-id
        schema:
          type: integer
      - description: Filter just applications with the given creator address.
        in: query
        name: creator
        schema:
          type: string
      - description: Include all items including closed accounts, deleted applications, destroyed assets, opted-out asset holdings, and closed-out application localstates.
        in: query
        name: include-all
        schema:
          type: boolean
      - description: Maximum number of results to return. There could be additional pages even if the limit is not reached.
        in: query
        name: limit
        schema:
          type: integer
      - description: The next page of results. Use the next token provided by the previous results.
        in: query
        name: next
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  applications:
                    items:
                      $ref: '#/components/schemas/Application'
                    type: array
                  current-round:
                    description: Round at which the results were computed.
                    type: integer
                  next-token:
                    description: Used for pagination, when making another request provide this token with the next parameter.
                    type: string
                required:
                - applications
                - current-round
                type: object
          description: (empty)
        '500':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
      tags:
      - search
  /v2/applications/{application-id}/boxes:
    get:
      description: Given an application ID, returns the box names of that application sorted lexicographically.
      operationId: searchForApplicationBoxes
      parameters:
      - in: path
        name: application-id
        required: true
        schema:
          type: integer
      - description: Maximum number of results to return. There could be additional pages even if the limit is not reached.
        in: query
        name: limit
        schema:
          type: integer
      - description: The next page of results. Use the next token provided by the previous results.
        in: query
        name: next
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  application-id:
                    description: \[appidx\] application index.
                    type: integer
                  boxes:
                    items:
                      $ref: '#/components/schemas/BoxDescriptor'
                    type: array
                  next-token:
                    description: Used for pagination, when making another request provide this token with the next parameter.
                    type: string
                required:
                - application-id
                - boxes
                type: object
          description: Box names of an application
        '400':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
        '404':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
        '500':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
      summary: Get box names for a given application.
      tags:
      - search
  /v2/assets:
    get:
      description: Search for assets.
      operationId: searchForAssets
      parameters:
      - description: Include all items including closed accounts, deleted applications, destroyed assets, opted-out asset holdings, and closed-out application localstates.
        in: query
        name: include-all
        schema:
          type: boolean
      - description: Maximum number of results to return. There could be additional pages even if the limit is not reached.
        in: query
        name: limit
        schema:
          type: integer
      - description: The next page of results. Use the next token provided by the previous results.
        in: query
        name: next
        schema:
          type: string
      - description: Filter just assets with the given creator address.
        in: query
        name: creator
        schema:
          type: string
      - description: Filter just assets with the given name.
        in: query
        name: name
        schema:
          type: string
      - description: Filter just assets with the given unit.
        in: query
        name: unit
        schema:
          type: string
      - description: Asset ID
        in: query
        name: asset-id
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  assets:
                    items:
                      $ref: '#/components/schemas/Asset'
                    type: array
                  current-round:
                    description: Round at which the results were computed.
                    type: integer
                  next-token:
                    description: Used for pagination, when making another request provide this token with the next parameter.
                    type: string
                required:
                - assets
                - current-round
                type: object
          description: (empty)
        '400':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
        '500':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
      tags:
      - search
  /v2/block-headers:
    get:
      description: Search for block headers. Block headers are returned in ascending round order. Transactions are not included in the output.
      operationId: searchForBlockHeaders
      parameters:
      - description: Maximum number of results to return. There could be additional pages even if the limit is not reached.
        in: query
        name: limit
        schema:
          type: integer
      - description: The next page of results. Use the next token provided by the previous results.
        in: query
        name: next
        schema:
          type: string
      - description: Include results at or after the specified min-round.
        in: query
        name: min-round
        schema:
          type: integer
      - description: Include results at or before the specified max-round.
        in: query
        name: max-round
        schema:
          type: integer
      - description: Include results before the given time. Must be an RFC 3339 formatted string.
        in: query
        name: before-time
        schema:
          format: date-time
          type: string
          x-algorand-format: RFC3339 String
        x-algorand-format: RFC3339 String
      - description: Include results after the given time. Must be an RFC 3339 formatted string.
        in: query
        name: after-time
        schema:
          format: date-time
          type: string
          x-algorand-format: RFC3339 String
        x-algorand-format: RFC3339 String
      - description: Accounts marked as proposer in the block header's participation updates. This parameter accepts a comma separated list of addresses.
        explode: false
        in: query
        name: proposers
        schema:
          items:
            type: string
            x-algorand-format: Address
          type: array
        style: form
      - description: Accounts marked as expired in the block header's participation updates. This parameter accepts a comma separated list of addresses.
        explode: false
        in: query
        name: expired
        schema:
          items:
            type: string
            x-algorand-format: Address
          type: array
        style: form
      - description: Accounts marked as absent in the block header's participation updates. This parameter accepts a comma separated list of addresses.
        explode: false
        in: query
        name: absent
        schema:
          items:
            type: string
            x-algorand-format: Address
          type: array
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  blocks:
                    items:
                      $ref: '#/components/schemas/Block'
                    type: array
                  current-round:
                    description: Round at which the results were computed.
                    type: integer
                  next-token:
                    description: Used for pagination, when making another request provide this token with the next parameter.
                    type: string
                required:
                - blocks
                - current-round
                type: object
          description: (empty)
        '404':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
        '500':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
      tags:
      - search
  /v2/transactions:
    get:
      description: Search for transactions. Transactions are returned oldest to newest unless the address parameter is used, in which case results are returned newest to oldest.
      operationId: searchForTransactions
      parameters:
      - description: Maximum number of results to return. There could be additional pages even if the limit is not reached.
        in: query
        name: limit
        schema:
          type: integer
      - description: The next page of results. Use the next token provided by the previous results.
        in: query
        name: next
        schema:
          type: string
      - description: Specifies a prefix which must be contained in the note field.
        in: query
        name: note-prefix
        schema:
          type: string
          x-algorand-format: base64
        x-algorand-format: base64
      - in: query
        name: tx-type
        schema:
          enum:
          - pay
          - keyreg
          - acfg
          - axfer
          - afrz
          - appl
          - stpf
          - hb
          type: string
      - description: 'SigType filters just results using the specified type of signature:

          * sig - Standard

          * msig - MultiSig

          * lsig - LogicSig'
        in: query
        name: sig-type
        schema:
          enum:
          - sig
          - msig
          - lsig
          type: string
      - description: Lookup transactions by group ID. This field must be base64-encoded, and afterwards, base64 characters that are URL-unsafe (i.e. =, /, +) must be URL-encoded
        in: query
        name: group-id
        schema:
          type: string
          x-algorand-format: base64
        x-algorand-format: base64
      - description: Lookup the specific transaction by ID.
        in: query
        name: txid
        schema:
          type: string
      - description: Include results for the specified round.
        in: query
        name: round
        schema:
          type: integer
      - description: Include results at or after the specified min-round.
        in: query
        name: min-round
        schema:
          type: integer
      - description: Include results at or before the specified max-round.
        in: query
        name: max-round
        schema:
          type: integer
      - description: Asset ID
        in: query
        name: asset-id
        schema:
          type: integer
      - description: Include results before the given time. Must be an RFC 3339 formatted string.
        in: query
        name: before-time
        schema:
          format: date-time
          type: string
          x-algorand-format: RFC3339 String
        x-algorand-format: RFC3339 String
      - description: Include results after the given time. Must be an RFC 3339 formatted string.
        in: query
        name: after-time
        schema:
          format: date-time
          type: string
          x-algorand-format: RFC3339 String
        x-algorand-format: RFC3339 String
      - description: Results should have an amount greater than this value. MicroAlgos are the default currency unless an asset-id is provided, in which case the asset will be used.
        in: query
        name: currency-greater-than
        schema:
          type: integer
      - description: Results should have an amount less than this value. MicroAlgos are the default currency unless an asset-id is provided, in which case the asset will be used.
        in: query
        name: currency-less-than
        schema:
          type: integer
      - description: Only include transactions with this address in one of the transaction fields.
        in: query
        name: address
        schema:
          type: string
          x-algorand-format: Address
        x-algorand-format: Address
      - description: Combine with the address parameter to define what type of address to search for.
        in: query
        name: address-role
        schema:
          enum:
          - sender
          - receiver
          - freeze-target
          type: string
      - description: Combine with address and address-role parameters to define what type of address to search for. The close to fields are normally treated as a receiver, if you would like to exclude them set this parameter to true.
        in: query
        name: exclude-close-to
        schema:
          type: boolean
      - description: Include results which include the rekey-to field.
        in: query
        name: rekey-to
        schema:
          type: boolean
      - description: Application ID
        in: query
        name: application-id
        schema:
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  current-round:
                    description: Round at which the results were computed.
                    type: integer
                  next-token:
                    description: Used for pagination, when making another request provide this token with the next parameter.
                    type: string
                  transactions:
                    items:
                      $ref: '#/components/schemas/Transaction'
                    type: array
                required:
                - current-round
                - transactions
                type: object
          description: (empty)
        '400':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
        '500':
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties: {}
                    type: object
                  message:
                    type: string
                required:
                - message
                type: object
          description: Response for errors
      tags:
      - search
components:
  schemas:
    StateProofSignature:
      properties:
        falcon-signature:
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
        merkle-array-index:
          type: integer
          x-algorand-foramt: uint64
        proof:
          $ref: '#/components/schemas/MerkleArrayProof'
        verifying-key:
          description: \[vkey\]
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
      type: object
    TealKeyValue:
      description: Represents a key-value pair in an application store.
      properties:
        key:
          type: string
        value:
          $ref: '#/components/schemas/TealValue'
      required:
      - key
      - value
      type: object
    AccountParticipation:
      description: AccountParticipation describes the parameters used by this account in consensus protocol.
      properties:
        selection-participation-key:
          description: Selection public key (if any) currently registered for this round.
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
        state-proof-key:
          description: Root of the state proof key (if any)
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
        vote-first-valid:
          description: First round for which this participation is valid.
          type: integer
        vote-key-dilution:
          description: Number of subkeys in each batch of participation keys.
          type: integer
        vote-last-valid:
          description: Last round for which this participation is valid.
          type: integer
        vote-participation-key:
          description: root participation public key (if any) currently registered for this round.
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
      required:
      - selection-participation-key
      - vote-first-valid
      - vote-key-dilution
      - vote-last-valid
      - vote-participation-key
      type: object
    TransactionAssetFreeze:
      description: 'Fields for an asset freeze transaction.


        Definition:

        data/transactions/asset.go : AssetFreezeTxnFields'
      properties:
        address:
          description: \[fadd\] Address of the account whose asset is being frozen or thawed.
          type: string
        asset-id:
          description: \[faid\] ID of the asset being frozen or thawed.
          type: integer
        new-freeze-status:
          description: \[afrz\] The new freeze status.
          type: boolean
      required:
      - address
      - asset-id
      - new-freeze-status
      type: object
    StateProofFields:
      description: '\[sp\] represents a state proof.


        Definition:

        crypto/stateproof/structs.go : StateProof'
      properties:
        part-proofs:
          $ref: '#/components/schemas/MerkleArrayProof'
        positions-to-reveal:
          description: \[pr\] Sequence of reveal positions.
          items:
            type: integer
            x-algorand-format: uint64
          type: array
        reveals:
          description: \[r\] Note that this is actually stored as a map[uint64] - Reveal in the actual msgp
          items:
            $ref: '#/components/schemas/StateProofReveal'
          type: array
        salt-version:
          description: \[v\] Salt version of the merkle signature.
          type: integer
        sig-commit:
          description: \[c\]
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
        sig-proofs:
          $ref: '#/components/schemas/MerkleArrayProof'
        signed-weight:
          description: \[w\]
          type: integer
          x-algorand-format: uint64
      type: object
    TealKeyValueStore:
      description: Represents a key-value store for use in an application.
      items:
        $ref: '#/components/schemas/TealKeyValue'
      type: array
    TransactionAssetTransfer:
      description: 'Fields for an asset transfer transaction.


        Definition:

        data/transactions/asset.go : AssetTransferTxnFields'
      properties:
        amount:
          description: \[aamt\] Amount of asset to transfer. A zero amount transferred to self allocates that asset in the account's Assets map.
          type: integer
          x-algorand-format: uint64
        asset-id:
          description: \[xaid\] ID of the asset being transferred.
          type: integer
        close-amount:
          description: Number of assets transferred to the close-to account as part of the transaction.
          type: integer
          x-algorand-format: uint64
        close-to:
          description: \[aclose\] Indicates that the asset should be removed from the account's Assets map, and specifies where the remaining asset holdings should be transferred.  It's always valid to transfer remaining asset holdings to the creator account.
          type: string
        receiver:
          description: \[arcv\] Recipient address of the transfer.
          type: string
        sender:
          description: \[asnd\] The effective sender during a clawback transactions. If this is not a zero value, the real transaction sender must be the Clawback address from the AssetParams.
          type: string
      required:
      - amount
      - asset-id
      - receiver
      type: object
    IndexerStateProofMessage:
      properties:
        block-headers-commitment:
          description: \[b\]
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
        first-attested-round:
          description: \[f\]
          type: integer
          x-algorand-format: uint64
        latest-attested-round:
          description: \[l\]
          type: integer
          x-algorand-format: uint64
        ln-proven-weight:
          description: \[P\]
          type: integer
          x-algorand-format: uint64
        voters-commitment:
          description: \[v\]
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
      type: object
    OnCompletion:
      description: '\[apan\] defines the what additional actions occur with the transaction.


        Valid types:

        * noop

        * optin

        * closeout

        * clear

        * update

        * update

        * delete'
      enum:
      - noop
      - optin
      - closeout
      - clear
      - update
      - delete
      type: string
    TransactionStateProof:
      description: "Fields for a state proof transaction. \n\nDefinition:\ndata/transactions/stateproof.go : StateProofTxnFields"
      properties:
        message:
          $ref: '#/components/schemas/IndexerStateProofMessage'
        state-proof:
          $ref: '#/components/schemas/StateProofFields'
        state-proof-type:
          description: \[sptype\] Type of the state proof. Integer representing an entry defined in protocol/stateproof.go
          type: integer
          x-algorand-format: uint64
      type: object
    StateDelta:
      description: Application state delta.
      items:
        $ref: '#/components/schemas/EvalDeltaKeyValue'
      type: array
    ApplicationParams:
      description: Stores the global information associated with an application.
      properties:
        approval-program:
          description: approval program.
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          x-algorand-format: TEALProgram
        clear-state-program:
          description: clear state program.
          format: byte
          pattern: ^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
          type: string
          x-algorand-format: TEALProgram
        creator:
          description: The address that created this application. This is the address where the parameters and global state for this application can be found.
          type: string
          x-algorand-format: Address
        extra-program-pages:
          description: the number of extra program pages available to this app.
          type: integer
        global-state:
          $ref: '#/components/schemas/TealKeyValueStore'
        global-state-schema:
          $ref: '#/components/schemas/ApplicationStateSchema'
        local-state-schema:
          $ref: '#/components/schemas/ApplicationStateSchema'
        version:
          description: the number of updates to the application programs
          type: integer
      required:
      - approval-program
      - clear-state-program
      type: object
    ApplicationLocalState:
      description: Stores local state associated with an application.
      properties:
        closed-out-at-round:
          description: Round when account closed out of the application.
          type: integer
          x-algorand-format: uint64
        deleted:
          description: Whether or not the application local state is currently deleted from its account.
          type: boolean
        id:
          description: The application which this local state is for.
          type: integer
        key-value:
          $ref: '#/components/schemas/TealKeyValueStore'
        opted-in-at-round:
          description: Round when the account opted into the application.
          type: integer
         

# --- truncated at 32 KB (77 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/algorand/refs/heads/main/openapi/algorand-search-api-openapi.yml