curl --request GET \
--url https://api.lpagent.io/open-api/v1/pools/discover \
--header 'x-api-key: <api-key>'import requests
url = "https://api.lpagent.io/open-api/v1/pools/discover"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.lpagent.io/open-api/v1/pools/discover', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lpagent.io/open-api/v1/pools/discover",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lpagent.io/open-api/v1/pools/discover"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lpagent.io/open-api/v1/pools/discover")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lpagent.io/open-api/v1/pools/discover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"pool": "5rCfABCxyz123",
"tvl": 125000.5,
"fee": 0.003,
"protocol": "meteora",
"chain": "SOL",
"token0": "So11111111111111111111111111111111111111112",
"token1": "<string>",
"vol_5m": 123,
"vol_1h": 123,
"vol_6h": 123,
"vol_24h": 800000,
"fee_5m": "3.27",
"fee_1h": "41.9",
"fee_6h": "262.15",
"base_price": 150.25,
"quote_price": 1,
"mcap": 50000000,
"usd_price": 123,
"fdv": 123,
"organic_score": 75,
"top_holder": 123,
"mint_freeze": true,
"price_5m_change": 123,
"price_1h_change": 123,
"price_6h_change": 123,
"price_24h_change": 123,
"bin_step": 10,
"liquidity_token0": 123,
"liquidity_token1": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"first_pool_created_at": "2023-11-07T05:31:56Z",
"token0_symbol": "SOL",
"token0_name": "Solana",
"token0_decimals": 9,
"token1_symbol": "USDC",
"token1_name": "<string>",
"token1_decimals": 123,
"token0_logo": "<string>",
"token1_logo": "<string>",
"token0_categories": [
"stock"
],
"token1_categories": [
"stock"
],
"token0_impersonates": [
"stock"
],
"token1_impersonates": [
"stock"
],
"token0_stats": {
"volume": {
"stats1h": {
"volume": 123,
"volume_change": 123
},
"stats6h": {
"volume": 123,
"volume_change": 123
},
"stats24h": {
"volume": 123,
"volume_change": 123
}
},
"holders": 123
},
"token1_stats": {}
}
],
"pagination": {
"currentPage": 123,
"pageSize": 123,
"totalCount": 123,
"totalPages": 123,
"hasNextPage": true,
"hasPreviousPage": true
}
}Discover pools
Retrieve a list of pools with filtering, sorting, and pagination. Works on Solana (Meteora DLMM, DAMM V2) and Robinhood Chain (Uniswap V3, Uniswap V4); pick the network with chain.
Some filters behave differently per chain:
min_bin_step,max_bin_step,min_organic_scoreandmax_organic_scoreapply onSOLonly and are ignored onROBINHOOD.- On
ROBINHOOD, browsing hides pools under $5,000 liquidity unless you passmin_liquidity,show_small_pools=trueorsearch. - On
ROBINHOOD, browsing also hides pools that report at least 50,000TVLwithunder500 of 24h volume (TVL painted by a single-sided deposit). Asearchrequest skips this filter.
curl --request GET \
--url https://api.lpagent.io/open-api/v1/pools/discover \
--header 'x-api-key: <api-key>'import requests
url = "https://api.lpagent.io/open-api/v1/pools/discover"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.lpagent.io/open-api/v1/pools/discover', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lpagent.io/open-api/v1/pools/discover",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lpagent.io/open-api/v1/pools/discover"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lpagent.io/open-api/v1/pools/discover")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lpagent.io/open-api/v1/pools/discover")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": "success",
"data": [
{
"pool": "5rCfABCxyz123",
"tvl": 125000.5,
"fee": 0.003,
"protocol": "meteora",
"chain": "SOL",
"token0": "So11111111111111111111111111111111111111112",
"token1": "<string>",
"vol_5m": 123,
"vol_1h": 123,
"vol_6h": 123,
"vol_24h": 800000,
"fee_5m": "3.27",
"fee_1h": "41.9",
"fee_6h": "262.15",
"base_price": 150.25,
"quote_price": 1,
"mcap": 50000000,
"usd_price": 123,
"fdv": 123,
"organic_score": 75,
"top_holder": 123,
"mint_freeze": true,
"price_5m_change": 123,
"price_1h_change": 123,
"price_6h_change": 123,
"price_24h_change": 123,
"bin_step": 10,
"liquidity_token0": 123,
"liquidity_token1": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"first_pool_created_at": "2023-11-07T05:31:56Z",
"token0_symbol": "SOL",
"token0_name": "Solana",
"token0_decimals": 9,
"token1_symbol": "USDC",
"token1_name": "<string>",
"token1_decimals": 123,
"token0_logo": "<string>",
"token1_logo": "<string>",
"token0_categories": [
"stock"
],
"token1_categories": [
"stock"
],
"token0_impersonates": [
"stock"
],
"token1_impersonates": [
"stock"
],
"token0_stats": {
"volume": {
"stats1h": {
"volume": 123,
"volume_change": 123
},
"stats6h": {
"volume": 123,
"volume_change": 123
},
"stats24h": {
"volume": 123,
"volume_change": 123
}
},
"holders": 123
},
"token1_stats": {}
}
],
"pagination": {
"currentPage": 123,
"pageSize": 123,
"totalCount": 123,
"totalPages": 123,
"hasNextPage": true,
"hasPreviousPage": true
}
}查询参数
Field to sort pools by. Any other value falls back to mcap. On SOL, fee_24h and fee_tvl_ratio are derived from the pool fee rate and volume: fee_24h from 24h volume, fee_tvl_ratio from the volume of the feeTVLInterval window. On ROBINHOOD they use the stored 24h fee figures, which are empty for dynamic-fee pools and sort last.
mcap, created_at, vol_24h, tvl, fee_tvl_ratio, fee_24h Keep only pools where at least one token carries this label. stock is Robinhood's tokenized stocks and ETFs, matched by contract address against the issuer's registry, never by ticker. Only meaningful on ROBINHOOD: no Solana token is labelled, so on SOL the result is empty. Unknown values are ignored.
stock Exact match on the pool ID or either token address (not a name search). On ROBINHOOD, 0x addresses and 32-byte Uniswap V4 pool IDs are matched case-insensitively, so checksummed addresses work. Solana base58 addresses are case-sensitive. Setting search also skips the ROBINHOOD liquidity floor and painted-TVL filter.
此页面对您有帮助吗?