Skip to main content
GET
/
2
/
fast-search
Universal Search
curl --request GET \
  --url https://demo-api.mobula.io/api/2/fast-search
{
  "data": [
    {
      "address": "<string>",
      "chainId": "<unknown>",
      "symbol": "<string>",
      "name": "<string>",
      "priceTokenString": "<string>",
      "approximateReserveTokenRaw": "<string>",
      "logo": "<string>",
      "bondedAt": "<string>",
      "createdAt": "<string>",
      "latestTradeDate": "<string>",
      "description": "<string>",
      "socials": {
        "twitter": "<string>",
        "website": "<string>",
        "telegram": "<string>",
        "others": {},
        "uri": "<string>"
      },
      "security": {
        "buyTax": "<string>",
        "sellTax": "<string>",
        "transferPausable": true,
        "top10Holders": "<string>",
        "isBlacklisted": true,
        "noMintAuthority": true,
        "balanceMutable": true,
        "lowLiquidity": "<string>"
      },
      "decimals": 0,
      "id": null,
      "priceUSD": 0,
      "priceToken": 0,
      "approximateReserveUSD": 0,
      "approximateReserveToken": 0,
      "totalSupply": 0,
      "circulatingSupply": 0,
      "marketCapUSD": 0,
      "marketCapDilutedUSD": 0,
      "exchange": {
        "name": "<string>",
        "logo": "<string>"
      },
      "factory": "<string>",
      "source": "<string>",
      "sourceFactory": "<string>",
      "liquidityUSD": 123,
      "liquidityMaxUSD": 123,
      "bonded": true,
      "bondingPercentage": 123,
      "bondingCurveAddress": "<string>",
      "preBondingFactory": "<string>",
      "poolAddress": "<string>",
      "blockchain": "<string>",
      "type": "<string>",
      "deployer": "<string>",
      "athUSD": 123,
      "atlUSD": 123,
      "athDate": "<string>",
      "atlDate": "<string>",
      "priceChange1minPercentage": 0,
      "priceChange5minPercentage": 0,
      "priceChange1hPercentage": 0,
      "priceChange4hPercentage": 0,
      "priceChange6hPercentage": 0,
      "priceChange12hPercentage": 0,
      "priceChange24hPercentage": 0,
      "volume1minUSD": 0,
      "volume5minUSD": 0,
      "volume15minUSD": 0,
      "volume1hUSD": 0,
      "volume4hUSD": 0,
      "volume6hUSD": 0,
      "volume12hUSD": 0,
      "volume24hUSD": 0,
      "volumeBuy1minUSD": 0,
      "volumeBuy5minUSD": 0,
      "volumeBuy15minUSD": 0,
      "volumeBuy1hUSD": 0,
      "volumeBuy4hUSD": 0,
      "volumeBuy6hUSD": 0,
      "volumeBuy12hUSD": 0,
      "volumeBuy24hUSD": 0,
      "volumeSell1minUSD": 0,
      "volumeSell5minUSD": 0,
      "volumeSell15minUSD": 0,
      "volumeSell1hUSD": 0,
      "volumeSell4hUSD": 0,
      "volumeSell6hUSD": 0,
      "volumeSell12hUSD": 0,
      "volumeSell24hUSD": 0,
      "trades1min": 0,
      "trades5min": 0,
      "trades15min": 0,
      "trades1h": 0,
      "trades4h": 0,
      "trades6h": 0,
      "trades12h": 0,
      "trades24h": 0,
      "buys1min": 0,
      "buys5min": 0,
      "buys15min": 0,
      "buys1h": 0,
      "buys4h": 0,
      "buys6h": 0,
      "buys12h": 0,
      "buys24h": 0,
      "sells1min": 0,
      "sells5min": 0,
      "sells15min": 0,
      "sells1h": 0,
      "sells4h": 0,
      "sells6h": 0,
      "sells12h": 0,
      "sells24h": 0,
      "buyers1min": 0,
      "buyers5min": 0,
      "buyers15min": 0,
      "buyers1h": 0,
      "buyers4h": 0,
      "buyers6h": 0,
      "buyers12h": 0,
      "buyers24h": 0,
      "sellers1min": 0,
      "sellers5min": 0,
      "sellers15min": 0,
      "sellers1h": 0,
      "sellers4h": 0,
      "sellers6h": 0,
      "sellers12h": 0,
      "sellers24h": 0,
      "traders1min": 0,
      "traders5min": 0,
      "traders15min": 0,
      "traders1h": 0,
      "traders4h": 0,
      "traders6h": 0,
      "traders12h": 0,
      "traders24h": 0,
      "feesPaid1minUSD": 0,
      "feesPaid5minUSD": 0,
      "feesPaid15minUSD": 0,
      "feesPaid1hUSD": 0,
      "feesPaid4hUSD": 0,
      "feesPaid6hUSD": 0,
      "feesPaid12hUSD": 0,
      "feesPaid24hUSD": 0,
      "totalFeesPaidUSD": 0,
      "organicTrades1min": 0,
      "organicTrades5min": 0,
      "organicTrades15min": 0,
      "organicTrades1h": 0,
      "organicTrades4h": 0,
      "organicTrades6h": 0,
      "organicTrades12h": 0,
      "organicTrades24h": 0,
      "organicTraders1min": 0,
      "organicTraders5min": 0,
      "organicTraders15min": 0,
      "organicTraders1h": 0,
      "organicTraders4h": 0,
      "organicTraders6h": 0,
      "organicTraders12h": 0,
      "organicTraders24h": 0,
      "organicVolume1minUSD": 0,
      "organicVolume5minUSD": 0,
      "organicVolume15minUSD": 0,
      "organicVolume1hUSD": 0,
      "organicVolume4hUSD": 0,
      "organicVolume6hUSD": 0,
      "organicVolume12hUSD": 0,
      "organicVolume24hUSD": 0,
      "organicVolumeBuy1minUSD": 0,
      "organicVolumeBuy5minUSD": 0,
      "organicVolumeBuy15minUSD": 0,
      "organicVolumeBuy1hUSD": 0,
      "organicVolumeBuy4hUSD": 0,
      "organicVolumeBuy6hUSD": 0,
      "organicVolumeBuy12hUSD": 0,
      "organicVolumeBuy24hUSD": 0,
      "organicVolumeSell1minUSD": 0,
      "organicVolumeSell5minUSD": 0,
      "organicVolumeSell15minUSD": 0,
      "organicVolumeSell1hUSD": 0,
      "organicVolumeSell4hUSD": 0,
      "organicVolumeSell6hUSD": 0,
      "organicVolumeSell12hUSD": 0,
      "organicVolumeSell24hUSD": 0,
      "organicBuys1min": 0,
      "organicBuys5min": 0,
      "organicBuys15min": 0,
      "organicBuys1h": 0,
      "organicBuys4h": 0,
      "organicBuys6h": 0,
      "organicBuys12h": 0,
      "organicBuys24h": 0,
      "organicSells1min": 0,
      "organicSells5min": 0,
      "organicSells15min": 0,
      "organicSells1h": 0,
      "organicSells4h": 0,
      "organicSells6h": 0,
      "organicSells12h": 0,
      "organicSells24h": 0,
      "organicBuyers1min": 0,
      "organicBuyers5min": 0,
      "organicBuyers15min": 0,
      "organicBuyers1h": 0,
      "organicBuyers4h": 0,
      "organicBuyers6h": 0,
      "organicBuyers12h": 0,
      "organicBuyers24h": 0,
      "organicSellers1min": 0,
      "organicSellers5min": 0,
      "organicSellers15min": 0,
      "organicSellers1h": 0,
      "organicSellers4h": 0,
      "organicSellers6h": 0,
      "organicSellers12h": 0,
      "organicSellers24h": 0,
      "holdersCount": 123,
      "twitterReusesCount": 0,
      "twitterRenameCount": 0,
      "twitterRenameHistory": [],
      "deployerMigrationsCount": 0,
      "dexscreenerListed": false,
      "dexscreenerHeader": null,
      "dexscreenerAdPaid": false,
      "top10HoldingsPercentage": 123,
      "top50HoldingsPercentage": 123,
      "top100HoldingsPercentage": 123,
      "top200HoldingsPercentage": 123,
      "devHoldingsPercentage": 123,
      "insidersHoldingsPercentage": 123,
      "bundlersHoldingsPercentage": 123,
      "snipersHoldingsPercentage": 123,
      "proTradersHoldingsPercentage": 123,
      "freshTradersHoldingsPercentage": 123,
      "smartTradersHoldingsPercentage": 123,
      "insidersCount": 123,
      "bundlersCount": 123,
      "snipersCount": 123,
      "freshTradersCount": 123,
      "proTradersCount": 123,
      "smartTradersCount": 123,
      "freshTradersBuys": 123,
      "proTradersBuys": 123,
      "smartTradersBuys": 123
    }
  ]
}

Filters

Universal Search accepts an optional filters query parameter. The parameter is parsed as JSON, so you can either send a JSON object or a JSON string (for example, filters={"blockchains":"1,solana"} or its URL-encoded form). Keys and values are case-insensitive and surrounding whitespace is ignored.

blockchains

  • Accepts either a comma-separated string or a JSON array.
  • Supports both numeric chain identifiers (for example 1, 8453, 42161) and string identifiers (for example solana, evm:1, tron:sol).
  • You can freely mix numeric and string identifiers in the same request; the backend normalizes them before querying.
  • Passing multiple IDs limits the search results to tokens that exist on any of the provided chains.
Example request
curl 'https://pulse-v2-api.mobula.io/api/2/fast-search?input=eth&filters=%7B%22blockchains%22:%228453,1,42161,10,solana%22%7D&limit=5'
This query searches for eth while restricting the results to Base (8453), Ethereum (1), Arbitrum (42161), Optimism (10), and Solana.

Search Modes

Prefix Search (default)

By default, the search performs a prefix match on token names and symbols. For example, searching W will return tokens like “WETH”, “WBTC”, “Wrapped SOL”, etc.

Exact Match (advanced)

Wrap your search term in double quotes to perform an exact match on the symbol. This is useful when you want to find a specific token without getting results that merely start with your query. Example: "W" will only return tokens with the exact symbol “W” (like Wormhole), not “WETH” or “WBTC”.
Use exact match when searching for short symbols (1-3 characters) to avoid noisy results.
You can sort by an array of metrics using sortBy:
  • volume_24h
  • market_cap
  • created_at
  • volume_1h
  • fees_paid_5min
  • fees_paid_1h
  • fees_paid_24h
  • volume_5min
  • holders_count
  • organic_volume_1h
  • total_fees_paid_usd
  • search_score
search_score is a composite ranking metric calculated as fees_paid_24h × quote_token_reserve_usd (using the largest pool by liquidity). This metric prioritizes tokens with both high trading fees and deep liquidity, making it ideal for discovering actively traded tokens with strong market depth.
You can control the number of results using the limit parameter (1 to 20, default: 5).
Performance scales with the number of results requested. Expect ~50ms for 5 results and up to ~250ms for 20 results.
Alpha Feature: When searching by address, the search also returns all tokens deployed by that address (deployer match).

Cookbook: multi-chain filtering

  1. Identify the chain identifiers you want to include. You can use numeric IDs (1, 56, 8453) or string-based IDs (solana, evm:1, evm:8453). Both styles are supported in the same request.
  2. Build the JSON payload for filters. Set the blockchains property to a comma-separated string of the identifiers (e.g. "blockchains":"8453,1,solana"). You may also send an explicit JSON array such as "blockchains":["8453","1","solana"].
  3. URL-encode the JSON when embedding it inside a query string. Most HTTP libraries will do this automatically if you pass an object.
  4. Call /api/2/fast-search?input=<term>&filters=<encoded-json>. The API returns only the top matches that exist on any of the requested chains, making it straightforward to focus on supported networks without enabling all chains globally.
Tip: pair this recipe with the limit and sortBy parameters to surface the most liquid matches on the networks that matter to you.

Query Parameters

input
string
required
type
enum<string>
Available options:
tokens,
assets,
pairs
filters
string
mode
enum<string>
default:trendings
Available options:
trendings,
og
sortBy
enum<string>
default:volume_24h
Available options:
volume_24h,
market_cap,
created_at,
volume_1h,
fees_paid_5min,
fees_paid_1h,
volume_5min,
holders_count,
organic_volume_1h
excludeBonded
boolean | null

Response

200 - application/json

Universal Search response

data
object[]
required