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,
"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,
"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
}
}授权
API key for authentication
查询参数
Blockchain network to query. SOL returns Meteora (DLMM / DAMM v2) pools; ROBINHOOD returns Uniswap V3 and V4 pools on Robinhood Chain (EVM, chain id 4663). Unrecognised values match no pools.
SOL, ROBINHOOD 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 24h volume; 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 Sort order direction. default ignores sortBy and sorts by market cap, highest first.
asc, desc, default Page number for pagination
x >= 1Number of items per page
1 <= x <= 100Time interval for fee/TVL ratio calculation
5m, 1h, 6h, 24h Filter by quote token symbol (case-insensitive), not address. On SOL: SOL or USDC. On ROBINHOOD: WETH (alias ETH) or USDG. An unknown symbol, ALL, or a combined value such as SOL&USDC applies no quote filter.
Minimum market cap filter
Maximum market cap filter
Minimum bin step filter. SOL only; ignored on ROBINHOOD.
Maximum bin step filter. SOL only; ignored on ROBINHOOD.
Minimum organic score filter. SOL only; ignored on ROBINHOOD.
Maximum organic score filter. SOL only; ignored on ROBINHOOD.
Minimum base fee filter
Maximum base fee filter
Minimum pool age in hours
Maximum pool age in hours
Minimum liquidity (TVL, USD) filter. When omitted on ROBINHOOD, a $5,000 floor applies unless show_small_pools=true or search is set. No default floor on SOL.
Maximum liquidity filter
Minimum 24h fees filter
Maximum 24h fees filter
Minimum 24h volume filter
Maximum 24h volume filter
Minimum 1h volume filter
Maximum 1h volume filter
Comma-separated protocols to filter by. Omit it (or send all) to keep every protocol on the chain. On SOL, meteora for DLMM and meteora_damm_v2 for DAMM V2. On ROBINHOOD, uniswap_v3 or uniswap_v4.
Older name for platform, still accepted. platform wins when both are sent.
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 ROBINHOOD only: set true to drop the default $5,000 liquidity floor. No effect on SOL, which has no default floor.
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.
此页面对您有帮助吗?