SEARCH_ACCOUNTS

Search accounts with a powerful filter built on top of Elasticsearch

Overview

This method allows you to search through program accounts with a robust filter object. There are many types of filters you can apply and you can find information regarding those in the Filters section of the docs. The endpoint example here shows off one of the many filters.

Filters

As mentioned above, the api definition here illustrates one of Carpool's many filter types. All queries that accept a filter object in the POST body can make use of any of the potential filters. Please see the Account Filters section of the documentation to better understand how they are implemented for account related queries.

🎛️pageAccount Filters

Example - Basic

Program - Candy Machine

Description - Return all CandyMachine accounts where the value at data.creators.percentageShare is equal to 100

Javascript

var myHeaders = new Headers();
myHeaders.append("x-api-key", "<API_KEY>");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "type": "SEARCH_ACCOUNTS",
  "query": {
    "programId": "CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR",
    "accountName": "CandyMachine",
    "filter": {
      "type": "ACCOUNT_DATA_NUMERIC",
      "path": "data.creators.percentageShare",
      "range": {
        "eq": 100
      }
    }
  }
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://mainnet.carpool.dev/query/solana", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

cURL

curl --location 'https://mainnet.carpool.dev/query/solana' \
--header 'x-api-key: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "type": "SEARCH_ACCOUNTS",
    "query": {
        "programId": "CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR",
        "accountName": "CandyMachine",
        "filter": {
            "type": "ACCOUNT_DATA_NUMERIC",
            "path": "data.creators.percentageShare",
            "range": {
                "eq": 100
            }
        }
    }
}'

Example - Advanced

Program - Candy Machine

Description - Return all CandyMachine accounts where the value at data.creators.percentageShare is equal to 100. Include up to 20 objects in the response body, but only include fields: slot, lamports. Filter for accounts that fall in the specified time range.

Javascript

var myHeaders = new Headers();
myHeaders.append("x-api-key", "<API_KEY>");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "type": "SEARCH_ACCOUNTS",
  "query": {
    "programId": "CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR",
    "accountName": "CandyMachine",
    "filter": {
      "type": "ACCOUNT_DATA_NUMERIC",
      "path": "data.creators.percentageShare",
      "range": {
        "eq": 100
      }
    },
    "pagination": {
      "offset": 0,
      "limit": 20
    },
    "sort": {
      "order": "asc"
    },
    "fields": [
      "slot",
      "lamports"
    ],
    "timeRange": {
      "before": "2023-07-17T22:53:09+0000",
      "after": "2023-07-11T22:53:09+0000"
    }
  }
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://mainnet.carpool.dev/query/solana", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

cURL

curl --location 'https://mainnet.carpool.dev/query/solana' \
--header 'x-api-key: <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
    "type": "SEARCH_ACCOUNTS",
    "query": {
        "programId": "CndyV3LdqHUfDLmE5naZjVN8rBZz4tqhdefbAnjHG3JR",
        "accountName": "CandyMachine",
        "filter": {
            "type": "ACCOUNT_DATA_NUMERIC",
            "path": "data.creators.percentageShare",
            "range": {
                "eq": 100
            }
        },
        "pagination": {
            "offset": 0,
            "limit": 20
        },
        "sort": {
            "order": "asc"
        },
        "fields": [
            "slot",
            "lamports"
        ],
        "timeRange": {
            "before": "2023-07-17T22:53:09+0000",
            "after": "2023-07-11T22:53:09+0000"
        }
    }
}'

Last updated